【実施例1】
【0010】
[全体構成]
図1は、実施例1にかかる携帯端末10の全体構成を示す図である。
図1には、携帯端末10の斜視図を示す。携帯端末10は、スマートフォン、タブレット端末、PDA(Personal Data Assistant)、小型のコンピュータなどの表示装置の一例である。
【0011】
図1に示すように、携帯端末10は、タッチパネルとセンサ2を有する。タッチパネルは、画面表示やユーザ操作を受け付ける表示装置の一例である。このセンサ2は、携帯端末10の側面に、ユーザが操作しやすい位置に設置されるセンサデバイスである。例えば、ユーザが右手で携帯端末10を操作するときは、親指が携帯端末10と接する位置または当該位置の周辺に設置される。また、ユーザが左手で携帯端末10を操作するときは、人差し指が携帯端末10と接する位置または当該位置の周辺に設置される。なお、センサ2の設置位置は、側面に限られず、他の場所であってもよい。
【0012】
また、センサ2は、指が接触したか否かを検出するセンサに加え、指紋を読み取る指紋センサとして機能することもできる。例えば、携帯端末10は、センサ2を用いて指紋認証を実行するとともに、センサ2を用いて画面の表示制御を実行する。また、センサ2は、指の移動(距離、方向)を検出することができる。
【0013】
具体的には、携帯端末10は、センサ2に対するタッチ入力の移動方向と移動距離を検出する。そして、携帯端末10は、タッチ入力が検出された場合に、事前に設定した方向と一定速度で、画面表示をスクロールさせる。その後、携帯端末10は、一定速度で画面表示をスクロール中に、センサ2へのタッチ入力が検出されなくなった場合、スクロールを停止する。
【0014】
例えば、携帯端末10は、センサ2に対する上方向への指によるタッチ操作やスライド操作を検出した場合に、指がセンサ2と接触している間は、一定速度のスクロール速度で、画面表示を上方向にスクロールする。そして、携帯端末10は、一定速度でスクロール中に、指がセンサ2から離れた場合、スクロールを停止して、画面表示を行う。このように、携帯端末10は、センサ2を用いて、指の接触および未接触のリアルタイム検出、および、画面表示のスクロール制御を実行できるので、画面スクロールを停止させる即応性を向上させることができる。
【0015】
[ハードウェア]
図2は、実施例1にかかる携帯端末10のハードウェア構成例を示す図である。
図2に示すように、携帯端末10は、無線装置1、センサ2、表示装置3、タッチセンサ4、記憶装置5、プロセッサ6を有する。
【0016】
無線装置1は、アンテナ1aを用いて、他のスマートフォンや基地局などとの通信を実行する。センサ2は、指が接触したか否かを検出する検出センサである。なお、センサ2は、指紋を読み取る指紋センサとして機能することもできる。
【0017】
表示装置3は、ディスプレイなどであり、アプリケーションの画面やWeb画面など様々な情報を表示し、タッチセンサ4は、ディスプレイへのタッチ操作を検出する。表示装置3とタッチセンサ4は、協働してタッチパネルを実現する。
【0018】
記憶装置5は、各種データやプログラムを記憶するハードディスクやメモリなどの記憶装置の一例である。記憶装置5の一例としては、SDRAM(Synchronous Dynamic Random Access Memory)等のRAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等が挙げられる。
【0019】
プロセッサ6は、携帯端末10全体を司る処理部であり、例えばCPU(Central Processing Unit)などである。プロセッサ6は、後述する各処理を実行するプログラムをハードディスクなどから読み出してメモリなどに展開し、後述する処理部と同様の処理を実行する各種プロセスを実行する。プロセッサ6の一例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)、PLD(Programmable Logic Device)等が挙げられる。
【0020】
[機能構成]
図3は、実施例1にかかる携帯端末10の機能構成を示す機能ブロック図である。
図3に示すように、携帯端末10は、センサ検出部11、フィルタ部12、接触判定部13、スクロール実行部14を有する。
【0021】
センサ検出部11は、センサ2への接触を検出する処理部である。例えば、センサ検出部11は、センサ2への指による接触によって変化する信号を検出して、検出信号としてフィルタ部12に出力する。また、センサ検出部11は、指が接触したセンサ2の位置などを検出することもできる。なお、静電容量の変化を検出する静電センサや圧力の変化を検出する感圧センサに限らず、他の様々な手法のセンサを採用することができる。
【0022】
フィルタ部12は、センサ検出部11から検出した検出信号のノイズを除去する処理部である。例えば、フィルタ部12は、センサ検出部11が検出した検出信号に対して、ノイズ除去を行うフィルタや平滑化する平滑化フィルタなどを適用してノイズを除去する。そして、フィルタ部12は、ノイズ除去後の検出信号を接触判定部13に出力する。
【0023】
接触判定部13は、ユーザの指がセンサ2に接触したか否かを判定する処理部である。例えば、接触判定部13は、フィルタ部12を介して受信した検出信号において、一定値以上の検出信号が所定時間連続して検出されたときに、ユーザがセンサ2へ接触したと判定する。そして、接触判定部13は、ユーザの操作開始をスクロール実行部14に出力する。
【0024】
また、接触判定部13は、フィルタ部12を介して受信した検出信号において、一定値以上の検出信号が検出されなくなったときに、ユーザによるセンサ2への接触が終了したと判定する。そして、接触判定部13は、ユーザの操作終了をスクロール実行部14に出力する。
【0025】
さらに、接触判定部13は、センサ2への指の接触を検出した後、指の移動距離および移動方向を測定することもできる。例えば、接触判定部13は、指の接触が検出されたときの指の位置情報を基点に設定する。その後、接触判定部13は、指の接触が検出されている間、フィルタ部12およびセンサ検出部11を介して、指の接触位置および移動方向を取得し、接触位置と基点との距離を算出する。なお、前回の位置から変化がない場合、移動距離は0となる。そして、接触判定部13は、算出した距離(移動距離)と移動方向とをスクロール実行部14に出力する。
【0026】
なお、センサ2に対する上および下の方向は、あらかじめ設定しておくことができる。また、携帯端末10で実際に表示されている表示画面にあわせて、上方向と下方向を動的に設定することもできる。
【0027】
スクロール実行部14は、指の移動距離の積算値が一定値を超えた場合に、指の移動方向に応じた画面スクロールを実行する処理部である。スクロール実行部14は、一定速度での画面スクロールと、可変速度での画面スクロールを実行できる。
【0028】
(一定速度による制御)
例えば、スクロール実行部14は、接触判定部13からユーザ操作の開始が指示されると、接触判定部13から入力される移動距離と移動方向を取得する。そして、スクロール実行部14は、移動距離が入力されるたびに、移動距離を積算して積算値を算出する。その後、スクロール実行部14は、移動距離の積算値が閾値を超えた場合、ユーザが操作した移動方向へ、予め定めた一定速度で、画面表示をスクロールする。また、一定速度で画面表示をスクロール中に、接触判定部13から操作終了が指示された場合、スクロールを停止する。
【0029】
図4は、指の移動とスクロール制御の関係を説明する図である。
図4に示すように、スクロール実行部14は、コンテンツAが表示されている状態(
図4の(a))から、指50によるセンサ2に対する上方向へのタッチ操作を検出すると、センサ2上での指50の移動距離を積算した積算値が閾値を超えるまで、スクロールせずに画面表示を維持する(
図4の(b))。
【0030】
その後、スクロール実行部14は、指50の移動距離の積算値が閾値を超えると、画面を上方向へ一定速度でスクロールする(
図4の(c))。スクロール実行部14は、指50がセンサ2と接触している間、画面のスクロールを維持する。
【0031】
そして、スクロール実行部14は、上方向に一定速度でスクロール中に、指50がセンサ2から離れたことを検出すると、スクロールを停止し、その時に表示されていたコンテンツGを表示する(
図4の(d))。
【0032】
その後、スクロール実行部14は、コンテンツGが表示されている状態(
図4の(d))から、指50によるセンサ2に対する下方向へのタッチ操作を検出すると、センサ2上での指50の移動距離を積算した積算値が閾値を超えるまで、スクロールせずに画面表示を維持する(
図4の(e))。
【0033】
その後、スクロール実行部14は、指50の移動距離の積算値が閾値を超えると、画面を下方向へ一定速度でスクロールする(
図4の(f))。スクロール実行部14は、指50がセンサ2と接触している間、画面のスクロールを維持する。
【0034】
そして、スクロール実行部14は、下方向に一定速度でスクロール中に、指50がセンサ2から離れたことを検出すると、スクロールを停止し、その時に表示されていたコンテンツYを表示する(
図4の(g))。
【0035】
このように、スクロール実行部14は、指50の移動距離によって、ユーザが画面スクロールを実行する意思があるかを確認し、指50の接触有無によって、画面スクロールの実行および停止を制御する。
【0036】
(可変速度による制御)
例えば、スクロール実行部14は、移動距離の積算値によって、スクロール速度を段階的に早くすることもできる。
図5は、指50の移動距離でスクロール速度を変更する例を説明する図である。
【0037】
図5の(a)に示すように、スクロール実行部14は、指50がセンサ2に触れた部分を基点として、基点からの距離に応じてスクロール速度を変更する。具体的には、
図5の(b)に示すように、スクロール実行部14は、基点からの距離が100未満までは、速度1でスクロールを実行し、基点からの距離が100以上から200未満までは、速度1よりも速い速度2でスクロールを実行し、基点からの距離が200以上は、速度2よりも速い速度3でスクロールを実行する。なお、各閾値は、例えばミリメートルのように移動距離の単位を用いて設定することもでき、座標などを用いた移動距離を設定することもできる。
【0038】
ここで、
図6を用いてより詳細に説明する。
図6は、指50の移動距離とスクロール速度の関係を説明する図である。
図6に示すように、スクロール実行部14は、接触判定部13から指50の移動距離が通知されるたびに、指50の移動距離を積算して積算値を算出する。そして、スクロール実行部14は、移動距離の積算値が閾値を超えると、速度1で画面スクロールを実行する。
【0039】
その後も、スクロール実行部14は、接触判定部13から指50の移動距離が通知されるたびに、積算値を算出する。そして、スクロール実行部14は、移動距離の積算値が閾値100を超えると、速度1から速度2に変更し、速度2で画面スクロールを実行する。
【0040】
引き続き、スクロール実行部14は、接触判定部13から指50の移動距離が通知されるたびに、積算値を算出する。そして、スクロール実行部14は、移動距離の積算値が閾値200を超えると、速度2から速度3に変更し、速度3で画面スクロールを実行する。
【0041】
一方で、スクロール実行部14は、指50の移動方向が逆方向になった場合、マイナスの移動距離として積算する。すなわち、スクロール実行部14は、指50の移動距離250のときから、逆方向への移動距離として−60が検出されると、指50に移動距離の積算値を190と算出する。そして、スクロール実行部14は、スクロール速度を速度3から速度2に減速する。このように、スクロール実行部14は、上方向へ指50が移動する時には、スクロール速度を段階的に速くし、上方向から下方向へ指50が逆方向へ移動する時には、スクロール速度を段階的に遅くする。
【0042】
なお、移動距離の積算値以外の指標を用いて、スクロール速度の段階的制御を実行することもできる。例えば、指50の位置情報そのものを用いることもできる。例えば、スクロール実行部14は、接触判定部13から基点を取得した後、移動距離の代わりに、指50の現在位置を取得する。そして、スクロール実行部14は、基点から指の現在位置までの距離と閾値とを比較して、スクロール速度を段階的に制御することもできる。
【0043】
[処理に流れ]
図7は、スクロール制御の処理の流れを示すフローチャートである。
図7では、一例として、スクロール速度を段階的に制御する例を説明する。
【0044】
図7に示すように、センサ検出部11によって指50の接触によって検出信号が検出されると(S101:Yes)、フィルタ部12は、検出信号のノイズを除去する(S102)。
【0045】
続いて、スクロール実行部14は、移動距離の積算値SUMに0を設定し、現在のスクロールの速度VELに0を設定し、初期化を実行する(S103)。スクロール実行部14は、接触判定部13を介してセンサ2の入力値を確認して指50の移動距離や移動方向等を取得して(S104)、指50の移動を検出すると(S105:Yes)、移動距離の積算値を算出する(S106)。
【0046】
そして、スクロール実行部14は、積算値SUMが閾値を越えた場合(S107:Yes)、現在の速度としてVEL=VEL+変更速度を算出し(S108)、変更後の速度VELで、取得された移動方向にスクロールを実行する(S109)。
【0047】
その後、スクロール実行部14は、接触判定部13を介して指50がセンサ2から離れたことを検出すると(S110:Yes)、画面のスクロールを停止する(S111)。
【0048】
一方、スクロール実行部14は、指50がセンサ2への接触を維持している場合(S110:No)、スクロールの速度を維持しつつ、S104以降を繰り返す。また、スクロール実行部14は、積算値SUMが閾値を越えない場合(S107:No)、スクロールの速度を維持しつつ、S104以降を繰り返す。
【0049】
また、S105において、スクロール実行部14は、接触判定部13を介して指50の移動距離や移動方向等を取得したにも関わらず、指50が移動していない場合(S105:No)、S109以降を繰り返す。
【0050】
[効果]
上述したように、携帯端末10は、センサ2へのタッチ操作を検出し、さらに移動方向と移動距離を検知した場合に、事前に設定した方向へ、事前に設定した速度でスクロールすることができる。このとき、携帯端末10は、指50の移動距離に応じて速度を段階的に変えることができる。また、ユーザは、一定速度でスクロール中に、急に停止したい画面を見つけた時は、指50を離すことで、スクロールを止めることができる。
【0051】
したがって、携帯端末10は、実装面積の小さなセンサ2を利用して、小さな指50の動きに対して段階的なスクロール速度の変更とオートスクロール動作を実現し、更にユーザが見たい位置までスクロールしたときにスクロールを停止させることができる。その結果、携帯端末10は、従来のジョグダイヤルより実装面積が小さいセンサ2を用い、必要最小限の動作でユーザが期待するスクロール動作の実現を行うことができる。また、ユーザは、アプリケーションによらず、一定速度で画面を閲覧することができるとともに、すばやく見たい位置までスクロールすることができ、さらには、止めたい時には即座に止めることができる。
【実施例2】
【0052】
ところで、実施例1では、センサ2を操作している間の画面スクロールについて説明したが、タッチパネルを有する端末の場合には、タッチパネル操作中にセンサ2を偶然触れることもある。つまり、偶然、ユーザがセンサ2を触れてしまった場合でも画面のスクロールが発生する可能性がある。また、ブラウザ等でスクロール中に他の画面に切り替わったときに、切り替わった後の画面でもスクロールが継続してしまう可能性もある。
【0053】
そこで、実施例2では、これらの意図しない操作の抑制手法について説明する。具体的には、携帯端末10は、スクロールイベントを送信するかどうかの判定に利用する指50の移動距離の積算値を、タッチイベントが割り込んだときに一旦ゼロリセットする。また、携帯端末10は、画面の切り替わりを検知した場合にスクロールイベントの送信を停止する。
【0054】
[機能構成]
図8は、実施例2にかかる携帯端末10の機能構成を示す機能ブロック図である。
図8に示すように、携帯端末10は、実施例1と同様、センサ検出部11、フィルタ部12、接触判定部13、スクロール実行部14を有する。そして、実施例1と異なる点は、タッチパネル検出部15を有する点である。
【0055】
タッチパネル検出部15は、タッチパネルへのユーザ操作を検出する処理部である。例えば、タッチパネル検出部15は、タッチパネルへのタッチ操作、表示装置3に表示される画面の切替操作やフリック操作など検出すると、タッチパネルへの発生した操作内容をスクロール実行部14に出力する。
【0056】
そして、スクロール実行部14は、指50の移動検出後に、タッチパネル検出部15からユーザ操作発生が通知されると、移動距離の積算値をリセットする。また、スクロール実行部14は、指50がセンサ2に接触している状態で、タッチパネル検出部15によってタッチパネルへの操作が検出されると、スクロールを停止する。
【0057】
[処理の流れ]
図9は、実施例2にかかるスクロール制御の処理の流れを示すフローチャートである。
図9では、一例として、スクロール速度を段階的に制御する例を説明する。実施例1で説明した
図7と異なる点は、S207とS208とS214であり、その他のステップは
図7と同様である。ここでは、S207とS208とS214に関連する処理について説明する。
【0058】
実施例2では、スクロール実行部14は、指50の移動を検出して(S205:Yes)、移動距離の積算値を算出した後(S206)、タッチパネル検出部15によってタッチパネル4への操作が検出された場合(S207:Yes)、積算値SUMに0を代入して積算値をリセットする(S208)。その後、スクロール実行部14は、実施例1と同様、積算値SUMが閾値を越えたか否かの判定を実行する(S209)。
【0059】
また、スクロール実行部14は、指50の移動を検出して(S205:Yes)、移動距離の積算値を算出した後(S206)、タッチパネル検出部15によってタッチパネルへの操作が検出されない場合(S207:No)、実施例1と同様、積算値SUMが閾値を越えたか否かの判定を実行する(S209)。
【0060】
そして、スクロール実行部14は、接触判定部13が指50のセンサ2への接触を検知している状態で(S212:No)、タッチパネル検出部15によって画面の切替が検出されたか否かを判定する(S214)。
【0061】
ここで、スクロール実行部14は、タッチパネル検出部15によって画面の切替が検出された場合(S214:Yes)、画面のスクロールを停止する(S213)。一方で、スクロール実行部14は、タッチパネル検出部15によって画面の切替が検出されていない場合(S214:No)、スクロールの速度を維持しつつ、S204以降を繰り返す。
【0062】
[効果]
上述したように、携帯端末10は、指50の腹などでセンサ2を触れた状態でユーザがタッチパネルを操作した場合、スクロールの発生を抑制することができる。携帯端末10は、偶然、ユーザがセンサ2を触れてしまったことによる、画面のスクロールの誤動作を抑制でき、ユーザの利便性を向上できる。
【実施例3】
【0063】
ところで、センサ2を用いて、上方向へスクロール中に、下方向へのスクロールの切り替わるとき、スクロールの操作性の劣化が起こる可能性がある。
図10は、スクロールの逆方向への制御を説明する図である。
【0064】
実施例3では、
図10の上図に示すように、ユーザが、センサ2上で上方向へ指50を移動させて、上方向へ画面をスクロール中に、下方向へ指50を移動させて画面を逆方向へスクロールさせる場合を考える。
【0065】
図10の(a)の場合、指50の移動距離の積算値が290でスクロールの速度を速度3の状態から、スクロールの速度を速度2に変更するために、指50を移動距離90以上移動させる必要がある。一方で、
図10の(b)の場合、指50の移動距離の積算値が240でスクロールの速度が速度3の状態から、スクロールの速度を速度2に変更するために、指50を移動距離40以上移動させる必要がある。
【0066】
このように、同じ速度3から速度2へ変更した場合でも、
図10の(a)の方が指50の移動距離が長く、時間もかかる。つまり、同じ速度変化を行う場合でも、指50の位置によっては、速度が変化するまでの時間が異なり、ユーザの利便性の低下に繋がる。
【0067】
そこで、実施例3では、指50の移動距離に応じて、スクロールの速度が変化させるときに、(1)一旦指50を止めた後に移動を再開する場合、(2)途中で折り返して逆方向に指50を移動させる場合の2パターンの場合に、指50の移動距離の基点を変更する。具体的には、(1)の場合は「一定時間止まっていた位置」、(2)の場合は「折り返した位置」に基点を移動させ、移動後の基点からの移動距離に応じて速度変化を行うことにより、ユーザ操作の違和感を低減させる。
【0068】
図11は、実施例3にかかるスクロールの基点制御を説明する図である。
図11では、一例として指50が一旦停止した(1)の状態で説明するが、(2)については停止位置の代わりに「逆方向への折り返し位置」を用いることで同様に適用できる。
【0069】
図11の(a)に示すように、スクロール実行部14は、移動距離90の速度3の状態で指50が一旦止まったことを検知する。すると、
図11の(b)に示すように、スクロール実行部14は、上限値X(例えば300)などが基点に設定されている状態であっても、指50が一旦停止した移動距離90を基点に設定する。すなわち、スクロール実行部14は、指50の停止位置に基点を移動させる。
【0070】
その後、スクロール実行部14は、新たな基点からの移動距離でスクロールの速度を変化させる。例えば、スクロール実行部14は、新たな基点からの移動距離が100未満は速度3、新たな基点からの移動距離が100以上200未満は速度2、新たな基点からの移動距離が200以上300未満は速度1に変更する。
【0071】
なお、基点を変更したときは、移動距離の積算方法も変更することもできる。例えば、スクロール実行部14は、
図11の(a)の場合は、上方向の移動距離をプラス、下方向の移動距離をマイナスとして処理するが、基点変更後(
図11の(b))は、上方向の移動距離をマイナス、下方向の移動距離をプラスとして処理することもできる。また、これに限らない。例えば、実施例1の手法では、基点変更後、基点からの移動距離がマイナスになるが、実施例3の手法を採用する場合は、基点(0)からの移動距離の絶対値を用いることもできる。
【0072】
ところで、速度3までスクロールの速度を上げたにも関わらず、速度を下げるシチュエーションとしては、早くスクロールを逆方向へ変更したいことが考えられる。例えば、Webページを閲覧中に、上方向へ高速にスクロールさせて所望のコンテンツを探している状態で、所望のコンテンツが通り過ぎたために、早く下方向にスクロールさせた上で、次は通り過ぎることなく、所望のコンテンツでスクロールを停止させたいことが考えられる。
【0073】
このような状態を考慮して、実施例3にかかる携帯端末10では、逆方向へのスクロールが発生した場合に、素早く速度低下を実現することができる。
図12は、実施例3にかかるスクロールの逆方向への方向転換時における閾値制御を説明する図である。
【0074】
図12の(a)に示すように、携帯端末10は、移動距離90の速度3の状態で指50の方向転換を検出すると、移動距離90を基点に設定するとともに、速度2への閾値を移動距離100から移動距離30に変更する。同様に、
図12の(b)に示すように、携帯端末10は、移動距離60の速度3の状態で指50の方向転換を検出すると、移動距離60を基点に設定するとともに、速度2への閾値を移動距離100から移動距離30に変更する。
【0075】
すなわち、携帯端末10は、方向転換時は、少ない移動距離ですぐにスクロールの速度を低下させることができる。この結果、上述したシチュエーションであっても、ユーザの利便性の低下を抑制することができる。なお、速度1へ変化させるための閾値は、初回設定値の100を用いることができる。