説明されるさまざまな実施形態を良好に理解するため、以下の図面と併せて、以下の「発明を実施するための形態」セクションを参照されたい。ここで、類似の参照番号は、図全体にわたって、対応する部分を指す。
いくつかの実施形態に係る、タッチ感知ディスプレイを備えたコンピューティングデバイスを示すブロック図である。
いくつかの実施形態に係る、イベント処理のための例示的な構成要素のブロック図である。
いくつかの実施形態に係る、タッチ感知ディスプレイを有するポータブル多機能デバイスの概略図である。
いくつかの実施形態に係る、ディスプレイとは別個のタッチ感知面を備えたコンピューティングデバイスを示すために使用される概略図である。
いくつかの実施形態に係る、アプリケーションのメニューのためのユーザインタフェースを示すために使用される、タッチスクリーンの概略図である。
いくつかの実施形態に係る、カレンダー項目を記憶するためのデータ構造を示すブロック図である。
いくつかの実施形態に係る、カレンダー項目を記憶するためのデータ構造を示すブロック図である。
いくつかの実施形態に係る、以前に訪れた住所を記憶するためのデータ構造を示すブロック図である。
いくつかの実施形態に係る、以前に訪れた住所を記憶するためのデータ構造を示すブロック図である。
いくつかの実施形態に係る、例示的な出発時刻リマインダ生成システムを示すブロック図である。
いくつかの実施形態に係る、インテリジェントな出発時刻リマインダを生成し、提供するための方法を示すフローチャートである。
いくつかの実施形態に係る、インテリジェントな出発時刻リマインダの生成及び提供を示すために使用されるタッチ感知ディスプレイの概略図である。
いくつかの実施形態に係る、インテリジェントな出発時刻リマインダの生成及び提供を示すために使用されるタッチ感知ディスプレイの概略図である。
いくつかの実施形態に係る、インテリジェントな出発時刻リマインダの生成及び提供を示すために使用されるタッチ感知ディスプレイの概略図である。
いくつかの実施形態に係る、インテリジェントな出発時刻リマインダの生成及び提供を示すために使用されるタッチ感知ディスプレイの概略図である。
いくつかの実施形態に係る、インテリジェントな出発時刻リマインダの生成及び提供を示すために使用されるタッチ感知ディスプレイの概略図である。
いくつかの実施形態に係る、インテリジェントな出発時刻リマインダの生成及び提供を示すために使用されるタッチ感知ディスプレイの概略図である。
いくつかの実施形態に係る、電子デバイスの機能ブロック図である。 発明を実施するための形態
上記で論じ、以下により詳細に論じるように、インテリジェントな出発時刻リマインダを生成し、提供するための、より高速、より効率的な方法及びインタフェースを備える電子デバイスが必要である。特に、以前に訪れた住所に基づいて、出発時刻リマインダを生成し、提供することが必要である(例えば、カレンダー項目が「歯科医を訪れる」というテキストを備えたタイトルを包含している場合、歯科医に対応する以前に訪れた住所に基づいて、出発時刻リマインダを生成することができる)。本明細書には、これらのニーズに対処する新規な方法及びインタフェースが開示される。かかる方法及びインタフェースは、任意選択的に、出発時刻リマインダを生成するための従来の方法を補完するか、又はそれに取って代わる。かかる方法及びインタフェースは、ユーザが、最小量のテキスト入力でカレンダー項目を迅速に生成し、次いで、自動的にかつ人の介入なしに、最小量のテキスト入力のみに基づいて、カレンダー項目に対応する地理的目的地を判定することを可能にすることによって、出発時刻リマインダを生成するためのプロセスを合理化する。したがって、ユーザは、電子デバイス上にカレンダー項目を迅速に生成し続けることが可能であり、本明細書で開示する方法及びインタフェースを利用することによって、電子デバイスは、カレンダー項目についてのインテリジェントな出発時刻リマインダをシームレスに生成する。このようにすると、かかる方法及びインタフェースは、ユーザが適時にイベントに到着することを保証するのを助ける。したがって、本明細書で開示する方法及びインタフェースは、認知負担、及びユーザがカレンダー項目を生成するために費やさなければならない時間を低減し、それにより、より効率的なヒューマン-マシンインタフェースが生成される。バッテリ動作電子デバイスの場合、(例えば、特定の位置の詳細なしに生成されたカレンダー項目についての目的地として、以前に訪れた住所を自動的に識別するなど、広範なユーザ対話を従来は必要とするタスクを自動的に実行することによって)より高速、より効率的にインテリジェントな出発時刻リマインダを生成し、提供することにより、節電するだけでなく、バッテリ充電の間隔を増大させる。
以下の図1A~図1B、及び図2は、例示的なデバイスの説明を提供する。図8は、例示的な電子デバイスの機能ブロック図を提供する。図3A~図3B及び図4A~図4Bは、インテリジェントな出発時刻リマインダを生成し、提供するために使用される例示的なデータ構造のブロック図である(これらのデータ構造、図6に関して以下に説明する方法において使用される)。図5は、インテリジェントな出発時刻リマインダを生成し、提供するための例示的なシステムを示すブロック図である(この例示的なシステムは、図6に関して以下に説明する方法において使用される)。図5は、インテリジェントな出発時刻リマインダを生成し、提供するための方法を示すフローチャートである。図7A~図7Fは、インテリジェントな出発時刻リマインダを生成し、提供するための例示的なユーザインタフェースを示すために使用されるタッチ感知ディスプレイの概略図である。図3A~図3B、図4A~図4B、図5及び図7A~図7Eを使用して、図5の方法及び/又はプロセスを示す。
ここで、添付図面に実施例が示される実施形態を、詳細に参照する。以下の詳細な説明では、説明されているさまざまな実施形態の完全な理解を提供するために、数多くの具体的な詳細が記載されている。しかしながら、説明されているさまざまな実施形態は、これらの具体的な詳細を伴わずとも実施し得ることが、当業者には明らかであろう。他の例においては、周知の、方法、手続き、構成要素、回路、及びネットワークは、実施形態の態様を不必要に不明瞭なものとしないよう、詳細には説明されていない。
本明細書では、第1、第2などの用語は、一部の実施例で、さまざまな要素を説明するために使用されるが、これらの要素は、それらの用語によって限定されるべきではないことも理解されるであろう。これらの用語は、ある要素を別の要素と区別するためにのみ使用される。例えば、説明されているさまざまな実施形態の範囲から逸脱することなく、第1の接触は、第2の接触と称することができ、同様に、第2の接触は、第1の接触と称し得る。第1の接触及び第2の接触は双方共に接触であるが、それらは同じ接触ではない。
本明細書で説明されるさまざまな実施形態の説明で使用される用語法は、特定の実施形態を説明することのみを目的とするものであって、限定することを意図するものではない。さまざまな記載の実施形態、及び添付の特許請求の範囲で使用されるときに、単数形「a」、「an」、及び「the」は、文脈が別途明確に示さない限り、複数形も同様に含むことが意図されている。本明細書で使用されるときに、用語「及び/又は」は、関連する列挙された項目のうちの1つ以上の任意の全ての可能な組合せを指し、かつこれを含むことをもまた理解されたい。用語「includes(含む)、「including(含む)」、「comprises(含む)」及び/又は「comprising(含む)」は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、及び/又は構成要素の存在を指定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、及び/又はそれらの群、の存在又は追加を除外しないことが更に理解されるであろう。
本明細書で使用される時、用語「if(~の場合には)」は、任意選択的に、文脈に応じて「when(~の時)」、「upon(~すると)」、「in response to determining(~という判定に応じて)」、又は「in response to detecting(~の検出に応じて)」を意味するものと解釈される。同様に、語句「if it is determined(~と判定される場合には)」又は「if(a stated condition or event)is detected((記述される条件又はイベント)が検出される場合には)」は、任意選択的に、文脈に応じて「upon determining(~と判定されると)」、又は「in response to determining(~との判定に応じて)」、又は「upon detecting(the stated condition or event)((記述される条件又はイベント)が検出されると)」、又は「in response to detecting(the stated condition or event)((記述される条件又はイベント)の検出に応じて)」を意味するものと解釈される。
本明細書における開示は、互換的に、タッチ感知ディスプレイの特定のユーザインタフェース要素又は特定の部分上で(on)、そこで(at)、その上方で(over)、その上部で(on top of)、又は実質的にその中で(substantially within)タッチ入力を検出することに関する。本明細書で使用する時、特定のユーザインタフェース要素で(at)検出されるタッチ入力は、文脈に応じて、同一のユーザインタフェース要素上で(on)、その上方で(over)、その上部で(on top of)、又は実質的にその中で(substantially within)も検出され得る。いくつかの実施形態では、以下により詳細に論じるように、タッチ入力を検出するための所望の感度レベルは、電子デバイスのユーザにより構成される(例えば、ユーザは、タッチ入力が完全にユーザインタフェース要素内にあるときにのみタッチ入力を検出するものとすると決定し得る(また、そのように動作するように電子デバイスを構成し得る))。
電子デバイス、かかるデバイス用のユーザインタフェース、及びかかるデバイスを使用するための関連するプロセス、の実施形態について説明する。いくつかの実施形態では、このデバイスは、PDA機能及び/又は音楽プレーヤ機能などの、他の機能も含む、モバイル電話機などのポータブル通信デバイスである。ポータブル多機能デバイスの例示的な実施形態としては、限定するものではないが、California州CupertinoのApple Inc.のIPHONE(登録商標)、IPOD TOUCH(登録商標)、IPAD(登録商標)デバイスが挙げられる。タッチ感知面(例えば、タッチ感知ディスプレイ及び/又はタッチパッド)を備えたラップトップ又はタブレットコンピュータなどの他のポータブル電子デバイスも任意選択的に、使用される。また、いくつかの実施形態では、このデバイスはポータブル通信デバイスではなく、タッチ感知面(例えば、タッチ感知ディスプレイ及び/又はタッチパッド)を備えたデスクトップコンピュータであることもまた理解されたい。
以下の説明では、ディスプレイ及びタッチ感知面を備える電子デバイスについて説明する。しかし、この電子デバイスは、物理キーボード、マウス、及び/又はジョイスティックなどの1つ以上の他の物理ユーザインタフェースデバイスを任意選択的に含むことを理解されたい。
本デバイスは、一般的に、描画アプリケーション、プレゼンテーションアプリケーション、ワードプロセッシングアプリケーション、ウェブサイト作成アプリケーション、ディスクオーサリングアプリケーション、スプレッドシートアプリケーション、ゲームアプリケーション、電話アプリケーション、テレビ会議アプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、フィットネスアプリケーション、写真管理アプリケーション、デジタルカメラアプリケーション、デジタルビデオカメラアプリケーション、ウェブブラウジングアプリケーション、デジタル音楽再生アプリケーション及び/又はデジタルビデオ再生アプリケーションのうちの1つ以上などのさまざまなアプリケーションをサポートする。
このデバイス上で実行されるさまざまなアプリケーションは、タッチ感知面などの、少なくとも1つの共通の物理ユーザインタフェースデバイスを、任意選択的に使用する。タッチ感知面の1つ以上の機能、並びにデバイス上に表示される対応する情報は、アプリケーションごとに、及び/又は対応するアプリケーション内で、任意選択的に、調節及び/又は変更される。このように、デバイスの共通の物理アーキテクチャ(タッチ感知面などの)は、ユーザにとって直観的かつ透過的なユーザインタフェースを有するさまざまなアプリケーションを、任意選択的にサポートする。
次に、タッチ感知ディスプレイを備えるポータブル電子デバイスの実施形態に注意を向ける。図1Aは、いくつかの実施形態に係る、タッチ感知ディスプレイ112を備えたポータブル多機能デバイス100(本明細書では互換的に、電子デバイス100又はデバイス100とも称される)を示すブロック図である。タッチ感知ディスプレイ112は、便宜上「タッチスクリーン」と呼ばれる場合があり、タッチ感知ディスプレイシステムとして、知られる場合又は呼ばれる場合もある。デバイス100は、(任意選択的に、1つ以上のコンピュータ可読記憶媒体を含む)メモリ102、コントローラ120、1つ以上の処理ユニット(CPU)122、周辺機器インタフェース118、RF回路108、オーディオ回路110、スピーカ111、マイクロフォン113、入出力(I/O)サブシステム106、他の入力又は制御デバイス116、及び外部ポート124を含む。デバイス100は、1つ以上の光センサ164を任意選択的に含む。デバイス100は、デバイス100上の接触の強度(例えば、デバイス100のタッチ感知ディスプレイシステム112などのタッチ感知面)を検出するための1つ以上の強度センサ165を、任意選択的に、含む。デバイス100は、デバイス100上に触知出力を生成する(例えば、デバイス100のタッチ感知ディスプレイシステム112又はデバイス100のタッチパッドなどの、タッチ感知面上に触知出力を生成する)ための、1つ以上の触知出力生成器167を任意選択的に含む。これらの構成要素は、1つ以上の通信バス又は信号ライン103を介して任意選択的に通信する。
本明細書及び特許請求の範囲で使用される時、タッチ感知面上の接触の「強度」という用語は、タッチ感知面上の接触(例えば、指接触)の力又は圧力(単位面積当りの力)、あるいはタッチ感知面上の接触の力又は圧力の代替物(代用物)を指す。接触の強度は、少なくとも4つの別個の値を含み、より典型的には、何百もの異なる値(例えば、少なくとも256)を含む、値の範囲を有する。接触の強度は、さまざまな方法及びさまざまなセンサ、又はセンサの組合せを用いて、任意選択的に、判定(又は、測定)される。例えば、タッチ感知面の下に又は隣接して配置された1つ以上の力センサは、タッチ感知面上のさまざまな点における力を測定するために、任意選択的に使用される。いくつかの実装において、複数の力センサの力測定値を組合せて(例えば、加重平均)、接触力の推定値を判定する。同様に、タッチ感知面上のスタイラスの圧力を判定するために、スタイラスの圧力感知チップが、任意選択的に用いられる。あるいは、タッチ感知面上で検出される接触領域のサイズ及び/若しくはその変化、接触に近接するタッチ感知面の電気容量及び/若しくはその変化、並びに/又は、接触に近接するタッチ感知面の抵抗及び/若しくはその変化が、タッチ感知面上の接触の力又は圧力の代替物として、任意選択的に用いられる。いくつかの実装では、接触の力又は圧力の代替的測定値は、強度閾値を超えているか否かを判定するために直接に用いられる(例えば、強度閾値は、代替的測定値に対応する単位で記述される)。いくつかの実装では、接触の力又は圧力の代替的測定値は、推定される力又は圧力に変換され、この推定される力又は圧力を用いて、強度閾値を超えているか否かを判定する(例えば、強度閾値は、圧力の単位で測定された圧力閾値である)。
本明細書及び特許請求の範囲で使用される時、用語「触知出力」は、ユーザの触覚でユーザによって検出されることになる、デバイスの従前の位置に対するデバイスの物理的変位、デバイスの構成要素(例えば、タッチ感知面)の、デバイスの別の構成要素(例えば、筐体)に対する物理的変位、又はデバイスの質量中心に対する構成要素の変位を指す。例えば、デバイス又はデバイスの構成要素が、タッチに敏感なユーザの表面(例えば、ユーザの指、手のひら、又は手の他の部分)に接触している状況において、物理的変位によって生成された触知出力は、デバイス又はデバイスの構成要素の物理的特性の認識された変化に相当する触感として、ユーザによって解釈される。例えば、タッチ感知面(例えば、タッチ感知ディスプレイ又はトラックパッド)の移動は、ユーザによって、物理アクチュエータボタンの「ダウンクリック」又は「アップクリック」として任意選択的に解釈される。いくつかの場合、ユーザの動作により物理的に押された(例えば、変位された)タッチ感知面と関連付けられた物理アクチュエータボタンの移動がない時でさえ、ユーザは「ダウンクリック」又は「アップクリック」などの触感を感じるであろう。別の実施例として、タッチ感知面の移動は、タッチ感知面の平滑度に変化がない場合であっても、ユーザによって、そのタッチ感知面の「粗さ」として、任意選択的に解釈又は感知される。ユーザによるタッチのかかる解釈は、ユーザの個人的な感覚認知に左右されるものではあるが、大多数のユーザに共通するタッチの感覚認知が多数存在する。したがって、触知出力が、ユーザの特定の感覚認知(例えば、「アップクリック」「ダウンクリック」、「粗さ」)に対応するものと記述される場合、別途記載のない限り、生成された触知出力は、典型的な(又は、平均的な)ユーザの記述された感覚認知を生成するデバイス、又はデバイスの構成要素の物理的変位に対応する。
デバイス100は、ポータブル多機能デバイスの一実施例に過ぎず、デバイス100は、示されるものよりも多いか又は少ない構成要素を任意選択的に有するか、2つ以上の構成要素を任意選択的に組合せるか、又は構成要素の異なる構成若しくは配置を任意選択的に有することを理解されたい。図1Aに示されるさまざまな構成要素は、1つ以上の信号処理回路、及び/又は特定用途向け集積回路を含む、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの両方の組合せで実装される。
メモリ102は、任意選択的に、高速ランダムアクセスメモリ(例えば、DRAM、SRAM、DDR RAM、又は他のランダムアクセスソリッドステートメモリデバイス)を含み、また任意選択的に、1つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイスなどの、不揮発性メモリを含む。メモリ102は、任意選択的に、プロセッサ(単数又は複数)122から遠隔に配置される1つ以上の記憶デバイスを含む。CPU122及び周辺機器インタフェース118などの、デバイス100の他の構成要素によるメモリ102へのアクセスは、任意選択的に、コントローラ120により制御される。
周辺機器インタフェース118を使用して、当該デバイスの入力周辺機器及び出力周辺機器を、CPU122及びメモリ102に連結することができる。1つ以上のプロセッサ122は、デバイス100のためのさまざまな機能を実行し、データを処理するために、メモリ102に記憶されたさまざまなソフトウェアプログラム及び/又は命令セットを動作させる、あるいは実行する。
いくつかの実施形態では、周辺機器インタフェース118、CPU122及びコントローラ120は、任意選択的に、チップ104などのシングルチップ上に実装される。いくつかの実施形態では、これらは、任意選択的に、別個のチップ上に実装される。
RF(無線周波数)回路108は、電磁信号とも呼ばれるRF信号を送受信する。RF回路108は、電気信号を電磁信号に、又は電磁信号を電気信号に変換し、電磁信号を介して通信ネットワーク及び他の通信デバイスと通信する。RF回路108は、アンテナシステム、RF送受信機、1つ以上の増幅器、同調器、1つ以上の発振器、デジタル信号プロセッサ、CODECチップセット、加入者識別モジュール(SIM)カード、メモリなどを含むがこれらに限定されない、これらの機能を実行するための周知の回路を、任意選択的に含んでいる。RF回路108は、ワールドワイドウェブ(WWW)とも呼ばれるインターネット、イントラネット、及び/又は、セルラー電話ネットワーク、無線ローカルエリアネットワーク(LAN)などの無線ネットワーク、及び/又は、メトロポリタンエリアネットワーク(MAN)、などのネットワーク、及び他のデバイス、と無線通信によって、任意選択的に通信する。無線通信は、任意選択的に、Global System for Mobile Communications(GSM)(登録商標)、Enhanced Data GSM Environment(EDGE)(登録商標)、高速ダウンリンクパケットアクセス(HSDPA)、高速アップリンクパケットアクセス(HSUPA)、Evolution、Data-Only(EV-DO)、HSPA、HSPA+、Dual-Cell HSPA(DC-HSPDA)、ロングタームエボリューション(LTE)、近距離無線通信(NFC)、広帯域符号分割多元接続(W-CDMA)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、Bluetooth(登録商標)、ワイヤレスフィデリティ(Wi-Fi)(登録商標)(例えば、IEEE802.11a、IEEE802.1lb、IEEE 802.1lg及び/又はIEEE802.1ln)を含むが、これらに限定されない複数の通信規格、プロトコル及び技術のいずれかを用いる。
オーディオ回路110、スピーカ111、及びマイクロフォン113は、ユーザとデバイス100との間のオーディオインタフェースを提供する。オーディオ回路110は、周辺機器インタフェース118からオーディオデータを受信し、このオーディオデータを電気信号に変換し、この電気信号をスピーカ111に送信する。スピーカ111は、電気信号を人間の可聴音波に変換する。オーディオ回路110は、マイクロフォン113により音波から変換された電気信号もまた受信する。オーディオ回路110は、電気信号をオーディオデータに変換し、このオーディオデータを処理のために周辺機器インタフェース118に送信する。オーディオデータは、周辺機器インタフェース118によって任意選択的に、メモリ102及び/又はRF回路108から取り込まれる、並びに/あるいは、そこに送信される。いくつかの実施形態では、オーディオ回路110はまた、ヘッドセットジャックを備える。ヘッドセットジャックは、オーディオ回路110と、出力専用ヘッドホン又は出力(例えば、片耳又は両耳用のヘッドホン)と入力(例えば、マイクロフォン)の双方を有するヘッドセットなど、取り外し可能なオーディオ入出力周辺機器との間のインタフェースを提供する。
I/Oサブシステム106は、周辺機器インタフェース118に、タッチスクリーン112及び他の入力制御デバイス116などのデバイス100の入出力周辺機器を接続する。I/Oサブシステム106は、任意選択的に、ディスプレイコントローラ156、光センサコントローラ158、強度センサコントローラ159、触覚フィードバックコントローラ161、及び他の入力若しくは制御デバイスのための1つ以上の入力コントローラ160を含む。1つ以上の入力コントローラ160は、他の入力又は制御デバイス116から電気信号を受信し、それらへ電気信号を送信する。他の入力制御デバイス116は、任意選択的に、物理ボタン(例えば、プッシュボタン、ロッカボタンなど)、ダイヤル、スライダスイッチ、ジョイスティック、クリックホイールなどを含む。いくつかの他の実施形態において、入力コントローラ(単数又は複数)160は、キーボード、赤外線ポート、USBポート、及びマウスなどのポインタデバイスのうちのいずれかに、任意選択的に連結される(又は、いずれにも連結されない)。1つ以上のボタンは、スピーカ111及び/又はマイクロフォン113の音量調節のためのアップ/ダウンボタンを任意選択的に含む。1つ以上のボタンは、任意選択的に、プッシュボタンを含む。
タッチ感知ディスプレイ112は、デバイスとユーザとの間の入力インタフェース及び出力インタフェースを提供する。ディスプレイコントローラ156は、タッチスクリーン112から電気信号を受信し、及び/又はそれへ電気信号を送信する。タッチスクリーン112は、ユーザに視覚出力を表示する。視覚出力は、任意選択的に、グラフィック、テキスト、アイコン、ビデオ、及びこれらの任意の組合せ(総称して「グラフィック」と称する)を含む。いくつかの実施形態では、視覚出力の一部又は全ては、ユーザインタフェースオブジェクトに対応する。
タッチスクリーン112は、触覚及び/若しくは触感の接触に基づくユーザからの入力を受け入れるタッチ感知面、センサ、又はセンサのセットを有する。タッチスクリーン112及びディスプレイコントローラ156は(メモリ102内の任意の関連モジュール及び/又は命令セットと共に)、タッチスクリーン112上で接触(及び任意の接触の移動又は中断)を検出し、検出された接触をタッチスクリーン112上に表示されたユーザインタフェースオブジェクト(例えば、1つ以上のソフトキー、アイコン、ウェブページ又は画像)との対話に変換する。例示的な実施形態では、タッチスクリーン112とユーザとの間の接触点は、ユーザの指の下の領域に対応する。
タッチスクリーン112は任意選択的に、LCD(液晶ディスプレイ)技術、LPD(発光ポリマーディスプレイ)技術又はLED(発光ダイオード)技術、あるいはOLED(有機発光ダイオード)技術、を使用するが、他の実施形態では、他のディスプレイ技術が使用される。タッチスクリーン112及びディスプレイコントローラ156は、静電容量技術、抵抗性技術、赤外線技術、及び表面弾性波技術、並びに、タッチスクリーン112との1つ以上の接触点を判定するための他の近接センサアレイ又は他の要素を含むが、これらに限定されない、現在公知の若しくは後日に開発される複数のタッチ感知技術のうちのいずれかを使用して、接触及び接触のあらゆる移動又は中断を任意選択的に検出する。例示的な実施形態では、California州CupertinoのAPPLE Inc.からのIPHONE(登録商標)、IPOD TOUCH(登録商標)、及びIPAD(登録商標)などにおいて見られるような、投影された相互キャパシタンス感知技術が使用されている。
タッチスクリーン112は、任意選択的に、400dpiを超えるビデオ解像度を有する。いくつかの実施形態では、タッチスクリーン112は、少なくとも600dpiのビデオ解像度を有する。他の実施形態では、タッチスクリーン112は、少なくとも1000dpiのビデオ解像度を有する。ユーザは、スタイラス、指などの任意の好適な物体又はディジットを使用して、タッチスクリーン112と任意選択的に接触する。いくつかの実施形態では、ユーザインタフェースは、指による接触及びジェスチャと主に作用するように設計されている。いくつかの実施形態では、デバイスは、指に基づく入力を、正確なポインタ/カーソル位置又はユーザの望むアクションを実行するためのコマンドに変換する。
いくつかの実施形態では、タッチスクリーンに加えて、デバイス100は、任意選択的に、特定の機能をアクティブ化又は非アクティブ化させるためのタッチパッド(図示せず)を含む。いくつかの実施形態では、タッチパッドは、タッチスクリーンとは異なり、視覚出力を表示しない、デバイスのタッチ感知領域である。タッチパッドは、任意選択的に、タッチスクリーン112とは別個のタッチ感知面、又はタッチスクリーンによって形成されたタッチ感知面の延長である。
デバイス100はまた、さまざまな構成要素に電力を供給するための電力システム162も含む。電力システム162は、任意選択的に、電力管理システム、1つ以上の電源(例えば、バッテリ、交流(AC))、再充電システム、停電検出回路、電力コンバータ又はインバータ、電力状態インジケータ(例えば、発光ダイオード(LED))、並びにポータブルデバイス内での電力の生成、管理、及び分配と関連付けられた任意の他の構成要素を含む。
デバイス100はまた、1つ以上の光センサ164をも、任意選択的に含む。図1Aは、I/Oサブシステム106内の光センサコントローラ158に結合された光センサを示す。光センサ164は、電荷結合デバイス(CCD)又は相補的金属酸化物半導体(CMOS)フォトトランジスタを任意選択的に含む。光センサ164は、1つ以上のレンズを通して投影された、環境からの光を受光し、その光を、画像を表現するデータに変換する。撮像モジュール143(カメラモジュールとも称する)と併用して、光センサ164は、静止画像又はビデオを任意選択的にキャプチャする。いくつかの実施形態では、タッチ感知ディスプレイを静止画像及び/又はビデオ画像取得のためのビューファインダとして有効化するように、光センサは、デバイスの前面のタッチスクリーン112の反対側である、デバイス100の背面に配置されている。いくつかの実施形態では、ユーザがタッチ感知ディスプレイ上で他のテレビ会議参加者を見ている間に、ユーザの画像を、テレビ会議のために任意選択的に、得るように、別の光センサがデバイスの前面に配置される。
デバイス100はまた、1つ以上の接触強度センサ165も任意選択的に含む。図1Aは、I/Oサブシステム106内の強度センサコントローラ159に連結された接触強度センサを示す。接触強度センサ165は、1つ以上のピエゾ抵抗ひずみゲージ、電気容量式力センサ、電気力センサ、圧電力センサ、光学力センサ、容量式タッチ感知面、又は他の強度センサ(例えば、タッチ感知面上の接触の力(又は圧力)を測定するために使用するセンサ)を、任意選択的に含む。接触強度センサ165は、環境から接触強度情報(例えば、圧力情報又は圧力情報の代用物)を受信する。いくつかの実施形態では、少なくとも1つの接触強度センサが、タッチ感知面(例えば、タッチ感知ディスプレイシステム112)と共にコロケートされているか、又は、それに近接している。いくつかの実施形態では、少なくとも1つの接触強度センサが、デバイス100の前面に配置されたタッチスクリーン112の反対側である、デバイス100の背面に配置されている。
デバイス100はまた、任意選択的に、1つ以上の近接センサ166を含む。図1Aは、周辺機器インタフェース118と連結された近接センサ166を示す。あるいは、近接センサ166は、I/Oサブシステム106内の入力コントローラ160に結合される。いくつかの実施形態において、多機能デバイスがユーザの耳の近くに配置されている場合(例えば、ユーザが電話通話を行っている場合)、近接センサがオフになり、タッチスクリーン112が無効になる。
デバイス100はまた、任意選択的に、1つ以上の触知出力生成器167を含む。図1Aは、I/Oサブシステム106内の触覚フィードバックコントローラ161に連結された触知出力生成器を示す。触知出力生成器167は、スピーカ又は他のオーディオ構成要素などの1つ以上の電気音響デバイス、及び/又はモータ、ソレノイド、電気活性ポリマー、圧電アクチュエータ、静電アクチュエータ、若しくは他の触知出力生成構成要素(例えば、デバイス上で電気信号を触知出力に変換する構成要素)などの、エネルギーを直線運動に変換する電気機械デバイスを、任意選択的に含む。接触強度センサ165は、触覚フィードバックモジュール133から触覚フィードバック生成命令を受信し、デバイス100のユーザが感知できる触知出力をデバイス100上で生成する。いくつかの実施形態では、少なくとも1つの触知出力生成器は、タッチ感知面(例えば、タッチ感知ディスプレイシステム112)に配置されているか、又はそれに近接しており、任意選択的に、タッチ感知面を垂直方向(例えば、デバイス100の表面の内/外)に、又は横方向(例えば、デバイス100の表面と同じ平面内の前後)に動かすことによって、触知出力を生成する。いくつかの実施形態では、少なくとも1つの触知出力生成器センサが、デバイス100の前面に配置されたタッチ感知ディスプレイ112の反対側である、デバイス100の背面に配置されている。
デバイス100はまた、任意選択的に、1つ以上の加速度計168を含む。図1Aは、周辺機器インタフェース118に連結された加速度計168を示す。あるいは、加速度計168は、I/Oサブシステム106内の入力コントローラ160に、任意選択的に、連結される。いくつかの実施形態では、情報は、1つ以上の加速度計から受信したデータの分析に基づいて、縦長表示又は横長表示でタッチ感知ディスプレイ上に表示される。デバイス100は、加速度計(単数又は複数)168に加えて、磁気計(図示せず)並びにデバイス100の位置及び向き(例えば、縦長又は横長)に関する情報を取得するためのGPS(又はGLONASS又は他のグローバルナビゲーションシステム)受信部(図示せず)を任意選択的に含む。
いくつかの実施形態において、メモリ102に記憶されたソフトウェア構成要素は、オペレーティングシステム126、通信モジュール(又は命令セット)128、接触/動きモジュール(又は命令セット)130、グラフィックモジュール(又は命令セット)132、テキスト入力モジュール(又は命令セット)134、全地球測位システム(GPS)モジュール(又は命令セット)135、及びアプリケーション(又は命令セット)136を含む。更に、いくつかの実施形態では、図1Aに示すように、メモリ102は、デバイス/グローバル内部状態157、(任意選択的に、以前に訪れた住所402、カレンダー項目のデータ構造302、目的地予測モジュール163-1、ルート判定モジュール163-2、及び/又は出発リマインドモジュール163-3のうちの1つ以上を含む)目的地判定モジュール163を記憶している。デバイス/グローバル内部状態157は、以下の1つ以上を含む。現在アクティブ状態のアプリケーションがある場合、どのアプリケーションがアクティブかを示す、アクティブアプリケーション状態、どのアプリケーション、ビュー、又は他の情報がタッチ感知ディスプレイ112のさまざまな領域を占領しているかを示す、表示状態、デバイスのさまざまなセンサ及び入力制御デバイス116から得られる情報を含む、センサ状態、及び、デバイスの位置及び/又は姿勢(例えば、デバイスの向き)に関する位置情報。
オペレーティングシステム126(例えば、Darwin(登録商標)、RTXC(登録商標)、LINUX(登録商標)、UNIX(登録商標)、OS X(登録商標)、WINDOWS(登録商標)、又はVxWorks(登録商標)などの組み込みオペレーティングシステム)は、一般的なシステムタスク(例えば、メモリ管理、記憶デバイス制御、電力管理など)を制御及び管理するためのさまざまなソフトウェア構成要素及び/又はドライバを含み、さまざまなハードウェア構成要素とソフトウェア構成要素との間の通信を容易にする。
通信モジュール128は、1つ以上の外部ポート124を介して他のデバイスとの通信を容易にし、RF回路108及び/又は外部ポート124が受信したデータを処理するためのさまざまなソフトウェア構成要素を含む。外部ポート124(例えば、ユニバーサルシリアルバス(USB)、FIREWIRE(登録商標)など)は、直接的に、又はネットワーク(例えば、インターネット、無線LANなど)を通して間接的に、他のデバイスに接続するように適応している。いくつかの実施形態では、外部ポートは、APPLE Inc.のIPOD(登録商標)デバイスのいくつかの実施形態で使用される30ピンコネクタと同じ、あるいはそれに類似する及び/又はそれと互換性のあるマルチピン(例えば、30ピン)コネクタである。他の実施形態では、外部ポートは、APPLE Inc.のLIGHTNING(登録商標)コネクタで使用される8ピンコネクタと同じ、あるいはそれに類似する及び/又はそれと互換性のあるマルチピン(例えば、8ピン)コネクタである。
接触/動きモジュール130は、任意選択的に、(ディスプレイコントローラ156と連携して)タッチスクリーン112及び他のタッチ感知デバイス(例えば、タッチパッド又は物理クリックホイール)との接触を検出する。接触/動きモジュール130は、接触が生じたか否かを判定すること(例えば、指を下ろすイベントを検出すること)、接触の強度(例えば、接触の力若しくは圧力、又は、接触の力若しくは圧力の代替物)を判定すること、接触の移動が存在するか否かを判定し、タッチ感知面を横断する移動を追跡すること(例えば、指をドラッグする1つ以上のイベントを検出すること)、及び接触が停止したか否かを判定すること(例えば、指を上げるイベント又は接触の中断を検出すること)などの、接触の検出に関するさまざまな動作を実行するための、さまざまなソフトウェア構成要素を含む。接触/動きモジュール130は、タッチ感知面から接触データを受信する。一連の接触データにより表現される接触点の移動を判定することは、接触点の速さ(大きさ)、速度(大きさ及び方向)、及び/又は加速度(大きさ及び/又は方向の変化)を判定することを任意選択的に含む。これらの動作は任意選択的に、単一の接触(例えば、1つの指の接触)又は複数の同時接触(例えば、「マルチタッチ」/複数の指の接触)に適用される。いくつかの実施形態では、接触/動きモジュール130及びディスプレイコントローラ156は、タッチパッド上の接触を検出する。
いくつかの実施形態では、接触/動きモジュール130は、ユーザによって動作が実行されたか否かを判定するための(例えば、ユーザがアフォーダンス上で選択したか、あるいは「クリック」したかを判定するための)、1つ以上の強度閾値のセットを使用する。いくつかの実施形態において、少なくとも強度閾値のサブセットが、ソフトウェアパラメータに従って判定される(例えば、強度閾値は、特定の物理アクチュエータのアクティブ化閾値によって判定されず、デバイス100の物理ハードウェアを変更することなく調整し得る)。例えば、トラックパッド又はタッチ感知ディスプレイのマウス「クリック」閾値は、トラックパッド又はタッチ感知ディスプレイのハードウェアを変更することなく広範囲の所定の閾値のうちのいずれかに設定することができる。更に、一部の実装では、デバイスのユーザには、(例えば、個々の強度閾値を調整することにより、及び/又は、システムレベルのクリック「強度」パラメータにより、一度に複数の強度閾値を調整することによって)強度閾値のセットのうちの1つ以上を調整するためのソフトウェア設定が提供される。
接触/動きモジュール130は任意選択的に、ユーザによるジェスチャ入力を検出する。タッチ感知面上の異なるジェスチャは、異なる接触パターン(例えば、異なる動き、タイミング、及び/又は検出される接触の強度)を有する。したがって、ジェスチャは、特定の接触パターンを検出することによって、任意選択的に検出される。例えば、指のタップジェスチャを検出することは、(例えば、アイコンの位置での)指を下ろすイベントを検出し、続いてその指を下ろすイベントと同じ位置(又は、実質的に同じ位置)で指を上げる(リフトオフ)イベントを検出することを含む。別の実施例として、タッチ感知面上での指のスワイプジェスチャを検出することは、指を下ろすイベントを検出し、続いて、1つ以上の、指をドラッグするイベントを検出し、いくつかの実施形態では、その後、続いて指を上げる(リフトオフ)イベントを検出することを含む。
グラフィックモジュール132は、表示されるグラフィックの視覚的効果(例えば、輝度、透明度、彩度、コントラスト、又は他の視覚特性)を変更するための構成要素を含めた、タッチスクリーン112又は他のディスプレイ上にグラフィックをレンダリングして表示するための、さまざまな既知のソフトウェア構成要素を含む。本明細書で使用する時、用語「グラフィック」は、ユーザに対して表示することができる任意のオブジェクトを含み、これらのオブジェクトとしては、テキスト、ウェブページ、アイコン(ソフトキーを含むユーザインタフェースオブジェクトなど)、デジタル画像、ビデオ、アニメーションなどが挙げられるが、これらに限定されない。
いくつかの実施形態では、グラフィックモジュール132は、使用されるグラフィックを表すデータを記憶する。各グラフィックには、対応するコードが、任意選択的に割り当てられる。グラフィックモジュール132は、アプリケーションなどから、必要に応じて、座標データ及び他のグラフィック特性データと共に、表示されることとなるグラフィックを指定する1つ以上のコードを受信し、次にディスプレイコントローラ156に出力する画面の画像データを生成する。
触覚フィードバックモジュール133は、デバイス100とのユーザ対話に応じて、デバイス100上の1つ以上の場所で触知出力を生成するために、触知出力生成器(単数又は複数)167によって使用される命令を生成するための、さまざまなソフトウェア構成要素を含む。
テキスト入力モジュール134は、任意選択的に、グラフィックモジュール132の構成要素であり、さまざまなアプリケーション(例えば、連絡先モジュール137、電子メールクライアントモジュール140、IMモジュール141、ブラウザモジュール147、及びテキスト入力を必要とする任意の他のアプリケーション)でテキストを入力するための、ソフトキーボードを提供する。
GPSモジュール135は、デバイスの位置を判断し、この情報をさまざまなアプリケーションで使用するために提供する(例えば、ロケーションベースダイヤル発呼で使用するための電話138へ、ピクチャ/ビデオのメタデータとしてカメラ143へ、並びに気象ウィジェット、地方のイエローページウィジェット、及び地図/ナビゲーションウィジェットなどのロケーションベースのサービスを提供するアプリケーションへ)。
アプリケーション(「app」)136は、任意選択的に、以下のモジュール(又は、命令セット)、あるいはそれらのサブセット又はスーパーセットを含む。
●連絡先モジュール137(時には、アドレス帳又は連絡先リストとも呼ぶ)、
●電話モジュール138、
●テレビ会議モジュール139、
●電子メールクライアントモジュール140、
●インスタントメッセージ(IM)モジュール141、
●フィットネスモジュール142、
●静止画像及び/又はビデオ画像用のカメラモジュール143、
●画像管理モジュール144、
●ブラウザモジュール147、
●カレンダーモジュール148、
●気象ウィジェット149-1、株価ウィジェット149-2、計算機ウィジェット149-3、アラーム時計ウィジェット149-4、辞書ウィジェット149-5、及びユーザによって取得された他のウィジェット、並びにユーザ作成ウィジェット149-6のうちの1つ以上を任意選択的に含む、ウィジェットモジュール149、
●検索モジュール151、
●任意選択的にビデオ再生モジュール及び音楽再生モジュールから構成されている、ビデオ及び音楽プレーヤモジュール152、
●メモモジュール153、
●地図モジュール154、及び/又は
●オンラインビデオモジュール155。
任意選択的にメモリ102内に記憶される他のアプリケーション136の例としては、他のワードプロセッシングアプリケーション、他の画像編集アプリケーション、描画アプリケーション、プレゼンテーションアプリケーション、ウェブサイト作成アプリケーション、ディスクオーサリングアプリケーション、スプレッドシートアプリケーション、JAVA(登録商標)対応アプリケーション、暗号化、デジタル著作権管理、音声認識、ユーザ作成ウィジェット149-6を作製するためのウィジェットクリエータモジュール、及び音声複製が挙げられる。
タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、及びテキスト入力モジュール134と共に、連絡先モジュール137は、(例えば、メモリ102内の連絡先モジュール137に記憶される)アドレス帳又は連絡先リストを管理するために任意選択的に使用され、それには、アドレス帳に名前(単数又は複数)を加えること、アドレス帳から名前(単数又は複数)を削除すること、電話番号(単数又は複数)、メールアドレス(単数又は複数)、住所(単数又は複数)、又は他の情報を名前と関連付けること、画像を名前と関連付けること、名前を分類して並べ替えること、電話番号又は電子メールアドレスを提供して、電話モジュール138、テレビ会議モジュール139、電子メールクライアントモジュール140、若しくはIMモジュール141による通信を開始する及び/又は容易にすること、などが含まれる。
RF回路108、オーディオ回路110、スピーカ111、マイクロフォン113、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、及びテキスト入力モジュール134と関連して、電話モジュール138は、任意選択的に、電話番号に対応する一連の文字を入力したり、アドレス帳137内の1つ以上の電話番号にアクセスしたり、入力されている電話番号を修正したり、各々の電話番号をダイヤルしたり、会話を実行したり、会話が完了した際に接続を切るか又は電話を切ったりするために使用される。上述のように、無線通信は、複数の通信規格、プロトコル、及び技術のうちのいずれかを任意選択的に使用する。
RF回路108、オーディオ回路110、スピーカ111、マイクロフォン113、タッチスクリーン112、ディスプレイコントローラ156、光センサ164、光センサコントローラ158、接触モジュール130、グラフィックモジュール132、テキスト入力モジュール134、連絡先リスト137、及び電話モジュール138と関連して、テレビ会議モジュール139は、ユーザの指示に従って、ユーザと1人以上の他の参加者との間のテレビ会議を開始し、行い、終了するための実行可能命令を含む。
RF回路108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、及びテキスト入力モジュール134と関連して、電子メールクライアントモジュール140は、ユーザの指示に応じて、電子メールを作成し、送信し、受信し、管理するための、実行可能命令を含んでいる。画像管理モジュール144と連携して、電子メールクライアントモジュール140は、カメラモジュール143で撮影された静止画像又はビデオ画像を有する電子メールを作成及び送信することを非常に容易にする。
RF回路108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、及びテキスト入力モジュール134と関連して、インスタントメッセージモジュール141は、インスタントメッセージに対応する文字列を入力し、入力済みの文字を修正し、対応するインスタントメッセージを送信し(例えば、電話ベースのインスタントメッセージのためのショートメッセージサービス(SMS)若しくはマルチメディアメッセージサービス(MMS)プロトコルを用いて、又はインターネットベースのインスタントメッセージのためのXMPP、SIMPLE、若しくはIMPSを用いて)、インスタントメッセージを受信しその受信したインスタントメッセージを表示するための実行可能命令を含む。いくつかの実施形態では、送信及び/又は受信されるインスタントメッセージは、任意選択的に、MMS及び/又は拡張メッセージングサービス(Enhanced Messaging Service、EMS)でサポートされるような、グラフィック、写真、オーディオファイル、ビデオファイル、及び/又は他の添付ファイルを含む。本明細書で使用する時、「インスタントメッセージ」とは、電話ベースのメッセージ(例えば、SMS又はMMSを使用して送信されるメッセージ)及びインターネットベースのメッセージ(例えば、XMPP、SIMPLE、又はIMPSを使用して送信されるメッセージ)の双方を示す。
RF回路108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、テキスト入力モジュール134、GPSモジュール135、地図モジュール154、並びに、ビデオ及び音楽プレーヤモジュール152と関連して、フィットネスモジュール142は、トレーニングを作成したり(例えば、時間、距離、及び/又はカロリー消費目標に関して)、トレーニングセンサ(携帯時計若しくは歩数計などのスポーツデバイス)と通信したり、トレーニングセンサデータを受信したり、トレーニングを監視するために用いられるセンサを較正したり、トレーニングのための音楽を選択して再生したり、トレーニングデータを表示、記憶、送信したりするための実行可能命令を含む。
タッチスクリーン112、ディスプレイコントローラ156、光センサ(単数又は複数)164、光センサコントローラ158、接触モジュール130、グラフィックモジュール132、及び画像管理モジュール144と関連して、カメラモジュール143は、静止画像又はビデオ(ビデオストリームを含む)をキャプチャしてメモリ102にそれらを記憶する、静止画像又はビデオの特徴を変更する、又はメモリ102から静止画像若しくはビデオを削除するための実行可能命令が含まれる。
タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、テキスト入力モジュール134、及びカメラモジュール143と関連して、画像管理モジュール144は、静止画像及び/又はビデオ画像を配置したり、修正したり(例えば、編集し)又は別の方法で操作したり、ラベルを付けたり、削除し、提示し(例えば、デジタルスライドショー又はアルバム内で)、並びに記憶するための実行可能命令を含む。
RF回路108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、及びテキスト入力モジュール134と関連して、ブラウザモジュール147は、ウェブページ又はそれらの一部、並びにウェブページにリンクされた添付及び他のファイル全体にわたってナビゲートし、リンク付け、受信し、表示することを含むユーザの指示に従い、インターネットをブラウズするための実行可能命令を含む。
RF回路108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、テキスト入力モジュール134、電子メールクライアントモジュール140、及びブラウザモジュール147と共に、カレンダーモジュール148は、ユーザの指示に従い、カレンダー及びカレンダーと関連付けられたデータ(例えば、カレンダー項目、すべきことのリストなど)を作成し、表示し、変更し、記憶するための実行可能命令を含む。
RF回路108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、テキスト入力モジュール134、及びブラウザモジュール147と共に、ウィジェットモジュール149は、ユーザによって任意選択的にダウンロードされ、使用されるミニアプリケーション(例えば、気象ウィジェット149-1、株価ウィジェット149-2、計算機ウィジェット149-3、アラーム時計ウィジェット149-4、及び辞書ウィジェット149-5)、又はユーザによって作成されるミニアプリケーション(例えば、ユーザ作成ウィジェット149-6)である。いくつかの実施形態では、ウィジェットは、HTML(ハイパーテキストマークアップ言語)ファイル、CSS(カスケーディングスタイルシート)ファイル、及びJavaScript(登録商標)ファイルを含む。いくつかの実施形態では、ウィジェットは、XML(拡張可能マークアップ言語)ファイル及びJavaScriptファイル(例えば、Yahoo!(登録商標)ウィジェット)を含む。
RF回路108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、テキスト入力モジュール134、及びブラウザモジュール147と併せて、ウィジェットクリエータモジュール(図示されていない)は、ウィジェットを作成する(例えば、ウェブページのユーザ指定箇所をウィジェットに変える)ために、ユーザによって任意選択的に使用される。
タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、及びテキスト入力モジュール134と関連して、検索モジュール151は、ユーザの指示に従い、1つ以上の検索基準(例えば、1つ以上のユーザ指定の検索語句)と一致する、メモリ102内のテキスト、音楽、音、画像、ビデオ、及び/又は他のファイルを検索するための実行可能命令を含んでいる。
タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、オーディオ回路110、スピーカ111、RF回路108、及びブラウザモジュール147と関連して、ビデオ及び音楽プレーヤモジュール152は、MP3又はAACファイルなどの1つ以上のファイル形式で記憶された録音済みの音楽又は他のサウンドファイルをユーザがダウンロード及び再生できるようにする実行可能命令、並びに、ビデオを(例えば、タッチスクリーン112上又は外部ポート124を介して接続された外部のディスプレイ上に)表示、提示、又は別の方法で再生するための実行可能命令を含む。いくつかの実施形態では、デバイス100は、任意選択的に、APPLE Inc.のIPOD(登録商標)などのMP3プレーヤの機能を備える。
タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、及びテキスト入力モジュール134と関連して、メモモジュール153は、ユーザの指示に従って、メモ、ToDoリストなどを作成及び管理するための実行可能命令を含む。
RF回路108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、テキスト入力モジュール134、GPSモジュール135、及びブラウザモジュール147と併せて、地図モジュール154は任意選択的に、ユーザの指示に従って、地図及び地図と関連付けられたデータ(例えば、運転方向、特定の場所若しくはその付近の店舗及び関心対象の他の地点についてのデータ、並びに場所に基づく他のデータ)を受信し、表示し、修正し、記憶するために使用することができる。
タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、オーディオ回路110、スピーカ111、RF回路108、テキスト入力モジュール134、電子メールクライアントモジュール140、及びブラウザモジュール147と関連して、オンラインビデオモジュール155は、ユーザがH.264などの1つ以上のファイル形式のオンラインビデオにアクセスし、ブラウズし、受信し(例えば、ストリーミング及び/又はダウンロードにより)、再生し(例えば、タッチスクリーン上で又は外部ポート124を介して接続された外部のディスプレイ上で)、特定のオンラインビデオへのリンクを含む電子メールを送信し、別の方法で管理できるようにする命令を含んでいる。いくつかの実施形態では、特定のオンラインビデオへのリンクを送信するために、電子メールクライアントモジュール140ではなく、インスタントメッセージモジュール141が用いられる。
図1Aに示したように、ポータブル多機能デバイス100はまた、デバイス100上で(例えば、以前に訪れた住所402又はカレンダー項目のデータ構造302からデータを取り出し、取り出したデータを使用して出発時刻リマインダを生成する)目的地判定動作を調整するための目的地判定モジュール163を含む。目的地判定モジュール163は任意選択的に以下のモジュール(又は、命令セット)、あるいはサブセット又はスーパーセットを含む。
●デバイス100のユーザが前に訪れたことがある住所(又は住所に対応するGPS座標)に関する情報を記憶するための以前に訪れた住所402;
●デバイス100のユーザと関連付けられたカレンダー項目に関する情報を記憶するためのカレンダー項目のデータ構造302;
●目的地予測モジュール163-1;
●ルート判定モジュール163-2;
●出発リマインドモジュール163-3。
GPSモジュール135、オペレーティングシステム126、I/Oサブシステム106、以前に訪れた住所402、カレンダー項目のデータ構造302、地図モジュール154及びカレンダーモジュール148と併せて、目的地予測モジュール163-1は、カレンダー項目(例えば、カレンダー項目のデータ構造302に記憶された1つ以上のレコード)をスキャンし、以前に訪れた住所(例えば、以前に訪れた住所402に記憶された以前に訪れた住所)に基づいて、対応するカレンダー項目についての目的地を予測する実行可能命令を含む。
GPSモジュール135、オペレーティングシステム126、I/Oサブシステム106、以前に訪れた住所402、カレンダー項目のデータ構造302、地図モジュール154及びカレンダーモジュール148と併せて、ルート判定モジュール163-2は、特定の目的地までの1つ以上の可能なルート(例えば、徒歩、サイクリング、ドライビング、公共輸送期間など)を判定する実行可能命令を含む。
GPSモジュール135、オペレーティングシステム126、I/Oサブシステム106、以前に訪れた住所402、カレンダー項目のデータ構造302、地図モジュール154及びカレンダーモジュール148と併せて、出発リマインドモジュール163-3は、次のイベントの出発時刻であるというリマインダをデバイス100のユーザに提供する実行可能命令を含む(例えば、例示的なリマインダを備える例示的なユーザインタフェースオブジェクト702が、図7Bに示される)。
上記で特定されたモジュール及びアプリケーションのそれぞれは、1つ以上の上記の機能を実行する実行可能命令セット及び本出願に記載の方法(例えば、コンピュータにより実行される方法及び本明細書に記載の他の情報処理方法)に対応する。これらのモジュール(すなわち、命令セット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、したがって、これらのモジュールのさまざまなサブセットは、さまざまな実施形態において任意選択的に、組合せ、又は再配置される。いくつかの実施形態では、メモリ102は、任意選択的に、上述の識別されたモジュール及びデータ構造のサブセットを記憶する。更に、メモリ102は、任意選択的に、上述されていない追加のモジュール及びデータ構造を記憶する。
いくつかの実施形態では、デバイス100は、デバイス上の機能の所定のセットの動作が排他的にタッチスクリーン及び/又はタッチパッドを介して実行されるデバイスである。デバイス100の動作のための主要入力制御デバイスとしてタッチスクリーン及び/又はタッチパッドを使用することにより、デバイス100上の物理的な入力制御デバイス(プッシュボタン、ダイヤル、など)の数を、任意選択的に低減する。
排他的にタッチスクリーン及び/又はタッチパッドを介して実行される、所定の機能のセットは、任意選択的に、ユーザインタフェース間のナビゲーションを含む。いくつかの実施形態では、タッチパッドは、ユーザによってタッチされると、デバイス100上に表示される任意のユーザインタフェースから、メインメニュー、ホームメニュー、又はルートメニューへデバイス100をナビゲートする。かかる実施形態において、「メニューボタン」はタッチパッドを使って実装される。いくつかの他の実施形態では、メニューボタンは、タッチパッドの代わりに、物理プッシュボタン又は他の物理入力制御デバイスである。
図1Bは、いくつかの実施形態に係る、イベント処理のための例示的な構成要素を示すブロック図である。いくつかの実施形態では、(図1Aの)メモリ102は、(例えば、オペレーティングシステム126の)イベントソート部170及びポータブル多機能デバイス100(図1A)のアプリケーション136の中から選択される対応するアプリケーション136-1(例えば、アプリケーション136を備えるメモリ102に記憶された上述のアプリケーションのうちのいずれか)を含む。
イベントソート部170は、イベント情報を受信し、イベント情報が配信されるアプリケーション136-1及びアプリケーション136-1のアプリケーションビュー191を決定する。イベントソート部170は、イベントモニタ171及びイベントディスパッチャモジュール174を含む。いくつかの実施形態では、アプリケーション136-1には、アプリケーションがアクティブ又は実行中の時、タッチ感知ディスプレイ112上に表示される現在のアプリケーションビュー(単数又は複数)を示す、アプリケーション内部状態192が含まれる。いくつかの実施形態では、デバイス/グローバル内部状態157は、いずれのアプリケーション(単数又は複数)が現在アクティブであるかを判定するために、イベントソート部170によって使用され、アプリケーション内部状態192は、イベント情報が配信されるアプリケーションビュー191を決定するために、イベントソート部170によって使用される。
いくつかの実施形態では、アプリケーション内部状態192は、アプリケーション136-1が実行を再開する際に使用される再開情報、アプリケーション136-1によって情報が表示されているか又は表示の準備が整っていることを示すユーザインタフェース状態情報、ユーザがアプリケーション136-1の以前の状態又はビューに戻ることを可能にするための状態待ち行列、及びユーザが以前に行ったアクションのリドゥ/アンドゥ待ち行列、のうちの1つ以上などの追加情報を含む。
イベントモニタ171は、周辺機器インタフェース118からイベント情報を受信する。イベント情報は、サブイベント(例えば、マルチタッチジェスチャの一部としての、タッチ感知ディスプレイ112上のユーザタッチ)の情報を含む。周辺機器インタフェース118は、I/Oサブシステム106、又は近接センサ166、加速度計(単数又は複数)168、及び/若しくは(オーディオ回路110を介する)マイクロフォン113などのセンサから受信する情報を送信する。周辺機器インタフェース118がI/Oサブシステム106から受信する情報には、タッチ感知ディスプレイ112又はタッチ感知面からの情報が含まれる。
いくつかの実施形態では、イベントモニタ171は、所定の間隔で周辺機器インタフェース118に要求を送信する。これに応じて、周辺機器インタフェース118はイベント情報を送信する。他の実施形態では、周辺機器インタフェース118は、重要なイベント(例えば、所定のノイズ閾値を上回り、かつ/又は所定の持続時間を超えた入力を受けること)が存在する場合にのみ、イベント情報を送信する。
いくつかの実施形態では、イベントソート部170はまた、ヒットビュー判定モジュール172及び/又はアクティブイベント認識部判定モジュール173も含む。
ヒットビュー判定モジュール172は、タッチ感知ディスプレイ112が1つよりも多いビューを表示した際に、1つ以上のビュー内のどこにおいてサブイベントが発生したかを判定するためのソフトウェア手続きを提供する。ビューは、制御部及びユーザがディスプレイ上で見ることが可能な他の要素で構成されている。
アプリケーションと関連付けられたユーザインタフェースの別の態様は、本明細書では、アプリケーションビュー又はユーザインタフェースウィンドウと呼ばれる場合があるビューのセットであり、それらの中に情報が表示され、タッチベースのジェスチャが行われる。タッチが検出される(それぞれのアプリケーションの)アプリケーションビューは、アプリケーションのプログラム階層又はビュー階層内のプログラムレベルに任意選択的に、対応する。例えば、タッチが検出される最低レベルのビューは、任意選択的に、ヒットビューと呼ばれ、適切な入力として認識されるイベントのセットは、任意選択的に、少なくとも部分的に、タッチベースのジェスチャを開始する最初のタッチのヒットビューに基づいて判定される。
ヒットビュー判定モジュール172は、タッチベースのジェスチャのサブイベントと関連付けられた情報を受信する。アプリケーションが、階層として編成された複数のビューを有する場合、ヒットビュー判定モジュール172は、そのサブイベントを処理すべき階層内の最下位のビューとしての、ヒットビューを特定する。ほとんどの状況では、ヒットビューは、起因となるサブイベント(即ち、イベント又は潜在的なイベントを形成するサブイベントのシーケンスにおける最初のサブイベント)が発生する最低レベルのビューである。ヒットビューがヒットビュー判定モジュールによって特定されると、ヒットビューは、典型的には、それがヒットビューとして特定された、同じタッチ又は入力ソースに関連する全てのサブイベントを受信する。
アクティブイベント認識部判定モジュール173は、ビュー階層内のどのビュー(単数又は複数)がサブイベントの特定のシーケンスを受信すべきかを判定する。いくつかの実施形態では、アクティブイベント認識部判定モジュール173は、ヒットビューのみがサブイベントの特定のシーケンスを受信すべきであると判定する。他の実施形態では、アクティブイベント認識部判定モジュール173は、サブイベントの物理位置を含む全てのビューはアクティブに関わっているビューであると判定し、したがって、全てのアクティブに関わっているビューは、サブイベントの特定のシーケンスを受信すべきであると判定する。他の実施形態では、タッチサブイベントがある特定のビューに関連付けられた領域に完全に限定されたとしても、階層の上位のビューは、依然としてアクティブに関わっているビューであり続ける。
イベントディスパッチャモジュール174は、イベント情報をイベント認識部(例えば、イベント認識部180)に送信する。アクティブイベント認識部判定モジュール173を含む実施形態において、イベントディスパッチャモジュール174は、アクティブイベント認識部判定モジュール173により判定されたイベント認識部にイベント情報を配信する。いくつかの実施形態では、イベントディスパッチャモジュール174は、対応するイベント受信部182により取得されるイベント情報をイベント待ち行列に記憶する。
いくつかの実施形態では、オペレーティングシステム126は、イベントソート部170を含む。あるいは、アプリケーション136-1はイベントソート部170を含む。更に他の実施形態では、イベントソート部170は、独立型のモジュール、又は接触/動きモジュール130などの、メモリ102に記憶された別のモジュールの一部である。
いくつかの実施形態では、アプリケーション136-1は、それぞれがアプリケーションのユーザインタフェースのそれぞれのビュー内で発生するタッチイベントを処理する命令を含む、複数のイベント処理部190及び1つ以上のアプリケーションビュー191を含む。アプリケーション136-1の各アプリケーションビュー191は、1つ以上のイベント認識部180を含む。通常は、それぞれのアプリケーションビュー191に複数のイベント認識部180が含まれる。他の実施形態では、イベント認識部180のうちの1つ以上は、ユーザインタフェースキット(図示せず)又はアプリケーション136-1が方法及び他の特性を継承する上位レベルのオブジェクトなどの、別個のモジュールの一部である。いくつかの実施形態では、それぞれのイベント処理部190は、データ更新部176、オブジェクト更新部177、GUI更新部178、及び/又はイベントソート部170から受信したイベントデータ179、のうちの1つ以上を含む。イベント処理部190は、アプリケーション内部状態192を更新するために、データ更新部176、オブジェクト更新部177、又はGUI更新部178を任意選択的に利用するか、呼び出す。あるいは、アプリケーションビュー191のうちの1つ以上は、1つ以上の対応するイベント処理部190を含んでいる。また、いくつかの実施形態では、データ更新部176、オブジェクト更新部177、及びGUI更新部178のうちの1つ以上は、対応するアプリケーションビュー191に含まれる。
対応するイベント認識部180は、イベントソート部170からイベント情報(例えば、イベントデータ179)を受信して、そのイベント情報からイベントを特定する。イベント認識部180は、イベント受信部182及びイベント比較部184を含む。いくつかの実施形態ではでは、イベント認識部180は更に、メタデータ183及びイベント配信命令188(任意選択的に、サブイベント配信命令を含む)の少なくともサブセットを含む。
イベント受信部182は、イベントソート部170からイベント情報を受信する。このイベント情報には、サブイベントについての情報、例えば、タッチ又はタッチの動きについての情報が含まれる。サブイベントによっては、イベント情報はまた、サブイベントの場所などの追加情報も含む。サブイベントが、タッチの動きに関わる時、イベント情報は、サブイベントの速度及び方向を任意選択的に、更に含む。いくつかの実施形態では、イベントは、1つの向きから別の向きへの(例えば、縦向きから横向きへの、又はその逆の)デバイスの回転を含み、そのイベント情報は、デバイスの現在の向き(デバイスの姿勢とも呼ばれる)についての対応する情報を含む。
イベント比較部184は、イベント情報を既定のイベント又はサブイベントの定義と比較し、その比較に基づいて、イベント又はサブイベントを判定する、あるいはイベント又はサブイベントの状態を判定若しくは更新する。いくつかの実施形態において、イベント比較部184は、イベント定義186を含む。イベント定義186は、例えば、イベント1(187-1)、イベント2(187-2)などの、イベントの定義(例えば、サブイベントの既定のシーケンス)を含む。いくつかの実施形態では、イベント187内のサブイベントは、例えば、タッチ開始、タッチ終了、タッチの移動、タッチの中止、及び複数のタッチを含む。ある実施例では、イベント1(187-1)の定義は、表示されたオブジェクト上のダブルタップである。ダブルタップは、例えば、表示されたオブジェクト上の所定の段階についての第1のタッチ(タッチ開始)、所定の段階についての第1のリフトオフ(タッチ終了)、表示されたオブジェクト上の所定の段階についての第2のタッチ(タッチ開始)、及び所定の段階についての第2のリフトオフ(タッチ終了)を含む。別の実施例では、イベント2(187-2)の定義は、表示されたオブジェクト上のドラッグ操作である。ドラッグは、例えば、表示されたオブジェクト上の所定の段階についてのタッチ(又は接触)、タッチ感知ディスプレイ112にわたるタッチの動き、及びタッチのリフトオフ(タッチ終了)を含む。いくつかの実施形態では、イベントにはまた、1つ以上の関連付けられたイベント処理部190に関する情報も含まれる。
いくつかの実施形態では、イベント定義186は、各ユーザインタフェースオブジェクトに関するイベントの定義を含む。いくつかの実施形態では、イベント比較部184は、どのユーザインタフェースオブジェクトがサブイベントに関連付けられているのかを判定するヒットテストを実行する。例えば、3つのユーザインタフェースオブジェクトがタッチ感知ディスプレイ112に表示されるアプリケーションビューにおいて、タッチ感知ディスプレイ112上でタッチが検出されると、イベント比較部184は、3つのユーザインタフェースオブジェクトのうちのどれがタッチ(サブイベント)に関連付けられているかを判定するためのヒットテストを行う。表示された各オブジェクトが、対応するイベント処理部190と関連付けられている場合、イベント比較部は、ヒットテストの結果を使用して、どのイベント処理部190をアクティブ化すべきかを判定する。例えば、イベント比較部184は、サブイベント及びヒットテストのトリガとなるオブジェクトと関連付けられたイベント処理部を選択する。
いくつかの実施形態では、それぞれのイベント187の定義は、サブイベントのシーケンスが、イベント認識部のイベントタイプに対応するか対応しないかが判定されるまで、イベント情報の配信を遅延させる、遅延作用も含む。
それぞれのイベント認識部180が、一連のサブイベントがイベント定義186のイベントのいずれとも一致しないと判断した場合、それぞれのイベント認識部180は、イベント不可能、イベント失敗、又はイベント終了の状態に入り、その後は、タッチベースのジェスチャの次のサブイベントを無視する。この状況では、ヒットビューに関してアクティブのまま維持される他のイベント認識部があれば、進行中のタッチベースのジェスチャのサブイベントを、引き続き追跡及び処理する。
いくつかの実施形態では、それぞれのイベント認識部180は、構成変更可能なプロパティと、フラグと、及び/又はイベント配信システムがアクティブに関わっているイベント認識部にどのようにサブイベント配信を実行するかについて示すリストと、を有するメタデータ183を含む。いくつかの実施形態では、メタデータ183は、構成可能なプロパティと、フラグと、及び/又はイベント認識部が互いにどのように対話し得るか又は対話が可能になるかについて示すリストと、を含む。いくつかの実施形態では、メタデータ183は、構成変更可能なプロパティと、フラグと、及び/又はサブイベントがビュー階層又はプログラム階層内のさまざまなレベルに配信されるか否かを示すリストと、を含む。
いくつかの実施形態では、それぞれのイベント認識部180は、イベントの1つ以上の特定のサブイベントが認識されたときに、イベントに関連付けられたイベント処理部190をアクティブ化する。いくつかの実施形態では、それぞれのイベント認識部180は、イベントに関連付けられたイベント情報をイベント処理部190に配信する。イベント処理部190をアクティブ化することは、対応するヒットビューにサブイベントを送信(及び送信を延期する)することとは異なる。いくつかの実施形態では、イベント認識部180は、認識されたイベントと関連付けられたフラグをスローし、フラグと関連付けられたイベント処理部190は、フラグをキャッチし、所定の処理を実行する。
いくつかの実施形態では、イベント配信命令188は、イベント処理部をアクティブ化することなくサブイベントに関するイベント情報を配信するサブイベント配信命令を含む。その代わりに、サブイベント配信命令は、一連のサブイベントと関連付けられたイベント処理部又はアクティブに関わっているビューに、イベント情報を配信する。一連のサブイベント又はアクティブに関わっているビューと関連付けられたイベント処理部は、イベント情報を受信し、所定の処理を実行する。
いくつかの実施形態では、データ更新部176は、アプリケーション136-1で使用されるデータを作成及び更新する。例えば、データ更新部176は、連絡先モジュール137で使用される電話番号を更新するか、又はビデオ及び音楽プレーヤモジュール152で使用されるビデオファイルを記憶する。いくつかの実施形態では、オブジェクト更新部177は、アプリケーション136-1で使用されるオブジェクトを作成及び更新する。例えば、オブジェクト更新部176は、新たなユーザインタフェースオブジェクトを作成するか、又はユーザインタフェースオブジェクトの位置を更新する。GUI更新部178は、GUIを更新する。例えば、GUI更新部178は、表示情報を準備し、タッチ感知ディスプレイ上に表示するために表示情報をグラフィックモジュール132に送る。
いくつかの実施形態では、イベント処理部(単数又は複数)190は、データ更新部176、オブジェクト更新部177、及びGUI更新部178を含むか、又はそれらにアクセスすることができる。いくつかの実施形態では、データ更新部176、オブジェクト更新部177、及びGUI更新部178は、それぞれのアプリケーション136-1又はアプリケーションビュー191の単一モジュールに含まれる。他の実施形態では、それらは、2つ以上のソフトウェアモジュールに含まれる。
タッチ感知ディスプレイ上のユーザのタッチのイベント処理に関する前述の説明はまた、入力デバイスを用いて多機能デバイス100を動作させるための他の形態のユーザ入力にも適用されるが、その全てがタッチスクリーン上で開始されるわけではないことを理解されたい。例えば、単一又は複数のキーボードの押下又は保持に任意選択的に合わせたマウスの移動及びマウスボタンの押下、タッチパッド上でのタップ、ドラッグ、スクロールなどの接触移動、ペンスタイラス入力、デバイスの移動、口頭による指示検出された眼球運動、バイオメトリック入力、及び/又はこれらの任意の組合せが、認識対象のイベントを定義するサブイベントに対応する入力として任意選択的に利用される。
図1Cは、いくつかの実施形態に係る、タッチ感知ディスプレイ(例えば、タッチスクリーン112)を有するポータブル多機能デバイス(例えば、ポータブル多機能デバイス100)の概略図である。いくつかの実施形態並びに以下に説明する他の実施形態では、ユーザは、例えば、1本以上の指又は1つ以上のスタイラスを用いて、スクリーン上でジェスチャを行うことによって、タッチ感知ディスプレイに表示された1つ以上のグラフィックを選択することができる。いくつかの実施形態では、ユーザが(例えば、スクリーンから指をリフトオフすることによって)1つ以上のグラフィックとの接触を断った際に、その1つ以上のグラフィックの選択が生じる。いくつかの実施形態では、ジェスチャは、任意選択的に、1回以上のタップジェスチャ(例えば、一連のスクリーン上のタッチの後のリフトオフ)、1回以上のスワイプジェスチャ(例えば、左から右へ、右から左へ、上方向へ及び/又は下方向へのスクリーンの表面に沿ったジェスチャの間の連続した接触)、並びに/又は、デバイス100と接触した指の(例えば、右から左へ、左から右へ、上方向へ及び/若しくは下方向への)ローリングを含む。いくつかの実装又は状況では、グラフィックとの不測の接触は、そのグラフィックを選択するものではない。例えば、アプリケーションを起動するためのジェスチャがタップジェスチャである場合、アプリケーションアフォーダンス(例えば、アイコン)の上をスイープするスワイプジェスチャは、対応するアプリケーションを任意選択的に起動しない(例えば、開かない)。
デバイス100はまた、「ホーム」又はメニューボタン204などの、1つ以上の物理ボタンも任意選択的に含む。前述のように、メニューボタン204は、デバイス100上で任意選択的に、実行するアプリケーションのセット内の任意のアプリケーション136へのナビゲーションに任意選択的に、使用される。あるいは、いくつかの実施形態では、メニューボタンは、タッチスクリーン112に表示されたGUIにおけるソフトキーとして実装されている。
一実施形態では、デバイス100は、タッチスクリーン112、メニューボタン204、デバイスの電源をオン/オフしてデバイスをロックするためのプッシュボタン206、音量調整ボタン(単数又は複数)208、加入者識別モジュール(SIM)カードスロット210、ヘッドセットジャック212、及びドッキング/充電用外部ポート124を含む。プッシュボタン206は、ボタンを押し下げて、既定の時間にわたってボタンを押し下げた状態で保持することによってデバイス上の電源をオン/オフし、ボタンを押し下げて、既定時間が経過する前にボタンを解放することによってデバイスをロックし、及び/又は、デバイスのロックを解除する、若しくは、ロック解除処理を開始する。代替実施形態では、デバイス100はまた、マイクロフォン113を通して、一部の機能をアクティブ化又は非アクティブ化するための口頭入力を受ける。デバイス100はまた、タッチスクリーン112上の接触の強度を検出するための1つ以上の接触強度センサ165、及び/又は、デバイス100のユーザに対する触知出力を生成するための1つ以上の触知出力生成器167も、任意選択的に含む。
図1Dは、ディスプレイ194(例えば、タッチスクリーン112)とは別個のタッチ感知面195(例えば、タブレット又はタッチパッド)を備えるデバイス(例えば、図1Aのデバイス100)上のユーザインタフェースを示す。いくつかの実施形態では、タッチス感知面195は、任意選択的に、タッチス感知面195上での接触の強度を検出するための1つ以上の接触強度センサ(例えば、接触強度センサ(単数又は複数)359のうちの1つ以上)及び/又はタッチ感知面195のユーザの触知出力を生成するための1つ以上の触知出力生成器357を含む。
以下の実施例のうちのいくつかはタッチスクリーン112上での入力(タッチ感知面とディスプレイとが組み合わされた場合)を参照して説明されるが、いくつかの実施形態では、デバイスは、図1Dに示すように、ディスプレイとは別個のタッチ感知面上での入力を検出する。いくつかの実施形態では、このタッチ感知面(例えば、図1Dの195)は、ディスプレイ(例えば、194)上の主軸(例えば、図1Dの198)に対応する主軸(例えば、図1Dの199)を有する。これらの実施形態によれば、デバイスは、タッチ感知面195との接触(例えば、図1Dの197-1及び197-2)を、ディスプレイ上のそれぞれの場所に対応する場所(例えば、図1Dでは、197-1は196-1に対応し、197-2は196-2に対応する)にて検出する。このように、タッチ感知面がディスプレイとは別個のものである時、タッチ感知面(例えば、図1Dの195)上でデバイスによって検出されたユーザ入力(例えば、接触197-1及び197-2、及びそれらの動き)は、多機能デバイスのディスプレイ(例えば、図1Dの194)上のユーザインタフェースを操作するためにデバイスによって使用される。同様の方法が、本明細書に記載の他のユーザインタフェースに任意選択的に使用されることを理解されたい。
更に加えて、以下の実施例は主に指入力(例えば、指の接触、指のタップジェスチャ、指のスワイプジェスチャ)を参照して説明されるが、いくつかの実施形態では、それらの指入力のうちの1つ以上は、別の入力デバイスからの入力(例えば、マウスに基づく入力、又はスタイラス入力)で置き換えられることを理解されたい。例えば、スワイプジェスチャは、任意選択的に、(例えば、接触の代わりに)マウスクリックと置換され、その後、(例えば、接触の移動の代わりに)スワイプの経路に沿ってカーソルの移動が行われる。別の例として、タップジェスチャは、(例えば、接触の検出に続いて接触の検出を停止する代わりに)カーソルがタップジェスチャの位置上に配置されている間、任意選択的に、マウスクリックで置換される。同様に、複数のユーザ入力が同時に検出されるとき、複数のコンピュータマウスが同時に、任意選択的に用いられているか、又はマウスと指接触が任意選択的に同時に用いられていることが理解されよう。
本明細書にて使用されるとき、用語「フォーカスセレクタ」とは、ユーザが対話しているユーザインタフェースの現在の部分を示す入力要素を指す。カーソル又は他の位置マーカを含むいくつかの実装において、タッチ感知面(例えば、図1Dのタッチ感知面195(いくつかの実施形態では、タッチ感知面195はタッチパッドである))上で入力(例えば、押圧入力)が検出された時に、カーソルが特定のユーザインタフェース要素(例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインタフェース要素)の上にあるとき、カーソルは「フォーカスセレクタ」として機能し、特定のユーザインタフェース要素が、検出された入力に従って調整される。タッチスクリーンディスプレイ上のユーザインタフェース要素との直接的な対話を可能にする、タッチスクリーンディスプレイ(例えば、図1Aのタッチ感知ディスプレイシステム112、又はタッチスクリーン112)を含むいくつかの実装では、タッチスクリーン上で検出される接触が「フォーカスセレクタ」の役割を果たすため、入力(例えば、接触による押圧入力)が、タッチスクリーンディスプレイ上の特定のユーザインタフェース要素(例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインタフェース要素)の場所で検出されると、その特定のユーザインタフェース要素が、検出された入力に従って調節される。いくつかの実装では、(例えば、タブキー又は矢印キーを使ってフォーカスを1つのボタンから別のボタンに移動させることにより)タッチスクリーンディスプレイ上の対応するカーソルの移動又は接触の移動なしに、フォーカスが、ユーザインタフェースの1つの領域からユーザインタフェースの別の領域に移動される。これらの実装では、フォーカスセレクタは、ユーザインタフェースの異なる領域間でのフォーカスの移動に従って移動する。フォーカスセレクタが採用する具体的な形態とは関わりなく、フォーカスセレクタは、全般的に、ユーザが意図するユーザインタフェースとの対話を(例えば、ユーザが対話することを意図しているユーザインタフェース要素をデバイスに示すことによって)通信するようにユーザによって制御されるユーザインタフェース要素(又は、タッチスクリーンディスプレイ上での接触)である。例えば、押圧入力がタッチ感知面(例えば、タッチパッド又はタッチ感知ディスプレイ)上で検出されたときに、対応するボタンの上にあるフォーカスセレクタ(例えば、カーソル、接触又は選択ボックス)の位置は、(デバイスのディスプレイ上に示されている他のユーザインタフェース要素ではなく)対応するボタンをユーザがアクティブ化しようとしていることを示すものである。
次に、デバイス100などの、ディスプレイ及びタッチ感知面を備える電子デバイスに実装し得るユーザインタフェース(「UI」)の実施形態及び関連プロセスに注目する。
図2は、いくつかの実施形態に係る、アプリケーションのメニューのためのユーザインタフェースを示すために使用される、タッチスクリーンの概略図である。任意選択的に、同様のユーザインタフェースがデバイス100(図1A)上に実装される。いくつかの実施形態では、アプリケーションのメニューのためのユーザインタフェースは、以下の要素、又はそれらのサブセット若しくはスーパーセットを含む。
●セルラー信号及びWi-Fi信号などの無線通信(単数又は複数)のための信号強度インジケータ(単数又は複数)202、
●時刻203、
●Bluetooth(登録商標)インジケータ205、
●バッテリ状態インジケータ206、
●下記などの、頻繁に利用されるアプリケーション用のアイコンを備えるトレー209、
○不在着信又はボイスメールメッセージの数のインジケータ214を任意選択的に含む、「電話」とラベル付けされる、電話モジュール138用のアイコン216、
○未読電子メールの数のインジケータ210を任意選択的に含む、「メール」とラベル付けされた、電子メールクライアントモジュール140用のアイコン218、
○「ブラウザ」とラベル付けされる、ブラウザモジュール147用のアイコン220、及び
○「iPod(登録商標)」とラベル付けされた、IPOD(登録商標)(APPLE Inc.の商標)モジュール152とも称されるビデオ及び音楽プレーヤモジュール152用のアイコン222、並びに
●下記などの、その他のアプリケーション用のアイコン、
○「メッセージ」とラベル付けされる、IMモジュール141用のアイコン224、
○「カレンダー」とラベル付けされる、カレンダーモジュール148用のアイコン226、
○「写真」とラベル付けされる、画像管理モジュール144用のアイコン228、
○「カメラ」とラベル付けされる、カメラモジュール143用のアイコン230、
○「オンラインビデオ」とラベル付けされる、オンラインビデオモジュール155用のアイコン232、
○「株価」とラベル付けされる株価ウィジェット149-2用のアイコン234、
○「マップ」とラベル付けされる、地図モジュール154用のアイコン236、
○「天気」とラベル付けされる、気象ウィジェット149-1用のアイコン238、
○「時計」とラベル付けされる、アラーム時計ウィジェット149-4用のアイコン240、
○「フィットネス」とラベル付けされる、フィットネスモジュール142用のアイコン242、
○「メモ」とラベル付けされる、メモモジュール153用のアイコン244、
○デバイス100及びそのさまざまなアプリケーションに関する設定へのアクセスを提供する、設定アプリケーション若しくはモジュール用のアイコン246、及び
○App Store、iTunes(登録商標)、ボイスメモ、及びユーティリティなどの、追加のアプリケーション用の他のアイコン。
図2に示されているアイコンのラベルは、単に例示的であることに留意されたい。他のラベルが、さまざまなアプリケーションアイコンのために、任意選択的に使用される。例えば、フィットネスモジュール142のためのアイコン242は、代替的には「フィットネスサポート」、「トレーニング」、「トレーニングサポート」、「エクササイズ」、「エクササイズサポート」、又は「健康」とラベル付けされる。いくつかの実施形態では、各アプリケーションアイコンに関するラベルは、各アプリケーションアイコンに対応するアプリケーションの名称を含む。いくつかの実施形態では、特定のアプリケーションアイコンのラベルは、特定のアプリケーションアイコンに対応するアプリケーションの名称とは異なる。
図3A~図3Bは、いくつかの実施形態に係る、(例えば、デバイス100の特定のユーザの)カレンダー項目を記憶するためのデータ構造を示すブロック図である。図3Aに示すように、カレンダー項目のデータ構造302は、デバイス100のそれぞれの特定のユーザについてのテーブルの集合として任意選択的に実装される、デバイス100の特定のユーザと関連付けられたカレンダー項目をそれぞれ記憶するデータ構造302の集合を含む(例えば、カレンダー項目のデータ構造302-1は、デバイス100のユーザ1のカレンダー項目を記憶し、カレンダー項目のデータ構造302-2は、デバイス100のユーザ2のカレンダー項目を記憶する)。いくつかの実施形態では、カレンダー項目のデータ構造の集合中のそれぞれのテーブル(例えば、テーブル302-1、302-2、302-3...302-N)は、デバイスの2人以上のユーザのカレンダー項目を記憶する。
いくつかの実施形態では、1つ以上のカレンダー項目のデータ構造302(例えば、カレンダー項目のデータ構造302-1、図3B)は、デバイス100のユーザと関連付けられたカレンダー項目を記憶するために使用される。図3Bに示すように、カレンダー項目のデータ構造302-1は、ユーザ1のカレンダー項目と関連付けられたデータ(例えば、カレンダー項目ID、タイトル、位置、日時、出発時刻リマインダ及びアラート)を包含する。いくつかの実施形態では、データは、個々のレコード312-1、312-2、312-3~312-Nに記憶される。いくつかの実施形態では、ヘッダフィールド312-0は、対応するレコードのそれぞれと関連付けられた情報のそれぞれのフィールドについて記述するために使用される。ヘッダ312-0は、いくつかの実施形態では、テーブル内に記憶された情報のそれぞれのフィールド(例えば、レコードのそれぞれと関連付けられたそれぞれのフィールド)の概要を包含する。図3Bに示すように、ヘッダ312-0は、それぞれのレコード312-1、312-2、312-3~312-Nが、以下の情報及びデータ構造、あるいはそれらのサブセット又はスーパーセットを記憶していることを示す。
●それぞれの特定のレコード(例えば、レコード312-1~312-N)を一意に識別する「カレンダー項目ID」フィールドの値;
●カレンダー項目に関する記述テキスト(例えば、図7Eのフィールド770に提供されたテキストなど、カレンダー項目を生成する時点でユーザにより提供される記述テキスト)に対応する「タイトル」フィールドの値。いくつかの状況では、タイトルは、地理的位置に対応する識別子を含む(例えば、レコード312-3の「歯科医に行く」は、(以前に訪れた住所のデータ構造402-1のレコード412-1と関連付けられた/それにより識別される「歯科医院」の以前に訪れた住所など)歯科医院の地理的位置に対応する識別子「歯科医」を含む);カレンダー項目と関連付けられた位置に関する情報(例えば、カレンダー項目を生成する時点でユーザにより提供された(例えば、図7Eのフィールド771に提供された)情報)に対応する「位置」フィールドの値。
●いくつかの状況では、ユーザは、位置に関する情報を提供すること(あるいは、位置に関する不完全な情報のみを提供すること)なく、カレンダー項目を生成する(例えば、レコード312-1は、位置フィールドに、ユーザがレコード312-1と関連付けられたカレンダー項目の位置に関するいかなる情報も提供しなかったことを示すNULL値を有する)。
●カレンダー項目の開始時刻及び終了時刻に関する情報(例えば、(例えば、図7E~図7Fに示す「終日」、「開始」、「終了」及び「繰り返し」のセクションに提供される)カレンダー項目を生成した時点にユーザにより提供された情報)に対応する「日付時間」フィールドの値;
●ユーザと関連付けられた以前に訪れた住所に基づいて、デバイス100(又は、目的地判定モジュール163など、その構成要素)によって、自動的にかつ人の介入なしに、ポピュレートされた「出発時刻リマインダ」フィールドの値(例えば、レコード312-1及び312-2はそれぞれ、タイトルフィールドの一部分に同じ識別子(「歯科医」)をそれぞれ包含するので、レコード312-3と関連付けられた以前に訪れた住所(例えば、(図6を参照して以下により詳細に論じるように)図4Bのレコード412-1)を自動的に使用して、出発時刻リマインダを生成することができる)。いくつかの実施形態又は状況では、出発時刻リマインダの値は、(例えば、ルート判定モジュール163-2によって判定される)以前に訪れた住所に到着するための最適ルートに関する情報を更に含む;及び
●カレンダー項目のアラート又はリマインダに関する情報(例えば、レコード312-1について図示されるように、「30分前」など、カレンダー項目を生成した時点でユーザにより提供された情報)に対応する「アラート」フィールドの値。
いくつかの実施形態では、カレンダー項目のデータ構造302-1は、上述したフィールドに加えて、それぞれのカレンダー項目がいつ生成されたか、及び/又はテーブル302-1にいつ記憶されたかを識別するタイムスタンプフィールド、並びに/あるいは、それぞれのカレンダー項目と関連付けられた以前に訪れた住所に対応する1つ以上の住所ID値(図4B)を含む関係する住所フィールドなどのフィールドを含む。
図3Bに示すように、カレンダー項目のデータ構造302-1は、レコード312-1、312-2、312-3~312-Nを含む。カレンダー項目のデータ構造302-1中の例示的なレコードに記憶された情報の一例として、レコード312-1は、カレンダー項目IDフィールドに値「1」を、タイトルフィールドに値「歯科医に行く」を、位置フィールドにNULL値を、日時フィールドに値「6/12/15 12PM~2PM)」を、アラートフィールドに値「30分前」を、出発時刻リマインダフィールドにNULL値を記憶する。いくつかの実施形態では、出発時刻リマインダフィールドのNULL値は、(図6の動作602を参照して以下に説明するよう)出発時刻リマインダがまだ生成されていないという指標を、デバイスに(あるいは、目的地判定モジュール163など、その構成要素に)提供する。
データ構造(例えば、テーブル)の特定の実装として示されているが、いくつかの実施形態では、図3A~図3Bのデータ構造は、XMLファイル、リレーショナルデータベース内のテーブル、テキストファイル、及び/又はデータを記憶するための任意の他の好適なフォーマットで実装される。
図4A~図4Bは、いくつかの実施形態に係る、(例えば、デバイス100の特定のユーザについての)以前に訪れた住所を記憶するためのデータ構造を示すブロック図である。図4Aに示すように、以前に訪れた住所のデータ構造402は、デバイス100のそれぞれの特定のユーザについてのテーブルの集合として任意選択的に実装される、デバイス100の特定のユーザと関連付けられた以前に訪れた住所をそれぞれ記憶するデータ構造402の集合を含む(例えば、以前に訪れた住所のデータ構造402-1は、デバイス100のユーザ1の以前に訪れた住所を記憶し、以前に訪れた住所のデータ構造402-2は、デバイス100のユーザ2の以前に訪れた住所を記憶する)。いくつかの実施形態では、カレンダー項目のデータ構造の集合中のそれぞれのテーブル(例えば、テーブル402-1、402-2、402-3...402-N)は、デバイスの2人以上のユーザの以前に訪れた住所を記憶する。
いくつかの実施形態では、1つ以上の以前に訪れた住所のデータ構造402(例えば、以前に訪れた住所のデータ構造402-1、図4B)は、デバイス100のユーザと関連付けられた以前に訪れた住所を記憶するために使用される。図4Bに示すように、以前に訪れた住所のデータ構造402-1は、ユーザ1が以前に訪れた住所と関連付けられたデータ(例えば、住所ID、名称、到着住所、出発住所、関連項目、及び到着時刻)を包含する。いくつかの実施形態では、このデータは、次のイベントに対応する以前に訪れた住所を識別することによって、位置の詳細を含まない次のイベント(例えば、カレンダー項目、テキストメッセージ中で参照されるイベントなど)について正確な出発時刻リマインダを生成するために使用される。いくつかの実施形態では、データは、個々のレコード412-1、412-2、412-3~412-Nに記憶される。いくつかの実施形態では、ヘッダフィールド412-0は、対応するレコードのそれぞれと関連付けられた情報のそれぞれのフィールドについて記述するために使用される。ヘッダ412-0は、いくつかの実施形態では、テーブル内に記憶された情報のそれぞれのフィールド(例えば、レコードのそれぞれと関連付けられたそれぞれのフィールド)の概要を包含する。図4Bに示すように、ヘッダ412-0は、それぞれのレコード412-1、412-2、412-3~412-Nが、以下の情報及びデータ構造、あるいはそれらのサブセット又はスーパーセットを記憶していることを示す。
●特定の以前に訪れた住所と関連付けられたそれぞれのレコードを一意に識別する「住所ID」フィールドの値(例えば、「1」はレコード412-1の住所IDフィールドに記憶された値である);
●特定の以前に訪れた住所のテキスト記述に対応する「名称」フィールドの値(例えば、「歯科医院」はレコード412-1の名称フィールドに記憶された値である)。いくつかの実施形態又は状況では、名称フィールドの値は、自動的にかつ人の介入なしに、レコードと関連付けられた識別子に基づいて判定される(例えば、レコード412-1がカレンダー項目3と関連付けられ、カレンダー項目3(カレンダー項目のデータ構造302-1のレコード312-3)が識別子「歯科医」を含むので、デバイスは、レコード412-1の名称フィールドの値を生成するときに同じ識別子を使用する)。いくつかの実施形態では、名称フィールドの値は、識別子に関係する用語である(識別子が「歯科医」である場合、関係する用語は、例えば、歯(単数)、歯(複数)、歯のクリーニング、歯科衛生士、歯列矯正医、歯周病専門医などを含む);
●ユーザが到達する地理的目的地に対応する住所(例えば、ストリートアドレス、GPS座標など)を識別する情報を含む「到着住所」フィールドの値(例えば、ユーザが、歯科医院のカレンダー項目を有しているが、歯科医の住所を特定するいかなる位置データもない場合、カレンダー項目で識別された時刻に特定の住所に到達すると、特定の住所を到着住所として記憶するために、以前に訪れた住所のデータ構造402-1中のレコードを更新する);
●特定の到着住所に到達するために出発した時刻におけるユーザの地理的位置に対応する住所(例えば、ストリートアドレス、GPS座標など)を識別する情報を含む任意選択の「出発住所」フィールドの値(例えば、ユーザが歯科医のアポイントメントについてのカレンダー項目を有し、歯科医のアポイントメントに向かうことを示す時刻に特定の住所から出発した場合、カレンダー項目中で識別された時刻にアポイントメントに到達すると、以前に訪れた住所のデータ構造402-1中のレコードは、特定の住所を出発住所として記憶するために更新される);
●(識別子(「私は今、歯科医に向かっている」)を含む関係するメッセージ(例えば、電子メール)、関係するカレンダー項目(図3Bのレコード312-3について示すように「歯科医の検診」のタイトルフィールドの値を備える「カレンダー項目」、など))など、1つ以上の関係する項目を識別する情報を含む「関連項目」フィールドの値(例えば、それぞれのレコードと関連付けられた識別子(例えば、「歯科医」)を含むコンテンツ項目);及び
●ユーザが到着住所に対応する地理的位置に到着時刻を識別する情報を含む任意選択の「到着時間」フィールドの値。
いくつかの実施形態では、以前に使用した住所のデータ構造402-1は、上述したフィールドに加えて、いつユーザが到着住所に向けて出発したかを識別する情報を含む「出発時刻」フィールド、及び/又は出発住所と到着住所との間でユーザが移動したルートを識別する情報を含む「使用ルート」フィールドなどのフィールドを含む。いくつかの実施形態では、これらの追加のフィールドは、デバイスがユーザと関連付けられたパターンを予測するのを助けるために(例えば、ユーザにとって最もよく使用されるルート又は最も一般的な出発時刻を識別し、予測するために)使用される。
図4Bに示すように、以前に訪れた住所のデータ構造402-1は、レコード412-1~412-Nを含む。以前に訪れた住所のデータ構造402-1中の例示的なレコードに記憶された情報の一例として、レコード412-1は、住所IDフィールド値「1」を、タイトルフィールドに値「歯科医」を、到着住所フィールドに値「123N.12345,州,市,歯科医通り」を、出発住所フィールドに値「88W.12345、州、市、2番地」を、関連項目フィールドに「カレンダー項目3、メッセージ23」を、到着時刻フィールドに値「5/12/14,11:15AM」を記憶する。いくつかの実施形態では、以前に訪れた住所のデータ構造402-1内のレコードは、所定の時間間隔で(例えば、1時間おき、4時間おき、毎日、デバイスがアイドル状態であるときに)生成される。
いくつかの実施形態では、以前に訪れた住所のデータ構造402は、(図6の動作620及び622に関して以下に説明するように)デバイス100上で実行するバックグラウンドプロセス中に予めポピュレートされる。
いくつかの実施形態では、以前に訪れた住所402はまた、デバイス100のユーザと関連付けられたプライバシー設定に関する情報を記憶する。例えば、デバイス100のユーザは、以前に訪れた住所の記憶域と関連付けられたプライバシー設定を構成することが可能である。いくつかの実施形態では、ユーザは、以前に訪れた住所のデータ構造402中のそれぞれのレコード内に含まれている全ての情報(例えば、名称、到着住所、出発住所、関連項目、到着時刻など)についてのデータ収集設定を構成することが可能である。例えば、ユーザは、第1のアプリケーションについて、プライバシー設定を構成することができ、それにより、デバイス100(又は、地図モジュール154など、その構成要素)は、出発住所を収集せずに、関連項目、到着住所及び到着時刻に関する情報を収集する。別の例として、(上述の第1のアプリケーションとは別個の)第2のアプリケーションについて、ユーザは、デバイス100(又は、地図モジュール154など、その構成要素)が、以前に訪れた住所に関するいかなる情報も収集しないようにプライバシー設定を構成することができる。このようにすると、ユーザは、デバイス100上の以前に訪れた住所の収集を制御することが可能であり、デバイス100上で利用可能なそれぞれのアプリケーション(例えば、アプリケーション136のそれぞれ、図1A)について、以前に訪れた住所の収集に関する個人的な好みに基づいて、適切なプライバシー設定を選択することが可能である。
データ構造(例えば、テーブル)の特定の実装として示されているが、いくつかの実施形態では、図4A~図4Bのデータ構造は、XMLファイル、リレーショナルデータベース内のテーブル、テキストファイル、及び/又はデータを記憶するための任意の他の好適なフォーマットで実装される。
図5は、いくつかの実施形態に係る、例示的な出発時刻リマインダ生成システムを示すブロック図である。図5に示すように、出発時刻リマインダ生成システム500は、ポータブル多機能デバイス100を含み、1つ以上のサーバ502を更に含む。ポータブル多機能デバイス100は、1つ以上のネットワーク上で、1つ以上のサーバ502と通信する。1つ以上のネットワーク(例えば、ネットワーク(単数又は複数)520)は、出発時刻リマインダ生成システム500のそれぞれの構成要素を、出発時刻リマインダ生成システム500の他の構成要素と通信可能に接続する。いくつかの実施形態では、1つ以上のネットワーク520は、公衆通信網、専用通信網、又は公衆通信網と専用通信網の双方の組合せを含む。例えば、1つ以上のネットワーク520は、インターネット、他のワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、仮想プライベートネットワーク(VPN)、メトロポリタンエリアネットワーク(MAN)、ピアツーピアネットワーク、及び/又はアドホック接続など、任意のネットワーク(又は、ネットワークの組合せ)であり得る。
いくつかの実施形態では、1つ以上の以前に訪れた住所のデータ構造402は、ポータブル多機能デバイス100上に記憶され、1つ以上の他の以前に訪れた住所のデータ構造402は、1つ以上のサーバ502上に記憶される。いくつかの実施形態では、ポータブル多機能デバイス100が、以前に訪れた住所のデータ構造402を記憶する一方で、他の実施形態では、1つ以上のサーバ502が、以前に訪れた住所のデータ構造402を記憶する。同様に、いくつかの実施形態では、1つ以上のカレンダー項目のデータ構造302は、ポータブル多機能デバイス100上に記憶され、1つ以上の他のカレンダー項目のデータ構造302は、1つ以上のサーバ502上に記憶される。いくつかの実施形態では、ポータブル多機能デバイス100が、カレンダー項目のデータ構造302を記憶する一方で、他の実施形態では、1つ以上のサーバ502が、カレンダー項目のデータ構造302を記憶する。
1つ以上の以前に訪れた住所402のテーブル又は1つ以上のカレンダー項目のデータ構造302が、1つ以上のサーバ502上に記憶される実施形態では、目的地判定モジュール163(及び、目的地予測モジュール163-1、ルート判定モジュール163-2及び出発リマインドモジュール163-3など、その構成要素)により実行される機能のうちのいくつかは、1つ以上のサーバ502において実行される。これらの実施形態では、ネットワーク520を介して、1つ以上のサーバ502とデバイス100との間で情報が交換される。例えば、1つ以上のサーバ502が第1のユーザの以前に訪れた住所のデータ構造402を記憶する場合、いくつかの実施形態では、デバイス100は、第1のユーザと関連付けられたデータ(例えば、GPSモジュール135により収集された位置データ、図1A)を、1つ以上のサーバ502に送信する。いくつかの実施形態では、1つ以上のサーバ502は、次いで、受信したデータをマイニングして、(図4A~図4Bに関して上記で論じたように)カレンダー項目についての目的地を予測し、カレンダー項目についての出発時刻リマインダを生成する。1つ以上のサーバ502はまた、生成した出発時刻リマインダをデバイス100に送信する(あるいは代替的には、デバイスにおいて提示するために、生成したリマインダと関連付けられた情報を送信する)。このようにすると、1つ以上のサーバ502により、いつ出発すべきかに関する計算を処理することができ、計算の精度を維持するためには、デバイス100からの臨時GPSピングしか必要ではない(このようにすると、出発時刻リマインダ生成システム500は、デバイス100のバッテリ寿命を延長することが可能である)。いくつかの実施形態では、1つ以上のサーバ502に送信されるデータは、制限された範囲のものであり、したがって、第1のユーザが訪れた住所に関係する情報のみを包含する(上述のように、ユーザはまた、このデータの収集をカバーするプライバシー設定を構成し、また、これらのプライバシー設定により、いくつかの実施形態では、ユーザが1つ以上のサーバ502とのデータの交換を制御、制限する又はなくすことが可能になる)。
図6は、いくつかの実施形態に係る、インテリジェントな出発時刻リマインダを生成し、提供するための方法600を示すフローチャートである。図3A~図3B、図4A~図4B、図5及び図7A~図7Fを使用して、図6の方法及び/又はプロセスを示す。以下の実施例のうちのいくつかは、(タッチ感知面とディスプレイとを組合せた)タッチスクリーン上での入力を参照して説明されるが、いくつかの実施形態では、デバイスは、図1Dに示すように、ディスプレイ194とは別個のタッチ感知面195上で入力を検出する。
いくつかの実施形態では、方法600は、電子デバイス(例えば、ポータブル多機能デバイス100、図1A)、及び/又は電子デバイス(例えば、I/Oサブシステム106、オペレーティングシステム126など)の1つ以上の構成要素により実行される。いくつかの実施形態では、方法600は、非一時的コンピュータ可読記憶媒体に記憶され、デバイス100の1つ以上のプロセッサ122(図1A)など、デバイスの1つ以上のプロセッサによって実行される命令によって統御される。説明を簡単にするために、以下に、デバイス100により実行されるものとして方法600を説明する。いくつかの実施形態では、図1Aを参照すると、方法600の動作は、少なくとも部分的に、目的地判定モジュール(例えば、目的地判定モジュール163)、以前に訪れた住所(例えば、以前に訪れた住所402)、カレンダー項目のデータ構造(例えば、カレンダー項目のデータ構造302)、目的地予測モジュール(例えば、目的地予測モジュール163-1)、ルート判定モジュール(例えば、ルート判定モジュール163-2)、出発リマインドモジュール(例えば、出発リマインドモジュール163-3)、グラフィックモジュール(例えば、グラフィックモジュール132)、及びタッチ感知ディスプレイ(例えば、タッチ感知ディスプレイシステム112)によって実行されるか、又はそれらを使用する。方法600のいくつかの動作を任意選択的に組合せ、及び/又はいくつかの動作の順序を任意選択的に変更する。
以下に説明するように、方法600(及び、関連付けられたインタフェース)は、インテリジェントな出発時刻リマインダを生成し、それをタッチ感知ディスプレイを備える電子デバイス上に提供する直観的な方法を提供する。方法600は、ユーザが、最小量のテキスト入力でカレンダー項目を迅速に生成し、次いで、自動的にかつ人の介入なしに、最小量のテキスト入力のみに基づいて、カレンダー項目に対応する地理的目的地を判定することを可能にすることによって、出発時刻リマインダを生成するためのプロセスを合理化する。したがって、ユーザは、電子デバイス上にカレンダー項目を迅速に生成し続けることが可能であり、方法600を利用することによって、電子デバイスは、カレンダー項目についてのインテリジェントな出発時刻リマインダをシームレスに生成することが可能である。このようにすると、かかる方法600は、ユーザが適時にイベントに到着することを保証するのを助ける。したがって、方法600は、認知負担、及びユーザがカレンダー項目を生成するために費やさなければならない時間を低減し、それにより、より効率的なヒューマン-マシンインタフェースが生成される。バッテリ動作電子デバイスの場合、(例えば、特定の位置の詳細なしに生成されたカレンダー項目についての目的地として、以前に訪れた住所を自動的に識別するなど、広範なユーザ対話を従来は必要とするタスクを自動的に実行することによって)より高速、より効率的にインテリジェントな出発時刻リマインダを生成し、提供することにより、節電するだけでなく、バッテリ充電の間隔を増大させる。
いくつかの実施形態では、デバイスは、開始時刻及び不明の場所を有する次のイベントを識別する(620)。例えば、デバイスは、「今日2:30PMの歯科医とのアポイントメントを覚えておくこと」というテキストメッセージを受信する。テキストメッセージの内容は、デバイスが識別することができる次のイベント、今日2:30PMの開始時刻及び不明の場所を有する次のイベント(即ち、この1つのテキストメッセージの文脈において、このメッセージの内容は、歯科医院が位置する場所を含まないので不明である)を含む。次のイベントを識別した後、いくつかの実施形態では、デバイスは、(例えばGPSモジュール135を使用して)デバイスの現在地を(例えば、デバイス100上でバックグラウンドで実行するプロセスを使用して)監視し、デバイスが(例えば、加速度計168及び/又はGPSモジュール135により示されるように)移動している時には、デバイスは、現在地が任意の歯科医院に近いかどうかをチェックする。デバイスがもはや移動しておらず、(例えば、デバイスの現在地と地図モジュール154によって判定された歯科医院の位置に関する情報とを比較することによって)デバイスが歯科医院に又はその近くに到着した(例えば、移動が止まった)という判定に従って、デバイスは、次のイベントを地理的位置と関連付ける(622)。他の実施形態では、アポイントメント又はイベント時刻に、GPSモジュール135は、デバイスの位置を判定し、デバイスは、次のイベントをその位置と関連付ける(622)。いくつかの実施形態では、次のイベントを地理的位置と関連付けることは、以前に訪れた住所のデータ構造402にレコードを追加することを含む(例えば、レコード412-1は、メッセージ23と関連付けられていることを示す)。
いくつかの実施形態では、デバイスは、デバイス上の1つ以上の項目(例えば、テキストメッセージ、電子メールメッセージ、音声メッセージ、カレンダー項目、メモ、及び次のイベントに関する情報を包含する任意の他の項目)と関連付けられた内容に基づいて、(例えば、目的地判定モジュール163により判定される)次のイベントを継続的に監視する。次のイベントを継続的に監視し、次のイベントを対応する地理的位置と関連付けることによって、デバイスは、特定の識別子(例えば、歯科医)と関連付けられた以前に訪れた住所の包括的なデータベース(例えば、以前に訪れた住所のデータ構造402-1、図4B)を事前に構築することが可能であり、デバイスは、その包括的なデータベースを使用して、イベントの場所に関するいかなる情報もまだ含んでいないことがある、イベントのインテリジェントな出発時刻リマインダ(例えば、カレンダー項目)を生成する。
いくつかの実施形態では、デバイスは、自動的にかつ人の介入なしに、第1の識別子を含むカレンダー項目を識別する(602)。例えば、カレンダー項目は、「歯科医に行く」というタイトルを備えるカレンダー項目など、場所を全般的に説明するカレンダー項目のタイトル中のテキスト(例えば、タイトルは第1の識別子を含む)に基づいて識別される(例えば、レコード312-1と関連付けられたカレンダー項目は、第1の識別子「歯科医」を含む、図3B)。いくつかの実施形態では、第1の識別子は、(例えば、カレンダー項目のデータ構造302-1の位置フィールドに記憶されたNULL値により示されるように、カレンダー項目に知られていない)不明の地理的位置に対応する。いくつかの実施形態では、地理的位置は、カレンダー項目が以前に訪れた住所に(最初に)気づいていない場合であっても、以前に訪れた住所(例えば、動作620~622に関して上記で論じた地理的位置)として、デバイスに知られ得る。いくつかの実施形態では、デバイスは、(以下で説明するように)第1の識別子を使用して以前に訪れた住所を検索し、第1の識別子に対応する以前に訪れた住所を識別することによって不明の場所を求める。
いくつかの実施形態では、デバイスは、自動的にかつ人の介入なしに、(例えば、識別子(例えば、歯科医、又は、歯(単数)、歯(複数)、歯周病専門医、歯列矯正医などの関係する用語など)を使用して、以前に訪れた住所402のデータ構造においてルックアップを実行することによって)第1の識別子と関連付けられた以前に訪れた住所(例えば、ストリートアドレス、及び/又はストリートアドレスに対応するGPS座標)を取り出す(604)。例えば、以前に訪れた住所と第1の識別子との間の関連付けは、第1の識別子が、関連項目(例えば、別のカレンダー項目、特定のテキストメッセージ、特定のテキストメッセージを含む会話、又は電子メールメッセージ)中に以前に現れていたことに起因し得る。1つの例示的な関連項目は、「3PMの歯科検診を覚えておく」というテキストメッセージである。この実施例を引き続き参照すると、ユーザは次いで、第1の住所を離れ、その後、第2の住所に到着する(例えば、ユーザは次いで、2:55PMに歯科医の住所に到達し、テキストメッセージからの識別子に基づいて、以前に訪れた住所のデータ構造402のレコード412-1について図示したように、識別子「歯科医」のについて以前に訪れた住所のデータ構造402中に、新しいレコードが生成される、図4B)。更に、本実施例の新しいレコードは、関連項目との関連付けを含む(例えば、レコード412-1の関連項目フィールドの値は、「メッセージ23」などの関連項目を識別する情報を含む)。
いくつかの実施形態では、以前に訪れた住所は、デバイスのユーザと関連付けられた以前に訪れた住所のデータベースから(例えば、ユーザ1に対応する以前に訪れた住所のデータ構造402-1など、ユーザと関連付けられたそれぞれの以前に訪れた住所のデータ構造402から、図4B)、(例えば、目的地判定モジュール163によって)取り出される。いくつかの実施形態では、以前に訪れた住所のデータベース中の以前に訪れた住所のそれぞれは、電子デバイスのユーザが以前に訪れた住所に対応する(例えば、データ構造402-1内に包含されるそれぞれのレコードは、ユーザ1が訪れた住所に対応する)。いくつかの実施形態では、以前に訪れた住所を取り出すことは、第1の識別子を使用して、以前に訪れた住所のデータベース中でルックアップを実行することを含む(例えば、名称フィールドの値「歯科医」を備える全てのレコードについて、以前に訪れた住所のデータ構造402-1にクエリをサブミットする)。代替的には、いくつかの実施形態では、ルックアップは、第1の識別子に関係する第2の識別子(例えば、「医療専門家」などの第1の識別子を含むカテゴリー)を使用して実行される。これらの実施形態のうちのいくつかでは、第2の識別子を使用して、第1の識別子を使用するデータベースクエリが空又はnullレコードセットを戻すときにルックアップを実行する。
いくつかの実施形態では、デバイスは、ユーザから、以前に訪れた住所がカレンダー項目に対応する確認を受信する(606)。図7Aに示すように、デバイスは、ユーザに、以前に訪れた住所がカレンダー項目に対応することをユーザが確認することを可能にするユーザインタフェースオブジェクトを提示する。例えば、提示されたユーザインタフェースオブジェクトは、上部通知部710(あるいは代替的には、下部通知部712)内に表示され、任意選択のアイコン750、以前に訪れた住所とカレンダー項目との間の対応を確認又は拒絶するための選択可能なアフォーダンスを備える確認ダイアログ758、並びに(例えば、識別子「歯科医」がカレンダー項目のタイトルに現れていること、及びユーザが歯科医の住所を以前に訪れたことがあることに基づいて)ユーザインタフェースオブジェクトがなぜ提示されたかに関する指標をユーザに提供する示唆理由714、を含む。いくつかの実施形態では、アイコン750は、カレンダーアプリケーション(例えば、カレンダーモジュール148、図1A)と関連付けられたアイコン対応し、アイコン750の選択を検出したことに応じて、デバイスは、カレンダーアプリケーション内にカレンダー項目を表示する。いくつかの実施形態では、確認ダイアログ758は、「123N.歯科医を、12PMの次の「歯科検診」イベントの住所として確認するか?」など、確認を要求するテキスト記述を含む。確認ダイアログ758内に表示された「はい」ボタンの選択を検出したことに応じて、デバイスは、確認ダイアログ758の表示を停止しカレンダー項目を更新して、以前に訪れた住所との関連付けを含める(例えば、NULLの代わりに位置フィールドの値「住所1」を有するようにレコード312-1、図3Bを更新する)。
確認ダイアログ758内に表示された「いいえ」ボタンの選択を検出したことに応じて、デバイスは、確認ダイアログ758の表示を中止し、カレンダー項目の更新を取り止める(例えば、レコード312-1、図3Bの位置フィールドの値を更新しない)。代替的には、いくつかの実施形態では、「いいえ」ボタンの選択を検出したことに応じて、デバイスは、カレンダー項目について異なる以前に訪れた住所を識別することができるかどうかを判定するために、取り出し動作604に戻る。いくつかの実施形態では、示唆理由アフォーダンス714の選択を検出したことに応じて、デバイスは、(図4A~図4Bに関して上記で論じた)以前に訪れた住所の集合と関連付けられたプライバシー設定をユーザが構成することを可能にするユーザインタフェースを表示する。いくつかの実施形態では、ユーザインタフェースオブジェクトはまた、(図7Cを参照して論じるように、却下アフォーダンス713と同様の)ユーザインタフェースオブジェクトをユーザが却下することを可能にするアフォーダンス(例えば、「x」又は「クローズ」アフォーダンス)を含む。
いくつかの実施形態では、図7Aに示すように、デバイスは、ユーザから、(例えば、以前に訪れた住所を取り出す前に、及び/又は出発時刻を判定する前に)カレンダー項目について出発時刻を判定すべきであるという確認を受信する。図7Aに示すように、デバイスは、出発時刻を自動的に判定すべきであることをユーザが確認することを可能にするユーザインタフェースオブジェクトを提示する。例えば、提示されたユーザインタフェースオブジェクトは、下部通知部712(あるいは代替的には、上部通知部710)内に表示され、任意選択のアイコン750、カレンダー項目についての出発時刻の生成を確認又は拒絶するための選択可能なアフォーダンスを備える確認ダイアログ772、並びに(例えば、図3Bのレコード312-1について図示したように、カレンダー項目のデータ構造302内のレコードの位置フィールドにNULL値が存在することを示すことによって、例えば、カレンダー項目がいかなる位置情報もなく生成されること基づいて)ユーザインタフェースオブジェクトがなぜ提示されたかに関する指標をユーザに提供する示唆理由714、を含む。いくつかの実施形態では、アイコン750は、カレンダーアプリケーション(例えば、カレンダーモジュール148、図1A)と関連付けられたアイコン対応し、アイコン750の選択を検出したことに応じて、デバイスは、カレンダーアプリケーション内にカレンダー項目を表示する。いくつかの実施形態では、確認ダイアログ772は、「次の『歯科検診』イベントについての自動出発リマインダが必要か?」など、確認を要求するテキスト記述を含む。確認ダイアログ772内に表示された「はい」ボタンの選択を検出したことに応じて、デバイスは、確認ダイアログ772の表示を中止し、上記で論じた取り出し動作604を進める。確認ダイアログ772内に表示された「いいえ」ボタンの選択を検出したことに応じて、デバイスは、確認ダイアログ772の表示を中止し、任意選択的に、出発時刻を必要としない(例えば、NULLの代わりに、取り下げるべき位置フィールドの値を更新する)として、カレンダー項目(例えば、レコード312-1、図3B)に対応するレコードにフラグを立てる。いくつかの実施形態では、示唆理由アフォーダンス714の選択を検出したことに応じて、デバイスは、(図4A~図4Bに関して上記で論じた)以前に訪れた住所の集合と関連付けられたプライバシー設定をユーザが構成することを可能にするユーザインタフェースを表示する。いくつかの実施形態では、ユーザインタフェースオブジェクトはまた、(図7Cを参照して論じるように、却下アフォーダンス713と同様の)ユーザインタフェースオブジェクトをユーザが却下することを可能にするアフォーダンス(例えば、「x」又は「クローズ」アフォーダンス)を含む。
いくつかの実施形態では、デバイスは、自動的にかつ人の介入なしに、以前に訪れた住所に基づいて(例えば、デバイスの現在地から以前に訪れた住所までのルートに基づいて)カレンダー項目の出発時刻を判定する(608)。いくつかの実施形態では、出発時刻を判定することは、(i)電子デバイスに対応する現在の住所(例えば、デバイスの現在のGPS座標又はそれに対応する住所)を判定すること、(ii)現在の住所から以前に訪れた住所までのルートを判定することと、(iii)ユーザが、カレンダー項目と関連付けられた開始時刻から所定の時間量(例えば、5分、10分、15分など)以内で以前に訪れた住所に到達するように、ルートを完了する時間量に基づいて出発時刻を判定することと(例えば、開始時刻は、日時フィールドに記憶された値に基づいて、カレンダー項目のデータ構造302から取り出される)、を含む。
いくつかの実施形態では、出発時刻は、最初、ユーザと関連付けられたデフォルト出発住所(例えば、ユーザの自宅の住所、職場の住所、又は何らかの他の最もしばしば使用される住所)に基づいて、第1の時点で判定される。いくつかの実施形態では、第1の時点は、以前に訪れた住所が取り出される時間である一方で、他の実施形態では、第1の時点は、カレンダー項目の開始時刻に基づいて判定される(例えば、カレンダー項目の開始時刻が2時間後に始まるとスケジュールされているときに、最初の出発時刻が判定される)。いくつかの実施形態では、デバイスは、その後(第2の時点において)、(例えば、ユーザが、デフォルト出発住所から離れた閾値距離だけ移動したので、又は、カレンダー項目の開始時刻が、30分後に始まるようにスケジュールされているので)最初の出発時刻を再計算/再判定する必要があるかどうかをチェックする。ユーザがデフォルト出発住所から離れて閾値距離だけ移動した、又はカレンダー項目の開始時刻が所定の時間量以内であるという判定に従って、デバイスは、デバイスの現在地に基づいて、カレンダー項目の新しい出発時刻を判定する(即ち、デバイスの現在地は、デフォルト出発住所ではなく、その時点の出発住所である)。
いくつかの実施形態では、ルートは、デバイスのユーザと関連付けられたルート選択の好みに従って、現在の住所から以前に訪れた住所までの複数の利用可能なルートから選択される。例示的なルート選択の好みは、道路タイプの好み(例えば、高速道路を回避する)、タイミングの好み(例えば、カレンダー項目の開始時刻の15分以内に住所に到達する)、並びに交通手段の好み(例えば、以前に訪れた住所が現在の住所から3マイル以内である及び/又は天気が良い場合には、徒歩を好む)を含む。いくつかの実施形態では、現在の住所は、以前に訪れた住所のデータ構造402の出発住所フィールドに記憶される。いくつかの実施形態では、判定動作(i)~(iii)は、カレンダー項目の開始時刻に対して所定の時間間隔で(例えば、開始時刻の1日前に)実行される。いくつかの実施形態では、判定動作(i)~(iii)は、第1の時刻に実行され、次いで、現在の交通状態に基づいてルートが依然として最適ルートであることを確認するために、その後(例えば、カレンダー項目の開始時刻に近い第2の時刻)に繰り返される。
いくつかの実施形態では、デバイスは、判定した出発時刻をカレンダー項目と関連付ける(610)(例えば、カレンダー項目のデータ構造302-1のレコード312-3について図示するように、判定した出発時刻との関連付けを含めるために、カレンダー項目のデータ構造302の中のレコードを更新し、出発時刻リマインダフィールドは、レコード312-3に対応するカレンダー項目の判定した出発時刻である値「5/12/14、11:25AM」のを包含する)。いくつかの実施形態では、判定した出発時刻をカレンダー項目と関連付けることは、リマインダ(例えば、視覚リマインダ、触覚リマインダ(振動)、及び/又は聴覚リマインダ)を生成することと、カレンダー項目を更新して、生成したリマインダを含めることと、を含む(612)。いくつかの実施形態では、生成したリマインダは、カレンダー項目と関連付けられたデフォルトリマインダ(例えば、カレンダー項目のデータ構造302-1、図3Bのアラートフィールド中の値)とは別個である。
いくつかの実施形態では、デバイスは、電子デバイス上で、カレンダー項目の判定した出発時刻のユーザに、生成したリマインダを提供する(614)(例えば、図7Bのユーザインタフェースオブジェクト702などのタッチ感知ディスプレイ上に視覚リマインダを表示する、触覚リマインダをデバイスに出力させる、及び/又は、リマインダに対応するオーディオ出力をデバイスに生成させる)。いくつかの実施形態では、リマインダを提供することは、出発時刻が現在時刻から所定の時間量以内であるという判定に従って、リマインダを提供すること(例えば、ロックスクリーン701上に、ユーザインタフェースオブジェクト702、図7Bを表示すること)を含む。例えば、所定の時間量は、5分、10分、15分などのデフォルト時間量であるか、あるいは、交通量の変化、及びカレンダー項目に対応する以前に訪れた住所に到達するのに必要な時間量(例えば、オフィスビルからユーザの自動車を駐車した場所まで歩くのにかかる時間)に影響を与える他の因子に関する現在の予測に基づいて計算された時間量である。いくつかの実施形態では、デバイスは、デバイスの運動データ(例えば、加速度計168及び/又はGPSモジュール135からのデータ)を監視し、その運動データを使用して、ユーザが自分の自動車を到達するためにかかる推定時間量を判定する(例えば、デバイスが(第1の時刻では)移動しておらず、(第2の時刻では)歩行者の速度で移動し、(第3の時刻では)自動車の速度で移動している場合、デバイスは、ユーザが自分の自動車に到達するために係る時間量の推定値として、第3の時刻と第1の時刻との差を使用することが可能である)。いくつかの実施形態では、デバイスは、推定時間量(又は、多数の推定値の平均)を使用して、生成したリマインダをいつユーザに提供するかを判定する。他の実施形態では、デバイスは、出発時刻にバッファを追加するために、推定時間量(又は、多くの推定値の平均)を追加し、次いで、出発時刻には、生成したリマインダが単純に提供される。
図7Bに示すように、いくつかの実施形態では、提供されたリマインダは、ユーザインタフェースオブジェクト702に表示され、あるいは代替実施形態では、デバイスのロックスクリーン701上の(以下に論じるような)ユーザインタフェースオブジェクト722に表示される。いくつかの実施形態では、ユーザインタフェースオブジェクト702は、ロックスクリーン701の中央領域に表示され、任意選択の第1のアイコン750、任意選択の第2のアイコン767、及びリマインダ742を含む。いくつかの実施形態では、第1のアイコン750は、カレンダーアプリケーション(例えば、カレンダーモジュール148、図1A)と関連付けられたアイコンに対応し、第1のアイコン750の選択を検出したことに応じて、デバイスは、(例えば、デバイスのロックを解除した後に)カレンダーアプリケーション内にカレンダー項目を表示する。いくつかの実施形態では、第2のアイコン767は、地図アプリケーション(例えば、地図モジュール154、図1A)と関連付けられたアイコンに対応し、第2のアイコン767の選択を検出したことに応じて、デバイスは、(例えば、デバイスのロックを解除した後に)以前に訪れた住所に到達するための進路変更指示を含む地図インタフェースを表示する。
いくつかの実施形態では、リマインダ(又はアラート)742は、例えば、出発時刻(例えば、11:15AM)及びカレンダー項目(例えば、「歯科検診」などのタイトル)の記述を含むテキスト記述を含む。いくつかの実施形態では、リマインダ742は、ユーザがジェスチャを使用して、リマインダと関連付けられたアクション(例えば、進路変更指示を開始し、リマインダを却下し、リマインダをスヌーズする、など)を実行するためのアフォーダンスを表示することを可能にする。図7B~図7Cに示すように、リマインダ742上を第1の方向(例えば、左方向)に移動するスワイプジェスチャ(例えば、ジェスチャ782、図7B)を検出したことに応じて、リマインダのテキスト記述は、第1の方向に移動し、それにより、その時点では、テキスト記述の一部分のみがタッチスクリーン112に見えており、アクションを実行するための1つ以上のアフォーダンス(例えば、指示開始アフォーダンス746、スヌーズアフォーダンス744、及び却下アフォーダンス713のうちの1つ以上、図7C)を表示するために、(例えば、グラフィックモジュール132によって)リマインダ742が更新される。いくつかの実施形態では、1つ以上のアフォーダンスは、スヌーズアフォーダンス744及び指示開始アフォーダンス746を含む一方で、他の実施形態では、1つ以上のアフォーダンスは、指示開始アフォーダンス746及び却下アフォーダンス713を含む。他の実施形態では、1つ以上のアフォーダンスは、指示開始アフォーダンス746、スヌーズアフォーダンス744、又は却下アフォーダンス713を含む。
次に図7Cを参照すると、いくつかの実施形態では、却下アフォーダンス713は、選択されると、デバイスにリマインダ742の表示を中止させる。いくつかの実施形態では、(本明細書では、進路変更指示アフォーダンス746とも称される)指示開始アフォーダンス746は、選択されると、以前に訪れた住所を目的地として事前にポピュレートし、目的地に到達するための進路変更指示を既に開始した状態で、デバイスに地図インタフェース(例えば、地図モジュール154)を表示させる。いくつかの実施形態では、地図インタフェースを表示する前に、ユーザは、デバイス100のロックを解除するためのアクション(例えば、デバイスのロックを解除するために一連の文字を入力する、口頭パスワードを提供する、指紋認証を行う、など)を実行する。他の実施形態では、指示開始アフォーダンス746は、指示開始アフォーダンス746を選択することにより、ロックスクリーン701を出ることなく、ルート選択及び進路変更指示の提供(例えば、指示に対応するオーディオ出力の提供)をデバイスに開始させることをユーザに示すテキストを含む。
いくつかの実施形態では、スヌーズアフォーダンス744は、選択されると、デバイスに、UIオブジェクト702の表示を中止させ、ユーザが選択又は事前構成した時間期間後あるいはデフォルト時間後に、UIオブジェクト702を再表示させる。いくつかの実施形態では、スヌーズアフォーダンス744は、リマインダをスヌーズする時間期間をユーザが選択することを可能にする(例えば、スヌーズアフォーダンス744は、15分間、30分間、1時間、時間が空くまで、など、選択可能なオプションを含む)。例えば、ユーザは、UIオブジェクト702を5分間スヌーズするオプションを選択し、5分後に、デバイスは、UIオブジェクト702を再表示する。別の例として、ユーザは、利用可能になるまでUIオブジェクト702をスヌーズすることを選択し(例えば、「時間が空くまでスヌーズする」)、いくつかの実施形態では、デバイス100は、カレンダーモジュール148を検索してユーザのスケジュールの次の開放スロットを識別し、識別した次の開放スロットの間にUIオブジェクト702を再表示する。
いくつかの実施形態では、ユーザはまた、進路変更指示に迅速にアクセスするために、追加のジェスチャ(例えば、図7Bのジェスチャ783)を使用することが可能である。いくつかの実施形態では、追加のジェスチャは、リマインダ742上で、第1の方向とは反対の第2の方向(例えば、右方向)に移動するスワイプジェスチャである。第2のジェスチャが第2の方向に移動していることを検出したことに応じて、デバイスは、以前に訪れた住所を目的地として事前にポピュレートし、目的地に到達するための進路変更指示を既に開始した状態で、地図インタフェース(例えば、地図モジュール154)を表示する。いくつかの実施形態では、地図インタフェースを表示する前に、ユーザは、デバイス100のロックを解除するためのアクション(例えば、デバイスのロックを解除するために一連の文字を入力する、口頭パスワードを提供する、指紋認証を行う、など)を実行する。
再び図7Bを参照すると、生成したリマインダを提供することの代替実施形態は、ユーザインタフェースオブジェクト722に関して示されている。代替実施形態のうちのいくつかでは、提供されたリマインダは、デバイスのロックスクリーン701上のユーザインタフェースオブジェクト722に表示される。代替実施形態のうちのいくつかでは、ユーザインタフェースオブジェクト722は、ロックスクリーン701の中央領域に実質的に表示され、第1のアイコン750(a)、第2のアイコン767(a)、リマインダ742(a)、スヌーズオプション744(a)、及び進路変更指示アフォーダンス746(a)を含む。代替実施形態のうちのいくつかでは、第1のアイコン750(a)は、カレンダーアプリケーション(例えば、カレンダーモジュール148、図1A)と関連付けられたアイコンに対応し、第1のアイコン750(a)の選択を検出したことに応じて、デバイスは、(例えば、デバイスのロックを解除した後に)カレンダーアプリケーション内にカレンダー項目を表示する。代替実施形態のうちのいくつかでは、第2のアイコン767(a)は、地図アプリケーション(例えば、地図モジュール154、図1A)と関連付けられたアイコンに対応し、第2のアイコン767(a)の選択を検出したことに応じて、デバイスは、(例えば、デバイスのロックを解除した後に)以前に訪れた住所に到達するための進路変更指示を含む地図インタフェースを表示する。いくつかの実施形態では、リマインダ742(a)は、「歯科検診の出発時刻!」などのテキスト記述を含む。リマインダ742(a)の選択を検出したことに応じて、デバイスは、リマインダ742(a)の表示を中止し、(例えばデバイスのロックを解除した後に)カレンダーアプリケーション内にカレンダー項目を表示する。
代替実施形態のうちのいくつかでは、スヌーズオプション744(a)は、UIオブジェクト722の表示を中止し、ユーザが選択又は事前構成した時間期間後に、UIオブジェクト722を再表示するための1つ以上の選択可能なオプションを含む。例えば、ユーザは、UIオブジェクト722を2時間スヌーズするオプション選択し、2時間後に、デバイスは、UIオブジェクト722を再表示する。別の例として、ユーザは、利用可能になるまでUIオブジェクト722をスヌーズすることを選択し(例えば、「時間が空くまでスヌーズする」)、代替実施形態のうちのいくつかでは、デバイス100は、カレンダーモジュール148を検索してユーザのスケジュールの次の開放スロットを識別し、識別した次の開放スロットの間にUIオブジェクト722を再表示する。
代替実施形態のうちのいくつかでは、進路変更指示アフォーダンス746(a)は、進路変更指示アフォーダンス746(a)を選択することにより、ルート選択及び進路変更指示の提供をデバイスに開始させることをユーザに示すテキストを含む(例えば、ロックスクリーン701を出ることなく、指示(例えば、選択したルートに基づく指示)に対応するオーディオ出力を提供する)。
いくつかの実施形態では、ユーザインタフェースオブジェクト702とユーザインタフェースオブジェクト722の双方の態様を組合せる。例えば、進路変更指示アフォーダンス746又は746(a)は、リマインダ(例えば、リマインダ742又はリマインダ742(a))の下方に表示され、スヌーズオプション744及び却下713は、(例えば、第1のジェスチャの検出に応じて)第1のジェスチャを通じて利用可能である。
いくつかの実施形態では、デバイスは、リマインダの提供に応じて(又はその後に)、ユーザが以前に訪れた住所に到着したかどうかを判定する(616)(例えば、(例えば加速度計168により提供されたデータに基づいて、図1A)ユーザが移動を停止したと判定した後に、デバイスは、デバイスの現在のGPS座標を、以前に訪れた住所と関連付けられたGPS座標とを比較する)。ユーザが以前に訪れた住所に到着したという判定に従って、デバイスは、以前に訪れた住所と関連付けられた位置情報を更新する。いくつかの実施形態では、位置情報を更新することは、以前に訪れた住所と関連付けられたGPS座標をリファインすることを含む(例えば、レコード412-1と関連付けられた以前に訪れた住所の到着住所に(又は、そこから第1の所定の距離内に)到着した時、GPS135に対応する信号強度が、到着住所を以前に確立した時の信号強度よりも大きいとデバイスが判定した場合、デバイスは、到着住所をデバイスの現在のGPS座標と置き換える)。いくつかの実施形態では、現在のGPS座標が、以前に訪れた住所から第2の所定の距離を越えているという判定に従って、デバイスは、現在のGPS座標に対応する到着住所(又は、それに対応する物理的なストリートアドレス)の値を備える以前に訪れた住所のデータ構造402-1に、新しいレコードを追加する。例えば、新しいレコードは、以前に訪れた住所の近くの新しい駐車場所に対応する。
いくつかの実施形態では、デバイスは、ユーザに、(上記で論じたように)到着住所をリファイン又は更新する前にフィードバックを要求する。いくつかの実施形態では、図7Dに示すように、デバイスは、ユーザに、到着住所を更新すべきか、又は更新すべきでないかをユーザが決定することを可能にするユーザインタフェースオブジェクトを提示する。例えば、提示されたユーザインタフェースオブジェクトは、上部通知部710(あるいは代替的には、下部通知部712)内に表示され、任意選択のアイコン767、到着住所の更新を確認又は拒絶するための選択可能なアフォーダンスを備える確認ダイアログ752、並びにユーザインタフェースオブジェクトがなぜ提示されたかに関する指標をユーザに提供する示唆理由714、を含む。いくつかの実施形態では、任意選択のアイコン767は、地図アプリケーション(例えば、地図モジュール154、図1A)と関連付けられたアイコンに対応し、アイコン767の選択を検出したことに応じて、デバイスは、現在記憶されている到着住所と更新される可能性がある到着住所(即ち、デバイスの現在地)の双方の識別子を含む地図インタフェースを表示する。いくつかの実施形態では、確認ダイアログ752は、「現在地に基づいて、記憶している歯科医の住所を更新しますか?」などのテキスト記述を要求する確認を含む。確認ダイアログ752内に表示された「いいえ」ボタンの選択を検出したことに応じて、デバイスは、確認ダイアログ752の表示を中止し、以前に訪れた住所と関連付けられたレコードを更新して、更新した到着住所フィールドの値を含める。確認ダイアログ752内に表示された「いいえ」ボタンの選択を検出したことに応じて、デバイスは、確認ダイアログ752の表示を中止し、以前に訪れた住所と関連付けられたレコードの更新を取り止める。いくつかの実施形態では、示唆理由アフォーダンス714の選択を検出したことに応じて、デバイスは、(図4A~図4Bに関して上記で論じた)位置データ及び以前に訪れた住所の集合と関連付けられたプライバシー設定をユーザが構成することを可能にするユーザインタフェースを表示する。いくつかの実施形態では、ユーザインタフェースオブジェクトはまた、ユーザインタフェースオブジェクトをユーザが却下することを可能にするアフォーダンス(例えば、「x」又は「クローズ」アフォーダンス)を含む。
いくつかの実施形態では、デバイスは、カレンダー項目作成プロセス(例えば、図7E~図7Fに示すカレンダー項目作成プロセス)中に、複数の新しいカレンダー項目をスキャンする(618)。第1の識別子が複数のスキャンした新しいカレンダー項目のそれぞれの新しいカレンダー項目に含まれる(例えば、フィールド770は識別子「歯科医」を含む)という判定に従って、デバイスは、それぞれの新しいカレンダー項目に含めるために、以前に訪れた住所をデバイスのユーザに提示する(例えば、デバイスは、テキスト「123N.12345、州、市、歯科医通り(タップして確認)」を提示する」を備えるユーザインタフェースオブジェクト772を提示する)。ユーザインタフェースオブジェクト772の選択を検出したことに応じて、デバイスは、新しいカレンダー項目を以前に訪れた住所と関連付ける。
図6における動作について説明された特定の順序は単なる例示であり、説明された順序は、動作を実行することができる唯一の順序であることを示すことを意図するものではないことを理解されたい。当業者であれば、本明細書で説明される動作の順序換えをするさまざまな方法を認識するであろう。
いくつかの実施形態によれば、図8は、説明されるさまざまな実施形態の原理に従って構成された、電子デバイス800の機能ブロック図を示す。このデバイスの機能ブロックは、説明されるさまざまな実施形態の原理を実行するために、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって、任意選択的に実装される。図8で説明される機能ブロックが、説明されるさまざまな実施形態の原理を実施するように、任意選択的に、組み合わされ、又はサブブロックに分離されることが当業者には理解されよう。したがって、本明細書における説明は、本明細書で説明されている機能ブロックのあらゆる可能な組合せ若しくは分割、又は更なる定義を任意選択的に支持する。議論を簡単にするために、電子デバイス800は、ポータブル多機能デバイス100(図1A)として実装される。
図8に示すように、電子デバイス800は、情報を表示するように構成された表示ユニット801(例えば、タッチスクリーン、タッチ感知ディスプレイ及びタッチスクリーンディスプレイとも称される、タッチ感知ディスプレイシステム112、図1A)と、接触、ジェスチャ、及びタッチ感知ディスプレイ上の他のユーザ入力を受け取るように構成されたタッチ感知面ユニット803(例えば、ディスプレイコントローラ156及びタッチ感知ディスプレイシステム112、図1A)と、表示ユニット801及びタッチ感知面ユニット803と連結された処理ユニット805と、を含む。いくつかの実施形態では、処理ユニットは、識別ユニット(例えば、識別ユニット807)、取り出しユニット(例えば、取り出しユニット809)、判定ユニット(例えば、判定ユニット811)、関連付けユニット(例えば、関連付けユニット813)、提供ユニット(例えば、提供ユニット815)、選択ユニット(例えば、選択ユニット817)、生成ユニット(例えば、生成ユニット819)、受信ユニット(例えば、受信ユニット821)、実行ユニット(例えば、実行ユニット823)、スキャンユニット(例えば、スキャンユニット825)、提示ユニット(例えば、提示ユニット827)、及び更新ユニット(例えば、更新ユニット829)を含む。処理ユニットは、自動的にかつ人の介入なしに、(例えば、識別ユニット807を用いて)不明の地理的位置に対応する第1の識別子を含むカレンダー項目を識別し、自動的にかつ人の介入なしに、(例えば、取り出しユニット809を用いて)第1の識別子と関連付けられた以前に訪れた住所を取り出し、自動的にかつ人の介入なしに、(例えば、判定ユニット811を用いて)以前に訪れた住所に基づいて、カレンダー項目の出発時刻を判定し、自動的にかつ人の介入なしに、(例えば、関連付けユニット813を用いて)判定した出発時刻をカレンダー項目と関連付けるように構成されている。
電子デバイス800のいくつかの実施形態では、処理ユニットは、(例えば、提供ユニット815及び表示ユニット801を用いて(又は、表示ユニット801と併せて提供ユニット815を用いて)電子デバイス上で、ユーザに対して、カレンダー項目の判定した出発時刻のリマインダを提供するように更に構成されている。電子デバイス800のいくつかの実施形態では、カレンダー項目は、ユーザに提供されたカレンダー項目の判定した出発時刻のリマインダとは別個のデフォルトリマインダと関連付けられる。電子デバイス800のいくつかの実施形態では、リマインダを提供することは、(例えば、判定ユニット811による)出発時刻が現在時刻から所定の時間量以内であるいう判定に従って、(例えば、提供ユニット815及び表示ユニット801を用いて(又は、表示ユニット801と併せて提供ユニット815を用いて))リマインダを提供することを含む。電子デバイス800のいくつかの実施形態では、判定した出発時刻をカレンダー項目と関連付けることは、(例えば、生成ユニット819を用いて)リマインダを生成することと、カレンダー項目を更新して、生成したリマインダを含めることと、を含む。
電子デバイス800のいくつかの実施形態では、出発時刻を判定することは、(i)(例えば、判定ユニット811を用いて)電子デバイスに対応する現在の住所を判定することと、(ii)(例えば、判定ユニット811を用いて)現在の住所から以前に訪れた住所までのルートを判定することと、(iii)(例えば、判定ユニット811を用いて)ユーザが、カレンダー項目と関連付けられた開始時刻から所定の時間量以内で以前に訪れた住所に到達するように、ルートを完了する時間量に基づいて出発時刻を判定することと、を含む。電子デバイス800のいくつかの実施形態では、ルートは、(例えば、選択ユニット817を用いて)電子デバイスのユーザと関連付けられたルート選択の好みに従って、現在の住所から以前に訪れた住所までの複数の利用可能なルートから選択される。
電子デバイス800のいくつかの実施形態では、処理ユニットは、出発時刻を判定する前に、(例えば、受信ユニット821を用いて)電子デバイスのユーザから、タッチ感知ディスプレイ上で、以前に訪れた住所がカレンダー項目に対応するという確認を受信するように更に構成されている。確認を受信した後、処理ユニットは、(例えば、判定ユニット811を用いて)出発時刻を判定するように構成されている。
電子デバイス800のいくつかの実施形態では、以前に訪れた住所を取り出すことは、(例えば、取り出しユニット809を用いて)電子デバイスのユーザと関連付けられた以前に訪れた住所のデータベースから、以前に訪れた住所を取り出すことを含む。電子デバイス800のいくつかの実施形態では、以前に訪れた住所のデータベース中のそれぞれの以前に訪れた住所は、電子デバイスのユーザが以前に訪れた住所に対応する。電子デバイス800のいくつかの実施形態では、以前に訪れた住所を取り出すことは、(例えば、実行ユニット823を用いて)第1の識別子を使用して以前に訪れた住所のデータベース中でルックアップを実行することを含む。
電子デバイス800のいくつかの実施形態では、処理ユニットは、(例えば、スキャンユニット825を用いて)カレンダー項目作成プロセス中に、複数の新しいカレンダー項目をスキャンするように更に構成されている。(例えば、判定ユニット811による)複数のスキャンした新しいカレンダー項目のそれぞれの新しいカレンダー項目に第1の識別子が含まれているという判定に従って、処理ユニットは、(例えば、提示ユニット827及び表示ユニット801を用いて(又は、表示ユニット801と併せて提示ユニット827を用いて))それぞれの新しいカレンダー項目に含めるために、以前に訪れた住所を電子デバイスのユーザに提示するように構成されている。
電子デバイス800のいくつかの実施形態では、処理ユニットは、リマインダを提供したことに応じて、(例えば、判定ユニット811を用いて)以前に訪れた住所にユーザが到着したかどうかを判定するように更に構成されている。(例えば、判定ユニット811による)以前に訪れた住所にユーザが到着したという判定に従って、処理ユニットは、(例えば、更新ユニット829を用いて)以前に訪れた住所と関連付けられた位置情報を更新するように構成されている。
上述の情報処理方法での動作は、汎用プロセッサ(例えば、図1Aに関連して上述されたようなもの)又は特定用途向けチップなどの、情報処理装置内の1つ以上の機能モジュールを稼働することによって、任意選択的に実施される。
図5を参照して先述した動作は、任意選択的に、図1A~図1B又は図8に示す構成要素により実行される。例えば、受け取り動作606、及び提供動作614は、任意選択的に、イベントソート部170、イベント認識部180、及びイベント処理部190により実行される。イベントソート部170のイベントモニタ171は、タッチ感知ディスプレイ112上の接触を検出し、イベントディスパッチャモジュール174は、イベント情報をアプリケーション136-1に配信する。アプリケーション136-1の対応するイベント認識部180は、そのイベント情報を対応するイベント定義186に比較し、タッチ感知面上の第1の場所での第1の接触(又は、デバイスの回転)が、ユーザインタフェース上のオブジェクトの選択、又は1つの向きから別の向きへのデバイスの回転などの、既定のイベント又はサブイベントに対応するか否かを判定する。対応する既定のイベント又はサブイベントが検出されると、イベント認識部180は、イベント又はサブイベントの検出に関連するイベント処理部190をアクティブ化する。イベント処理部190は、アプリケーション内部状態192を更新するために、データ更新部176若しくはオブジェクト更新部177を、任意選択的に用いるか又は呼び出す。いくつかの実施形態では、イベント処理部190は、アプリケーションにより表示されるものを更新するために、対応するGUI更新部178にアクセスする。同様に、当業者にとって、他の処理が図1A~図1Bに示されるコンポーネントに基づいてどのように実施されるかは明らかであるだろう。
上述の説明は、説明の目的上、特定の実施形態を参照して説明されている。しかしながら、上記の例示的な論考は、網羅的であること、又は本発明を、開示される厳密な形態に限定することを意図するものではない。上記の教示を鑑みて、多くの修正及び変形が可能である。本発明の原理及びその実際的な応用を最良の形で説明し、それによって他の当業者が、想到される特定の用途に好適なさまざまな改良で本発明及びさまざまな実施形態を最良の形で使用することを可能とするために、これらの実施形態を選択し説明した。