(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0006】
変化する信頼度レベルを用いたジオフェンスイベントの検出について本明細書で説明する。コンピューティングデバイスの位置が判定され、関心領域の位置が特定される。関心領域は、ジオフェンスとも呼ばれる地理的領域である。コンピューティングデバイスの判定された位置の精度は、関連付けられた不確定性を有するので、コンピューティングデバイスの位置は、通常、正確に示すことができない。この不確定性を考慮して、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを判定するために、判定された位置に関連付けられた不確定性が、ジオフェンスのサイズに対して評価される。この判定に基づいて、ユーザがジオフェンスに入った場合、ユーザがジオフェンスから出た場合、ユーザが少なくとも閾時間量の間ジオフェンス内に留まっている場合等に、様々なアクションを行うことができる。
【0007】
コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかの判定は、ジオフェンスのサイズに少なくとも部分的に基づいて信頼度レベルを変化させることによりなされる。変化する信頼度レベルは、位置不確定領域に対するジオフェンス領域の比率に基づく閾信頼度値や、ジオフェンス領域に関して位置判定モジュールの精度においてどれくらいの誤差を許容できるか(したがって、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかの判定においてどれくらいの信頼度が存在するか)等、様々な形をとることができる。信頼度レベルを変化させることにより、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかの判定は、異なるサイズのジオフェンスに適応し、誤アラーム(コンピューティングデバイスがジオフェンス内に存在すると間違って判定される状況)を低減させることが可能になるとともに、ジオフェンスの見逃し(コンピューティングデバイスがジオフェンス外に存在すると間違って判定される状況)を低減させることが可能になる。
【0008】
図1は、本明細書で説明する変化する信頼度レベルを用いたジオフェンスイベントの検出を用いることができる例示的なシステム100を示している。システム100は、コンピューティングデバイス102を含む。コンピューティングデバイス102は、様々なタイプのデバイスのうちの任意のデバイスとすることができるが、典型的にはモバイルデバイスである。例えば、コンピューティングデバイス102は、スマートフォン又は他の無線電話機、ラップトップコンピュータ又はネットブックコンピュータ、タブレットコンピュータ又はノートパッドコンピュータ、ウェアラブルコンピュータ、移動局、エンターテイメント機器、オーディオ再生デバイス及び/又はビデオ再生デバイス、ゲームコンソール、自動車用コンピュータ等とすることができる。コンピューティングデバイス102は、一般に、モバイルデバイスと呼ばれる。なぜならば、デバイス102は、複数の異なる位置に移動される(例えば、ユーザが異なる位置に移動するときにユーザと一緒にユーザにより運ばれる)よう設計又は意図されているからである。
【0009】
コンピューティングデバイス102の位置は、以下でより詳細に説明するように、無線ネットワーキング(例えば、Wi−Fi(登録商標))三角測位、セルラ測位、全地球航法衛星システム(GNSS)測位、ネットワークアドレス(例えば、インターネットプロトコル(IP)アドレス)測位等といった多種多様な技術のうちの任意の技術を用いて判定することができる。異なる位置判定技術は、異なる精度誤差又は関連付けられた不確定性を有し得る。例えば、位置判定技術は、10メートル(m)又は10キロメートル(km)の精度であり得る。したがって、コンピューティングデバイス102の位置は、正確には示されず、コンピューティングデバイス102を取り囲む領域104として示される。領域104は、コンピューティングデバイス102の判定された位置の不確定性を表し、したがって、コンピューティングデバイスが、特定の位置(例えば、領域104の略中心)に存在すると判定されたとしても、コンピューティングデバイス102は、実際には、領域104内のどこかに存在するであろう。
【0010】
システム100はまた、複数のジオフェンス112、114、116、及び118も示している。各ジオフェンス112〜118は、コンピューティングデバイス102、コンピューティングデバイス102のユーザ、コンピューティングデバイス102上で実行されているプログラム等にとって関心のある多種多様な場所のうちの任意の場所であり得る。例えば、ジオフェンス112〜118は、ユーザの自宅、ユーザの職場、ユーザにより訪問され得るレストラン又は事業所、教育施設、公共サービス(例えば、病院や図書館)、地理的場所(例えば、街や国)等であり得る。
【0011】
ジオフェンス112〜118の位置は、コンピューティングデバイス102内に保持される、あるいは、コンピューティングデバイス102によりアクセス可能である。コンピューティングデバイス102の異なるユーザは、任意的に、異なるジオフェンスを保持させてもよいし、異なるジオフェンスにアクセスさせてもよいことに留意すべきである。コンピューティングデバイス102は、モバイル式であり、ジオフェンス112〜118に入ることもあるし、ジオフェンス112〜118から出ることもある。任意の所与の時間において、コンピューティングデバイス102は、ジオフェンス112〜118のうちの1つのジオフェンス内に存在することもあるし、どのジオフェンス内にも存在しないこともある。コンピューティングデバイス102が、特定のジオフェンスを含む領域内に存在すると判定された場合、コンピューティングデバイス102は、その特定のジオフェンス内に存在すると呼ばれる。一方、コンピューティングデバイス102が、特定のジオフェンスを含む領域内に存在しないと判定された場合、コンピューティングデバイス102は、その特定のジオフェンス外に存在する、あるいは、その特定のジオフェンス内に存在しないと呼ばれる。2以上のジオフェンスが重なり合う状況も生じることがあり、その場合、コンピューティングデバイス102は、2以上のジオフェンス112〜118内に同時に存在することもある。
図1の例示は、縮尺通りではなく、ジオフェンス112〜118は、コンピューティングデバイス102よりもサイズが著しく大きいことがある(通常は、コンピューティングデバイス102よりもサイズが著しく大きい)。
【0012】
図示される例において、領域104は、ジオフェンス112〜118のいずれとも交わっておらず、したがって、コンピューティングデバイス102は、ジオフェンス112〜118の各々の外に存在する。しかしながら、領域104が、ジオフェンス112〜118のうちの1つと少なくとも部分的に重なり合った場合、コンピューティングデバイス102は、重なり合っているジオフェンス内に存在する可能性がある。そのような状況においてコンピューティングデバイス102がジオフェンス内に存在すると判定されるかジオフェンス外に存在すると判定されるかは、以下でより詳細に説明するように、変化する信頼度レベルに基づいて判定される。
【0013】
図2は、1以上の実施形態に従った、変化する信頼度レベルを用いたジオフェンスイベントの検出を実施する例示的なシステム200を示すブロック図である。システム200は、
図1のコンピューティングデバイス102等の単一のデバイスにより実装されてもよいし、コンピューティングデバイス102、及びネットワーク(例えば、セルラ電話網又は他の無線電話網、インターネット等)を介してアクセスされる1以上のサーバコンピュータ等の複数のデバイスにより実装されてもよい。システム200は、1以上の位置判定モジュール202、ジオフェンス判別モジュール204、ジオフェンスイベント検出モジュール206、ジオフェンストリガモジュール208、及びデータ記憶部210を含む。
【0014】
データ記憶部210は、本明細書で説明する技術により用いられる様々なデータを保持する。データ記憶部210は、システムメモリ(例えば、ランダムアクセスメモリ(RAM))、フラッシュメモリ又は他のソリッドステートメモリ、磁気ディスク、光ディスク等といった多種多様な記憶デバイスのうちの任意の記憶デバイスを用いて実装することができる。データ記憶部210に保持されるデータは、複数のジオフェンスの各々に関するジオフェンスデータを含み、複数のジオフェンスを特定する。ジオフェンスデータは、データ記憶部210にデータを記憶させている、データ記憶部210のディストリビュータ又はリセラ、システム200を実装しているコンピューティングデバイス上で実行されるプログラム、別のデバイス又はサービス等といった様々なソースから取得することができる。ジオフェンスに関するジオフェンスデータは、ジオフェンスの境界(ジオフェンスの形状のインジケーションを含む)に加えて、ジオフェンスがトリガされるために満たされるべき基準(criteria)を表す。
【0015】
満たされるべき基準は、デバイスがジオフェンスに入ったこと、デバイスがジオフェンスから出たこと、デバイスが特定の時間量(例えば、少なくとも閾時間量、単に閾時間量等)の間ジオフェンス内に留まっていること、ジオフェンスに関する時間期間(例えば、開始時間と終了時間、開始時間と継続期間)、これらの組合せ等を指し得る。ジオフェンスがトリガされたこと(基準が満たされたこと)に応じて行われる1以上のアクションも、ジオフェンスデータの一部として含まれ得る。ジオフェンスがトリガされたときに、特定のプログラムに通知すること、特定のコンテンツがコンピューティングデバイスにより表示又は別の形で再生されること、ジオフェンスデータがデータ記憶部210から削除されること、これらの組合せ等といった様々なアクションのうちのいずれかが行われ得る。複数の異なるアクションが、ジオフェンスがトリガされた態様に基づいて行われ得る。例えば、1つのアクションは、デバイスがジオフェンスに入ったことに応じて行われ、別のアクションは、デバイスがジオフェンスから出たことに応じて行われる。
【0016】
ジオフェンスの境界は、多種多様な方法のうちのいずれかの方法により指定することができる。例えば、ジオフェンスは、位置(例えば、緯度座標及び経度座標)及び半径、位置のセット(例えば、ジオフェンスの複数のコーナーの緯度座標及び経度座標)、一連のベクトル等として指定することができる。本明細書における説明において、略円形形状であるジオフェンスについて言及する。しかしながら、ジオフェンスは、様々な標準的幾何学形状(例えば、三角形、四角形、八角形等)、他の幾何学形状(例えば、自由形状又はブロブ)等のうちの任意の形状とすることができることに留意すべきである。
【0017】
データ記憶部210が、システム200の一部として、
図2に示されている。データ記憶部210に保持されるデータは、プログラム230(例えば、システム200を実装しているコンピューティングデバイスにロードされるときのプログラム230)から取得できることに留意すべきである。代替的に、プログラム230のうちの1以上のプログラムが、データ記憶部210に加えて使用される、あるいは、データ記憶部210の代わりに使用されるデータ記憶部を含んでもよい。
【0018】
ジオフェンスは、多種多様な態様で使用することができる。例えば、行われるジオフェンスアクションは、システム200の少なくとも一部を実装しているコンピューティングデバイスのユーザがバス停に近づいているときにユーザに通知すること、ユーザがショッピングモール又はショッピング店に入ったときにユーザにクーポンを与えること、子供が学校を離れたとき又は子供が自宅に戻ったときに子供の親に通知すること、ユーザが別の街に旅行したときに現在位置に関する天気情報を表示すること等であり得る。
【0019】
位置判定モジュール202は、コンピューティングデバイス102の位置を判定する1以上のモジュールを含む。図示される例において、位置判定モジュール202は、Wi−Fi(登録商標)モジュール212、GNSSモジュール214、ネットワークアドレスモジュール216、及びセルラモジュール218を含む。しかしながら、これらのモジュール212〜218は例であり、位置判定モジュール202は、モジュール212〜218の各々を必ずしも含む必要はないし、且つ/あるいは、位置判定モジュール202は、異なる方法によりコンピューティングデバイス102の位置を判定する1以上のさらなるモジュールを含んでもよいことに留意すべきである。例えば、位置判定モジュールは、MEMS(マイクロエレクトロメカニカルシステム)、カメラ、マイクロフォン等を含んでもよい。
【0020】
Wi−Fi(登録商標)モジュール212は、Wi−Fi(登録商標)信号を使用して、例えば、Wi−Fi(登録商標)信号の三角測位を使用して、コンピューティングデバイス102の位置を判定する。Wi−Fi(登録商標)モジュール212は、様々な無線アクセスポイントから、信号が受信される元である特定の無線アクセスポイント及び/又は特定の無線ネットワークの識別子を含む信号を受信することができる。例えば、無線アクセスポイントは、その無線アクセスポイントの媒体アクセス制御(MAC)アドレス、その無線アクセスポイントによりサポートされている無線ネットワークの基本サービスセット識別子(BSSID)等を送信することができる。Wi−Fi(登録商標)モジュール212はまた、そのような受信信号の強度(例えば、受信信号強度インジケータ(RSSI)値)を測定することができる。Wi−Fi(登録商標)モジュール212は、コンピューティングデバイスの任意の所与の位置に関して任意の所与の時間に、複数の無線アクセスポイントから信号を受信できることに留意すべきである。Wi−Fi(登録商標)モジュール212は、信号が受信される元である無線アクセスポイントと、任意の特定の時間におけるその信号の強度と、を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、無線アクセスポイント、信号強度、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、Wi−Fi(登録商標)モジュール212は、信号が受信される元である無線アクセスポイントと、特定の所与の時間におけるその信号の強度と、のインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをWi−Fi(登録商標)モジュール212に返すリモートサービス(例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる)に提供してもよい。
【0021】
GNSSモジュール214は、GNSS測位を使用して、コンピューティングデバイス102の位置を判定する。コンピューティングデバイスの位置のこの判定は、GNSSモジュール214が信号を受信できる元である、あるいはGNSSモジュール214が通信できる特定数の衛星(例えば、4以上の衛星)に基づく。GNSSモジュール214は、多種多様な技術を用いてGNSS機能を実装することができる。そのような技術は、全地球測位システム(GPS)、全地球航法衛星システム(GLONASS)、北斗航法システム(又はコンパス航法システム)、ガリレオ測位システム、これらの組合せ等を含むが、これらに限定されるものではない。GNSSモジュール214は、GNSSモジュール214が任意の特定の所与の時間において信号を受信できる元である、あるいはGNSSモジュール214が任意の特定の所与の時間において通信できる1以上の衛星を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、様々な公開方式(public manner)及び/又は専用方式(proprietary manner)のうちのいずれかの方式で動作する。
【0022】
ネットワークアドレスモジュール216は、ネットワークアドレス測位を使用して、コンピューティングデバイス102の位置を判定する。使用されるネットワークアドレスは、コンピューティングデバイス102のIPアドレス等、様々なネットワークアドレスのうちの任意のネットワークアドレスとすることができる。ネットワークアドレスモジュール216は、任意の特定の時間におけるコンピューティングデバイスに割り当てられたIPアドレスを所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、IPアドレス又はアドレス範囲、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、ネットワークアドレスモジュール216は、特定の所与の時間におけるコンピューティングデバイスのIPアドレスのインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをネットワークアドレスモジュール216に返すリモートサービス(例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる)に提供してもよい。
【0023】
セルラモジュール218は、セルラ測位を使用して、コンピューティングデバイス102の位置を判定する。セルラモジュール218は、様々なセルトランシーバから、信号が受信される元である特定のセルトランシーバの識別子(例えば、セルタワー識別子又はトランシーバ識別子)を含む信号を受信することができる。セルラモジュール218はまた、そのような受信信号の強度を測定することができる。セルラモジュール218は、コンピューティングデバイスの任意の所与の位置に関して任意の所与の時間に、複数のセルトランシーバから信号を受信できることに留意すべきである。セルラモジュール218は、信号が受信される元であるセルトランシーバと、任意の特定の時間におけるその信号の強度と、を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、セルトランシーバ、信号強度、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、セルラモジュール218は、信号が受信される元であるトランシーバと、特定の所与の時間におけるその信号の強度と、のインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをセルラモジュール218に返すリモートサービス(例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる)に提供してもよい。追加的又は代替的に、セルラモジュール218は、低電力で状態変化をモニタリングして、通知を(例えば、ジオフェンスイベント検出モジュール206に)提供してもよく、これは、継続的なポーリングを要することなく、低電力での動き検出を可能にする。
【0024】
位置判定モジュール202により判定される位置は、通常、緯度座標及び経度座標であるが、位置は、他の方法により、代替的に指定されてもよい。位置判定モジュール202の各々は、判定する位置の関連付けられた不確定性(位置の精度誤差又は推定精度誤差とも呼ばれる)を有する。この不確定性の程度は、例えば、位置判定モジュール自体によりレポートされる、システム200の他のモジュール(例えば、ジオフェンスイベント検出モジュール206)において予め設定される、あるいはシステム200の他のモジュール(例えば、ジオフェンスイベント検出モジュール206)によりアクセス可能である等、様々な方法により判定することができる。この不確定性は、位置判定モジュールにより判定された位置に関する位置不確定領域をもたらす。位置不確定領域は、コンピューティングデバイス102が、判定された位置に関して実際に存在するであろう領域である。1以上の実施形態において、位置不確定領域は、略円形領域であり、位置判定モジュールにより判定された位置が、その略円形領域の略中心であり、その略円形領域の半径が、位置判定モジュールに関する不確定性として判定された誤差半径である。代替的に、位置不確定領域は、様々な他の標準的幾何学形状又は他の幾何学形状を用いて表されてもよい。したがって、位置判定モジュールに関する位置不確定領域は、空間的誤差分布関数(spatial error distribution function)であり得る。空間的誤差分布関数の近似は、領域にわたる一様分布(flat distribution)とすることができるが、空間的誤差分布関数の様々な他の近似又は表現が、代替的に使用されてもよい。
【0025】
ジオフェンス判別モジュール204は、データ記憶部210において特定されるジオフェンスのうち、ジオフェンスがトリガされるかどうかに関する判定がなされるべき1以上のジオフェンスを判別する。多数の異なるジオフェンスに関するデータが、データ記憶部210に保持され得、それらジオフェンスのうちの1以上のジオフェンスが、ジオフェンス判別モジュール204により選択される。ジオフェンス判別モジュール204は、以下でより詳細に説明するように、ジオフェンスとコンピューティングデバイスとの間の現在距離に基づいて、ジオフェンスのサイズ(ジオフェンスにより包含される領域のサイズ)に基づいて、どのジオフェンスが最も厳格である(stringent)か(あるいは、ほぼ最も厳格であるか)に基づいて等、多種多様な方法によりこの判別を行うことができる。ジオフェンス判別モジュール204により判別される1以上のジオフェンスは、コンピューティングデバイスの現在位置等の様々な基準に基づいてコンピューティングデバイスが入った又は出た可能性がより高いとみなされるジオフェンスであり、それら1以上のジオフェンスは、基準が変わるまで、ジオフェンス判別モジュール204の焦点(focus)であり得る。しかしながら、ジオフェンス判別モジュール204は、データ記憶部210内のジオフェンスのうちの任意のジオフェンスに関してジオフェンスがトリガされるかどうかを判定できることに留意すべきである。
【0026】
ジオフェンスイベント検出モジュール206は、定期間隔又は不定期間隔でコンピューティングデバイスの現在位置を取得し、ジオフェンスイベントが発生したかどうかを検出する。この間隔は、現在の状態(例えば、最も近いジオフェンスまでのおおよその距離、コンピューティングデバイスの電力バジェット(power budget)、コンピューティングデバイスの移動の推定速度等)に基づいて、動的に選択され得る。ジオフェンスイベントは、デバイスがジオフェンスに入ったこと、デバイスがジオフェンスから出たこと、又は、デバイスが特定の時間量の間ジオフェンス内に留まっていること(例えば、ジオフェンス内に存在していてジオフェンスから出ていないこと)を指す。ジオフェンスイベント検出モジュール206は、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを判定するために、ジオフェンスのサイズに対する、判定された位置に関連付けられた不確定性を評価する。ジオフェンスイベント検出モジュール206はまた、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを経時的に追跡するので、コンピューティングデバイスがジオフェンス内からジオフェンス外に移動したかどうか、コンピューティングデバイスがジオフェンス外からジオフェンス内に移動したかどうか、コンピューティングデバイスがジオフェンス内に存在していた時間量等を認識している。
【0027】
ジオフェンストリガモジュール208は、ジオフェンスがトリガされるために満たされるべき基準を分析し、基準が満たされたかどうかを判定する。この判定は、ジオフェンスイベント検出モジュール206により判定された1以上のジオフェンスイベントの発生に少なくとも部分的に基づいてなされる。基準が満たされたことに応じて、ジオフェンストリガモジュール208は、ジオフェンスがトリガされることを決定し、適切なアクションを行う。行われるアクションは、データ記憶部210に記憶される、トリガされるジオフェンスに関するジオフェンスデータに関連付けられてもよいし、ジオフェンストリガモジュール208において予め設定される、別のモジュール又はデバイスから取得される等、他の方法により決定されてもよい。
【0028】
1以上の実施形態において、ジオフェンスがトリガされたことに応じてジオフェンストリガモジュール208により行われるアクションは、1以上のプログラム230に通知することである。1以上のプログラム230は、アプリケーション、オペレーティングシステムモジュール又はコンポーネント等といった多種多様なタイプのプログラムを含み得る。通知すべき1以上のプログラム230は、ジオフェンストリガモジュール208において設定される、データ記憶部210内のジオフェンスに関するジオフェンスデータの一部として特定される、別のモジュール又はサービスから取得される等、様々な方法により特定することができる。プログラム230には、発生したジオフェンスイベントに加えて、任意的にさらなる情報(例えば、コンピューティングデバイスが、少なくとも閾時間量の間ジオフェンス内に存在していたこと)が通知され得る。次いで、プログラム230は、ジオフェンスがトリガされたことに基づいて、プログラム230が所望するアクションを行うことができる。
【0029】
モジュール204〜208は、位置判定モジュール202から分離されたモジュールとして図示されているが、モジュール204〜208のうちの1以上のモジュールは、代替的に、位置判定モジュール202のうちの1つの位置判定モジュール内に少なくとも部分的に実装されてもよいことに留意すべきである。例えば、モジュール204〜208のうちの1以上のモジュールの少なくとも一部は、GNSSモジュール214又はWi−Fi(登録商標)モジュール212のハードウェアコンポーネント内に実装されてもよい。
【0030】
複数の実施形態において、位置を判定するためのユーザ承諾を受信した後にのみ、位置が位置判定モジュール202により判定される。このユーザ承諾は、オプトイン承諾(opt-in consent)であり得、この場合、ユーザは、位置が判定される前に、位置が位置判定モジュール202により判定されることを要求する肯定的アクション(affirmative action)を行う。あるいは、このユーザ承諾は、オプトアウト承諾(opt-out consent)であってもよく、この場合、ユーザは、位置が位置判定モジュール202により判定されるべきではないことを要求する肯定的アクションを行う。ユーザが、位置の判定を拒否することを選択しなかった場合、それは、ユーザの位置を判定することに対するユーザによる暗黙的承諾である。さらに、位置判定モジュール202により判定された位置は、判定された位置を受信するコンピューティングデバイス(例えば、
図1のコンピューティングデバイス102)内に保持され得、他のデバイス又はサービスに通信される必要はない。
【0031】
代替的に、ユーザ承諾は、特定のプログラムに対しては許可されて、他のプログラムに対しては無効にされてもよい。この場合、ユーザが、ジオフェンス追跡が使用される少なくとも1つのプログラムに対して承諾したときのみ、位置情報が判定されることになる。位置情報は、承諾されたプログラムに属するジオフェンスのみに関するエントリ及び/又はイグジットを判定するために使用される。許可されていないプログラムからの残りのジオフェンスは追跡されない。
【0032】
図3は、1以上の実施形態に従った、位置が判定されるべきであるかどうかをユーザが選択することを可能にするためにユーザに対して表示され得る例示的なユーザインタフェースを示している。なぜ位置情報が判定されるかをユーザに説明する記載302を含む位置コントロールウインドウ300が表示される。プライバシに関する声明へのリンク304も表示される。ユーザがリンク304を選択した場合、システム200のプライバシに関する声明が表示され、ユーザの情報がどのように機密のまま保たれるかがユーザに説明される。
【0033】
さらに、ユーザは、位置情報の判定を許可するためのラジオボタン306又は位置情報の判定を拒否するためのラジオボタン308を選択することができる。ラジオボタン306又は308が選択されると、ユーザは、その選択を保存するための「OK」ボタン310を選択することができる。これらラジオボタン及び「OK」ボタンは、位置情報の判定を許可又は拒否するためにユーザに対して提示され得るユーザインタフェースの例に過ぎず、様々な他の従来のユーザインタフェース技術が代替的に使用されてもよいことを理解すべきである。その後、
図2のシステム200は、ユーザの選択に従って、コンピューティングデバイスの位置を判定することに進むか、あるいは、コンピューティングデバイスの位置を判定しない。
【0034】
図4は、1以上の実施形態に従った、変化する信頼度レベルを用いてジオフェンスイベントを検出するための例示的なプロセス400を示すフローチャートである。プロセス400は、
図2のシステム200等のシステムにより実行される。プロセス400は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せにより実装することができる。プロセス400が、一連の動作として示されているが、プロセス400は、様々な動作のオペレーションを実行するために、図示される順番に限定されるものではない。プロセス400は、変化する信頼度レベルを用いてジオフェンスイベントを検出するための例示的なプロセスである。変化する信頼度レベルを用いてジオフェンスイベントを検出することについての異なる図を参照するさらなる説明が、本明細書に含まれる。
【0035】
プロセス400において、ジオフェンス及びジオフェンスのサイズが特定される(動作402)。特定されるジオフェンスは、
図2のジオフェンス判別モジュール204により選択されたジオフェンスである。ジオフェンスのサイズは、ジオフェンスにより包含される面積(ジオフェンスの境界内の面積)であり、多種多様な方法のうちのいずれかの方法により特定することができる。例えば、ジオフェンスのサイズは、ジオフェンスデータの一部として、
図2のデータ記憶部210に記憶されてもよいし、ジオフェンスのサイズは、データ記憶部210内のジオフェンスデータに含まれるジオフェンス領域の説明に基づいて、動作402において決定されてもよい、等である。ジオフェンスのサイズ及びジオフェンスの境界の形状を所与として、ジオフェンスと、コンピューティングデバイスの位置に関する位置不確定領域と、の重なり合い等、様々な値を容易に求めることができる。
【0036】
位置判定モジュールに関する現在の位置不確定領域及び現在の位置不確定領域のサイズが特定される(動作404)。位置不確定領域は、上述したように、異なる形状、関数等を用いて、様々な形で表すことができる。動作404における位置判定モジュールは、ジオフェンス(動作402においてサイズが特定されたジオフェンス)に関するジオフェンスイベントを判定する目的のためにコンピューティングデバイスの位置を提供する位置判定モジュールである。位置不確定領域は、上述したように、様々な方法により判定された、位置判定モジュールの不確定性に基づいて特定することができる。位置不確定領域のサイズは、位置不確定領域により包含される面積を指し、多種多様な方法のうちのいずれかの方法により特定することができる。例えば、位置不確定領域のサイズは、位置判定モジュールにより提供されてもよいし、位置不確定領域のサイズは、位置不確定領域の説明に基づいて、動作402において決定されてもよい、等である。
【0037】
ジオフェンスイベントが、ジオフェンスのサイズ及び位置不確定領域のサイズに少なくとも部分的に基づいて変化する信頼度レベルに基づいて判定される(動作406)。信頼度レベルは、様々な形をとることができる。例えば、信頼度レベルは、(例えば、
図5を参照して以下で説明するように)位置不確定領域に対するジオフェンス領域の比率に基づく閾信頼度値とすることができる。別の例として、信頼度レベルは、(例えば、
図9を参照して以下で説明するように)ジオフェンス領域に関して位置判定モジュールの精度においてどれくらいの誤差を許容できるか、とすることもでき、したがって、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかの判定においてどれくらいの信頼度が存在するか、とすることができる。
【0038】
図5は、1以上の実施形態に従った、変化する信頼度レベルを用いてジオフェンスイベントを検出するための例示的なプロセス500を示すフローチャートである。プロセス500において、信頼度レベルは、現在の位置不確定領域に対するジオフェンス領域の比率に基づいて変化する閾信頼度値である。この比率が増すにつれ、閾信頼度値も増し、この比率が下がるにつれ、閾信頼度値も下がる。
【0039】
プロセス500は、
図2のシステム200等のシステムにより実行される。プロセス500は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せにより実装することができる。プロセス500が、一連の動作として示されているが、プロセス500は、様々な動作のオペレーションを実行するために、図示される順番に限定されるものではない。プロセス500は、変化する信頼度レベルを用いてジオフェンスイベントを検出するための例示的なプロセスである。変化する信頼度レベルを用いてジオフェンスイベントを検出することについての異なる図を参照するさらなる説明が、本明細書に含まれる。
【0040】
許容可能な信頼度値、位置に関する信頼度値、及び閾信頼度値等といった様々な信頼度値が、本明細書に記載される。信頼度値は、コンピューティングデバイスの位置に関する位置不確定領域とジオフェンスとの重なり合っている領域の面積と、コンピューティングデバイスの位置に関する位置不確定領域の面積と、に基づいて生成される。例えば、信頼度値Cは、以下の式を用いて計算することができる:
【数1】
ここで、A
overlapは、コンピューティングデバイスの位置に関する位置不確定領域とジオフェンスとの重なり合っている領域の面積を指し、A
locationは、コンピューティングデバイスの位置に関する位置不確定領域の面積を指す。
【0041】
プロセス500において、ジオフェンス及びジオフェンスのサイズが特定される(動作502)。特定されるジオフェンスは、ジオフェンス判別モジュールにより選択されたジオフェンスであり、ジオフェンスのサイズは、
図4の動作402に関して上述したものと同様の様々な方法により決定することができる。
【0042】
使用する位置判定モジュールが選択される(動作504)。位置判定モジュールは、位置判定モジュールが、動作504において選択されるために提供することができる信頼度レベルである許容可能な信頼度レベルに基づいて選択される。許容可能な信頼度レベルは、
図2のシステム200の設計者により経験的に決定される等、様々な方法により決定することができる。許容可能な信頼度レベルは、任意的に、システム200のユーザ又は管理者、ジオフェンスの作成者(例えば、ジオフェンスに関するジオフェンスデータにおいて許容可能な信頼度レベルを特定する)等により、変更されてもよい。1以上の実施形態において、許容可能な信頼度レベルは1%であるが、この許容可能な信頼度レベルは一例であり、他の許容可能な信頼度レベルが代替的に使用されてもよい。
【0043】
特定の位置判定モジュールが許容可能な信頼度レベルを提供できるかどうかは、ジオフェンスのサイズと、位置判定モジュールにより提供された位置に関する位置不確定領域のサイズと、を所与として、容易に判定することができる。例えば、上記の式(1)を用いて、位置判定モジュールにより提供された位置に関する位置不確定領域とジオフェンスとの可能な最大の重なり合いを仮定し、1%の許容可能な信頼度レベルを仮定すると、ジオフェンス領域が1m
2であり、位置判定モジュールが、位置に関する100m
2の位置不確定領域を提供する場合、位置判定モジュールにより提供される信頼度レベルは1%である:
【数2】
したがって、位置判定モジュールは、1%という例示的な許容可能な信頼度レベルを提供する。別の例として、ジオフェンス領域が1m
2であり、位置判定モジュールが、位置に関する4000000m
2の位置不確定領域を提供する場合、位置判定モジュールにより提供される信頼度レベルは0.00000025%である:
【数3】
したがって、位置判定モジュールは、1%という例示的な許容可能な信頼度レベルを提供しない。
【0044】
したがって、システム200は、位置判定モジュールにより提供される許容可能な信頼度レベルと、ジオフェンスのサイズと、に基づいて、位置判定モジュールを動的に切り替えることができる。1つの位置判定モジュールが、許容可能な信頼度レベルを提供する場合、その1つの位置判定モジュールが、動作504において選択される。一方、複数の位置判定モジュールが許容可能な信頼度レベルを提供する状況においては、それら複数の位置判定モジュールのうちの1つの位置判定モジュールが選択される。そのような状況において複数の位置判定モジュールのうちのどの位置判定モジュールが選択されるかは、動作時に最小電力量を消費する位置判定モジュール、最短の時間で位置を提供する位置判定モジュール等といった様々なファクタに基づいて、様々な方法により決定することができる。
【0045】
位置判定モジュールに関する位置不確定領域及び位置不確定領域のサイズが特定される(動作506)。動作506における位置判定モジュールは、動作504において選択された位置判定モジュールである。位置不確定領域は、上述したように、様々な方法により判定された、位置判定モジュールの不確定性すなわち精度に基づいて、特定することができる。位置不確定領域のサイズは、位置不確定領域により包含される面積を指し、多種多様な方法のうちのいずれかの方法により特定することができる。例えば、位置不確定領域のサイズは、位置判定モジュールにより提供されてもよいし、位置不確定領域のサイズは、位置不確定領域の説明に基づいて、動作506において決定されてもよい、等である。
【0046】
ジオフェンスに到達したかどうか(コンピューティングデバイスがジオフェンスに入ったかどうか)を示す信頼度値が求められる(動作508)。このジオフェンス到達状態(geo-fence breach condition)に関する信頼度値は、コンピューティングデバイスの判定された位置に関する位置不確定領域とジオフェンスとの実際の重なり合いに依拠する上記の式(1)を用いて求めることができる。
【0047】
図6及び
図7は、1以上の実施形態に従った、重なり合っている位置不確定領域及びジオフェンスの例を示している。
図6は、例示的なジオフェンス602と、判定された位置606に関する例示的な位置不確定領域604と、を示している。位置不確定領域604とジオフェンス602との実際の重なり合いが、クロスハッチングにより示されている。
図7は、例示的なジオフェンス702と、判定された位置706に関する例示的な位置不確定領域704と、を示している。位置不確定領域704とジオフェンス702との実際の重なり合いが、クロスハッチングにより示されている。
【0048】
図5に戻ると、位置不確定領域のサイズとジオフェンスのサイズとの比率に応じて変化する閾信頼度値が求められる(動作510)。したがって、閾信頼度値は、位置不確定領域のサイズとジオフェンスのサイズとに基づいて変化する。例えば、位置不確定領域のサイズに対するジオフェンスのサイズの比率が増すにつれ、閾信頼度値も増す。したがって、ジオフェンス領域が位置不確定領域よりも大きくなればなるほど、閾信頼度値が高くなる。
【0049】
1以上の実施形態において、閾信頼度値は、(動作506において特定された)位置不確定領域のサイズに対する(動作502において特定された)ジオフェンス領域のサイズの比率に基づいて生成される。例えば、比率値αは、以下の式を用いて計算することができる:
【数4】
ここで、A
fenceは、ジオフェンスの面積を指し、A
locationは、コンピューティングデバイスの位置に関する位置不確定領域の面積を指す。
【0050】
閾信頼度値は、比率値αに基づいて、様々な方法により求めることができる。例えば、異なる比率値αが、異なるジオフェンス領域及び位置不確定領域に関して求められ得る。求められた比率値α及び想定される閾信頼度レベルを使用して、求められた比率値αと想定される閾信頼度レベルとの間の関係を表す式を生成することができる。想定される閾信頼度レベルは、システム200の開発者により経験的に決定される等、多種多様な方法により決定することができる。
【0051】
表Iは、様々な比率値αに対する想定される閾信頼度レベルの例を示している。表Iにおける想定される閾信頼度レベルは例であり、他の値が代替的に使用されてもよいことに留意すべきである。表Iにおいて、「検出可能でない」という信頼度レベルは、対応する比率値αに関してジオフェンスイベントが検出可能でないことを指す。
【表1】
【0052】
求められた比率値α及び想定される閾信頼度レベルを所与として、多種多様な方法のうちのいずれかの方法により、求められた比率値αと想定される閾信頼度レベルとの間の関係を表す式を生成することができる。例えば、求められた比率値α及び対応する想定される閾信頼度レベルをグラフ上にプロットして、近似回帰直線(approximately best fit line)を求めることができる。求められた直線に関する式が、求められた比率値αと想定される閾信頼度レベルとの間の関係を表す式である。
【0053】
1以上の実施形態において、求められた比率値αと想定される閾信頼度レベルとの間の関係を表す式は、以下の形を有する:
【数5】
ここで、C
thresholdは閾信頼度値であり、Mは係数値であり、nは指数値である。様々な異なる係数値M及び指数値nが使用され得る。例えば、係数値Mは30.704とすることができ、指数値nは0.5371とすることができる。しかしながら、これらは値の例であり、他の係数値及び指数値が代替的に使用されてもよいことに留意すべきである。
【0054】
図8は、1以上の実施形態に従った、ジオフェンス半径(テーブル800の行)及び異なる位置判定モジュール(テーブル800の列)を所与として実現され得る例示的な信頼度(例えば、おおよその最大信頼度)を示す例示的なテーブル800を示している。テーブル800は値の例であり、他の閾値、ジオフェンスサイズ、及び/又は位置不確定領域が、代替的に使用されてもよいことに留意すべきである。テーブル800の各行は、略円形領域内に含まれ得る特定のジオフェンスであって、テーブル800において特定される半径を有する特定のジオフェンスに関するものである。特定のジオフェンスの例も示されている。テーブル800の各列は、略円形領域である特定の位置不確定領域であって、テーブル800において特定される半径を有する特定の位置不確定領域に関するものである。特定の位置不確定領域に関する位置ソース(位置を判定する異なる位置判定モジュール又は異なる技術)の例も示されている。
【0055】
例えば、テーブル800は、10mの半径(したがって、π10
2=314.159m
2の面積)を有するジオフェンスと、50mの半径(したがって、π50
2=7853.982m
2の面積)を有する位置不確定領域を伴う位置判定モジュールと、に関して実現され得る信頼度値が5.45であることを示している。テーブル800内の「N/A」という値は、そのジオフェンスに関して位置判定モジュールは許容可能な信頼度値を満たすことができないことを示す。
【0056】
図5に戻ると、ジオフェンスに到達したかどうかを示す動作508において求められた信頼度値と、動作510において求められた閾信頼度値と、を所与として、求められた信頼度値が、閾信頼度値を満たすかどうかに関するチェックがなされる(動作512)。例えば、求められた信頼度値が閾信頼度値以上であるとき、求められた信頼度値は、閾信頼度値を満たす。代替的に、求められる信頼度値及び閾信頼度値は、負数として、あるいは、別の基本数(base number)から減算される等、他の形で実装されてもよく、そのような場合、求められた信頼度値が閾信頼度値以下であるとき、求められた信頼度値は、閾信頼度値を満たす。
【0057】
求められた信頼度値が、閾信頼度値を満たす場合、位置判定モジュールにより提供された位置は、ジオフェンス内に存在すると判定される(動作514)。一方、求められた信頼度値が、閾信頼度値を満たさない場合、位置判定モジュールにより提供された位置は、ジオフェンスエントリイベントの検出をもたらさない(動作516)。
【0058】
求められた信頼度値が、閾信頼度値を満たさない場合、ジオフェンスイグジットイベント、特定の時間量の間ジオフェンス内に留まっているというイベント等といった他のジオフェンスイベントが検出され得ることに留意すべきである。代替的に、位置判定モジュールにより提供された位置は、他の基準が満たされない限り、他のジオフェンスイベントをもたらさなくてもよい。例えば、ジオフェンスイグジットイベントは、求められた信頼度値が約0%になるまで(例えば、コンピューティングデバイスの判定された位置に関する位置不確定領域とジオフェンスとの重なり合いが実質的に存在しなくなるまで)、検出されなくてもよい。別の例として、ジオフェンス内に留まっているというイベントは、ジオフェンスに関するジオフェンスエントリイベントが検出され、ジオフェンスに関するジオフェンスイグジットイベントが検出されることなく少なくとも閾時間量が経過するまで、検出されなくてもよい。
【0059】
図9は、1以上の実施形態に従った、変化する信頼度レベルを用いてジオフェンスイベントを検出するための例示的なプロセス900を示すフローチャートである。プロセス900において、信頼度レベルは、ジオフェンス領域に関して位置判定モジュールの精度においてどれくらいの誤差を許容できるか(したがって、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかの判定においてどれくらいの信頼度が存在するか)である。ジオフェンスのサイズが大きくなるにつれ、位置判定モジュールの精度の許容可能な誤差量も大きくなり得る(許容可能な現在の位置不確定領域も大きくなり得る)。これにより、それほど精度が高くない位置判定モジュールを使用することが可能である。ジオフェンスのサイズが小さくなるにつれ、位置判定モジュールの精度の許容可能な誤差量も小さくなり得る(許容可能な現在の位置不確定領域も小さくなり得る)ので、より精度の高い位置判定モジュールが使用される。
【0060】
プロセス900は、
図2のシステム200等のシステムにより実行される。プロセス900は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せにより実装することができる。プロセス900が、一連の動作として示されているが、プロセス900は、様々な動作のオペレーションを実行するために、図示される順番に限定されるものではない。プロセス900は、変化する信頼度レベルを用いてジオフェンスイベントを検出するための例示的なプロセスである。変化する信頼度レベルを用いてジオフェンスイベントを検出することについての異なる図を参照するさらなる説明が、本明細書に含まれる。
【0061】
プロセス900において、ジオフェンス及びジオフェンスのサイズが特定される(動作902)。特定されるジオフェンスは、ジオフェンス判別モジュールにより選択されたジオフェンスであり、ジオフェンスのサイズは、
図4の動作402に関して上述したものと同様の様々な方法により決定することができる。
【0062】
ジオフェンスのサイズを所与として、所望される位置精度が特定される(動作904)。この所望される位置精度は、式、テーブル等、多種多様な方法により特定することができる。この所望される位置精度はまた、以下でより詳細に説明するように、ジオフェンスの近接度にも基づいてもよい。1以上の実施形態において、システム200は、異なるジオフェンスサイズに関する所望される位置精度を示す所望位置精度テーブルを有するよう、あるいは、そのような所望位置精度テーブルにアクセスするよう構成される。所望位置精度テーブルには、システム200の設計者により経験的に行われる等、様々な方法により、異なるジオフェンスサイズに関する所望される位置精度を投入することができる。
【0063】
図10は、1以上の実施形態に従った、異なるジオフェンスサイズに関する所望される位置精度(例えば、おおよその最小位置精度)を示す例示的なテーブル1000を示している。テーブル1000の各行は、略円形領域である特定のジオフェンスであって、テーブル1000において特定される半径を有する特定のジオフェンスに関するものである。テーブル1000の列1002は、特定のジオフェンスの例を示している。テーブル1000の列1004は、ジオフェンスに関する例示的な所望される精度(例えば、おおよその最小位置精度)を示している。例えば、テーブル1000は、≦50mである範囲の半径を有するジオフェンスに関して、所望される位置精度がジオフェンス半径の2倍であることを示している。
【0064】
テーブル1000は、特定の半径の略円形領域であるジオフェンスと、位置に関する略円形位置不確定領域の半径の観点での所望される精度と、を示している。これらは例であり、ジオフェンス及び/又は所望される精度は、他の形状に関して(例えば、半径ではない領域として)、他の方法により特定されてもよいことに留意すべきである。
【0065】
テーブル1000において、特定の値が例示されているが、他の値が代替的に使用されてもよいことに留意すべきである。例えば、個々の値ではなく、比例値(proportional value)が使用されてもよい。例えば、ジオフェンス半径が500mであり、所望される精度が500mである場合、250mの半径を有するジオフェンスに関する所望される精度は250mとすることができ、125mの半径を有するジオフェンスに関する所望される精度は125mとすることができる、等である。
【0066】
図9に戻ると、使用する位置判定モジュールが、特定された所望される位置精度に基づいて選択される(動作906)。上述したように、異なる位置判定技術は、それぞれの精度において異なる関連付けられた不確定性を有し得る。所望される位置精度を所与として、その所望される位置精度を提供する位置判定モジュールを容易に特定することができる(例えば、所望される位置精度より低い関連付けられた不確定性(例えば、誤差半径)を有する位置判定モジュール)。1つの位置判定モジュールが、所望される位置精度を提供する場合、その1つの位置判定モジュールが、動作906において選択される。一方、複数の位置判定モジュールが所望される位置精度を提供する状況においては、それら複数の位置判定モジュールのうちの1つの位置判定モジュールが選択される。複数の位置判定モジュールのうちのどの位置判定モジュールが選択されるかは、動作時に最小電力量を消費する位置判定モジュール、最短の時間で位置を提供する位置判定モジュール等、様々な方法により決定することができる。
【0067】
位置判定モジュールに関する位置不確定領域が特定される(動作908)。動作908における位置判定モジュールは、動作906において選択された位置判定モジュールである。位置不確定領域は、上述したように、様々な方法により判定された、位置判定モジュールの不確定性に基づいて特定することができる。
【0068】
位置判定モジュールに関する位置不確定領域が許容可能であるかどうかに関するチェックがなされる(動作910)。位置不確定領域が許容可能であるかどうかは、式、テーブル等、多種多様な方法により判定することができる。1以上の実施形態において、システム200は、異なるジオフェンスサイズに関する許容可能な不確定性を示す許容可能不確定性テーブルを有するよう、あるいは、そのような許容可能不確定性テーブルにアクセスするよう構成される。許容可能不確定性テーブルには、システム200の設計者により経験的に行われる等、様々な方法により、異なるジオフェンスサイズに関する許容可能な不確定性を投入することができる。
【0069】
1以上の実施形態において、許容可能不確定性テーブルは、
図10のテーブル1000の一部とし含まれる。テーブル1000において、許容可能な不確定性が、位置に関する略円形位置不確定領域の半径の観点で、列1006として示されている。これらは例であり、許容可能な誤差は、他の形状に関して(例えば、半径ではない領域として)、他の方法により特定されてもよいことに留意すべきである。
【0070】
位置判定モジュールから取得された位置不確定領域が許容可能でない場合、ジオフェンスはトリガされない(動作912)。プロセス900は終了してもよいし、動作906に戻って、使用する異なる位置判定モジュール(例えば、前に選択された位置判定モジュールよりも高精度の位置判定モジュール)を選択することを試みてもよい。
【0071】
一方、位置判定モジュールに関する位置不確定領域が許容可能である場合、位置に関する位置不確定領域を使用して、位置がジオフェンス内に存在するかジオフェンス外に存在するかを判定する。位置が以前にはジオフェンス外に存在した、したがって、ジオフェンスイベントがジオフェンスに入ったことである場合、位置不確定領域の略中心を使用して、コンピューティングデバイスの位置がジオフェンス内に存在するかジオフェンス外に存在するかを判定する(動作914)。位置不確定領域の略中心がジオフェンス内に存在する場合、位置はジオフェンス内に存在すると判定され、位置不確定領域の略中心がジオフェンス内に存在しない場合、位置はジオフェンス外に存在すると判定される。
【0072】
位置が以前にはジオフェンス内に存在した、したがって、検出されるジオフェンスイベントがジオフェンスから出たことである(あるいは、特定の時間量の間ジオフェンス内に留まっていることである)場合、位置不確定領域の実質的に全てを使用して、コンピューティングデバイスの位置がジオフェンス内に存在するかジオフェンス外に存在するかを判定する(動作916)。位置不確定領域の実質的に全てがジオフェンス外に存在する場合、位置はジオフェンス外に存在すると判定され、位置不確定領域の実質的に全てがジオフェンス外に存在しない場合、位置はジオフェンス内に存在するとして変化のないままである。
【0073】
動作914については、現在の位置不確定領域の略中心がジオフェンス内に存在することに言及して説明し、動作916については、位置不確定領域の実質的に全てがジオフェンス外に存在することに言及して説明したが、位置不確定領域の異なる部分が使用されてもよいことに留意すべきである。例えば、動作914において、位置不確定領域の実質的に全て又は位置不確定領域の一部のみを使用して、コンピューティングデバイスがジオフェンス内に存在するかどうかを判定してもよい。別の例として、動作916において、位置不確定領域の略中心又は位置不確定領域の別の部分を使用して、コンピューティングデバイスがジオフェンス外に存在するかどうかを判定してもよい。
【0074】
テーブル1000において、ジオフェンスに関する所望される精度の列1004及び許容可能な不確定性の列1006が示されていることにも留意すべきである。ジオフェンスから出たこと及びジオフェンスに入ったことの両方を判定するために、同じ所望される精度及び許容可能な不確定性が使用され得る。代替的に、ジオフェンスから出た場合とジオフェンスに入った場合とで、異なる所望される精度及び許容可能な不確定性が使用されてもよい。例えば、列1004は、ジオフェンスに入ったことを判定する場合のジオフェンスに関する所望される精度とし、テーブル1000は、ジオフェンスから出たことを判定する場合のジオフェンスに関する所望される精度の追加の列を含んでもよい。ジオフェンスから出たことを判定する場合のジオフェンスに関する所望される精度は、列1004に列挙されている値の2倍(例えば、≦35mの範囲の半径を有するジオフェンスから出たことを判定することに関して、所望される精度は、70m×2=140mとすることができる)等、様々な値とすることができる。別の例として、列1006は、ジオフェンスに入ったことを判定する場合のジオフェンスに関する許容可能な不確定性とし、テーブル1000は、ジオフェンスから出たことを判定する場合のジオフェンスに関する許容可能な不確定性の追加の列を含んでもよい。ジオフェンスから出たことを判定する場合のジオフェンスに関する許容可能な不確定性は、列1006に列挙されている値の2倍(例えば、≦50mの範囲の半径を有するジオフェンスから出たことを判定することに関して、許容可能な不確定性は、150m×2=300mとすることができる)等、様々な値とすることができる。
【0075】
再度動作904を参照すると、複数の異なるジオフェンスがコンピューティングデバイスの近くにある(例えば、複数の異なるジオフェンスが
図2のジオフェンス判別モジュール204により選択される)状況が生じることがある。そのような状況において、それら複数のジオフェンスのうちの1つのジオフェンスが、最も厳格である(あるいは、ほぼ最も厳格である)ジオフェンス等、動作904において所望される位置精度が特定されているジオフェンスとして選択される。
図11は、この状況の一例を示している。
【0076】
図11は、1以上の実施形態に従った複数の重なり合っているジオフェンスを示している。コンピューティングデバイスの現在位置1102が示されており、ジオフェンス1104、1106、1108、及び1110のセットが、
図2のジオフェンス判別モジュール204により選択されている。ジオフェンス1110は、現在位置1102に最も近く、ジオフェンス1104〜1110のうち最大の所望される位置精度を有する。ジオフェンス1110が、動作904において所望される位置精度が特定されているジオフェンスとして選択され得る。代替的に、動作904において所望される位置精度が特定されているジオフェンスとしてジオフェンス1110が選択される代わりに、ジオフェンス1104〜1108のうちの1つのジオフェンスが選択される。
【0077】
図9に戻ると、どのジオフェンスが最も厳格である(あるいは、ほぼ最も厳格である)と判定されるかは、複数のジオフェンスのセット及び許容可能な誤差半径のセットに基づいて判定される。例えば、最も厳格である(あるいは、ほぼ最も厳格である)と判定されるジオフェンスは、複数のジオフェンスのうちどのジオフェンスが以下の式に関して最小値を有するかを判定することにより、判定することができる:
((distance(G
i)+A
i)−distance(G
0); 0≦i≦n
ここで、「distance()」は、コンピューティングデバイスの現在位置と、括弧内のジオフェンスの最も近いエッジと、の間の距離を指し、G
iは、G
0が最も近いジオフェンスである最大ジオフェンスのエッジから現在位置(例えば、
図11のジオフェンス1104)の略中心までの距離順であるジオフェンスのセット{G
0,G
1,...,G
n}におけるジオフェンスであり、A
iは、
図10のテーブル1000内に示されるような、ジオフェンスG
iに関する許容可能な誤差半径である。
【0078】
どのジオフェンスが最も厳格である(あるいは、ほぼ最も厳格である)かのこの判定は、略円形領域であり特定の半径を有するジオフェンスに基づく。これらは例であり、ジオフェンスは、他の形状に関して(例えば、半径ではない領域として)、他の方法により特定されてもよいことに留意すべきである。
【0079】
代替的に、動作904において所望される位置精度が特定されている1つのジオフェンスを選択する代わりに、複数のジオフェンスに関する所望される位置精度を組み合わせて、動作904において所望される位置精度を特定してもよい。各々が所望される位置精度を有するジオフェンス{G
0,G
1,...,G
n}が、各ジオフェンスがコンピューティングデバイスの現在位置にどれくらい近いかに基づいて重み付けされる等、この組合せは、最も近くにあるジオフェンスのセットの重み付けとすることができる(例えば、コンピューティングデバイスの現在位置のより近くにあるジオフェンスは、コンピューティングデバイスの現在位置から離れているジオフェンスよりも高く重み付けされる)。次いで、重み付けされた所望される位置精度を組み合わせて(例えば、足し合わせて)、動作904のための所望される位置精度を生成することができる。
【0080】
特定のモジュールを参照しながら特定の機能について本明細書で説明したが、本明細書で説明した個々のモジュールの機能は、複数のモジュールに分割されてもよいし、且つ/あるいは、複数のモジュールの少なくとも一部の機能は、1つのモジュールに結合されてもよいことに留意すべきである。さらに、あるアクションを実行するものとして本明細書で説明した特定のモジュールは、そのアクションを実行するその特定のモジュール自体を含む、あるいは、そのアクションを実行する(あるいは、その特定のモジュールと協働してそのアクションを実行する)別のコンポーネント又はモジュールを呼び出すその特定のモジュール又はそのアクションを実行する(あるいは、その特定のモジュールと協働してそのアクションを実行する)別のコンポーネント又はモジュールに別の形でアクセスするその特定のモジュールを含む。したがって、あるアクションを実行する特定のモジュールは、そのアクションを実行するその特定のモジュール自体、及び/又は、その特定のモジュールにより呼び出される、あるいはその特定のモジュールにより別の形でアクセスされる、そのアクションを実行する別のモジュールを含む。
【0081】
図12は、本明細書で説明した様々な技術を実装することができる1以上のシステム及び/又はデバイスを表す例示的なコンピューティングデバイス1202を含む例示的なシステムを、概括的に1200で示している。コンピューティングデバイス1202は、例えば、サービスプロバイダのサーバ、クライアントに関連付けられたデバイス(例えば、クライアントデバイス)、オンチップシステム、及び/又は、任意の他の適切なコンピューティングデバイス若しくはコンピューティングシステムとすることができる。
【0082】
図示される例示的なコンピューティングデバイス1202は、処理システム1204、1以上のコンピュータ読み取り可能な媒体1206、及び互いに通信可能に接続される1以上のI/Oインタフェース1208を含む。図示されていないが、コンピューティングデバイス1202は、様々なコンポーネントを互いと接続するシステムバス又は他のデータ・コマンド転送システムをさらに含み得る。システムバスは、メモリバス若しくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、及び/又は、様々なバスアーキテクチャのうちのいずれかを利用するプロセッサバス若しくはローカルバス等の様々なバス構造の任意の1つ又は組合せを含み得る。制御ライン及びデータライン等の多様な他の例も意図されている。
【0083】
処理システム1204は、ハードウェアを用いて1以上のオペレーションを実行する機能を表す。したがって、処理システム1204は、プロセッサ、機能ブロック等として構成することができるハードウェア要素1210を含むものとして示されている。これは、特定用途向け集積回路、又は、1以上の半導体を用いて形成される他の論理デバイスとしてのハードウェアによる実装物を含み得る。ハードウェア要素1210は、ハードウェア要素1210が形成される材料又はハードウェア要素1210において利用される処理機構により限定されるものではない。例えば、プロセッサは、1以上の半導体及び/又はトランジスタ(例えば、電子集積回路(IC))から構成され得る。そのようなコンテキストにおいて、プロセッサ実行可能な命令は、電子的に実行可能な命令であり得る。
【0084】
コンピュータ読み取り可能な媒体1206は、メモリ/ストレージ1212を含むものとして示されている。メモリ/ストレージ1212は、1以上のコンピュータ読み取り可能な媒体に関連付けられたメモリ/ストレージ能力を表す。メモリ/ストレージ1212は、揮発性媒体(ランダムアクセスメモリ(RAM)等)及び/又は不揮発性媒体(読み取り専用メモリ(ROM)、フラッシュメモリ、光ディスク、磁気ディスク等)を含み得る。メモリ/ストレージ1212は、固定媒体(例えば、RAM、ROM、固定ハードドライブ等)に加えて、着脱可能な媒体(例えば、フラッシュメモリ、着脱可能なハードドライブ、光ディスク等)を含み得る。コンピュータ読み取り可能な媒体1206は、以下でさらに説明するように、多様な他の態様で構成されてもよい。
【0085】
1以上の入力/出力インタフェース1208は、ユーザが様々な入力デバイスを用いてコマンド及び情報をコンピューティングデバイス1202に入力できるようにするとともに、様々な出力デバイスを用いて情報をユーザ及び/又は他のコンポーネントに提示できるようにする機能を表す。入力デバイスの例は、キーボード、カーソル制御デバイス(例えば、マウス)、マイクロフォン(例えば、音声入力用)、スキャナ、タッチ機能(例えば、物理的タッチを検出するよう構成される静電容量式センサ又は他のセンサ)、(例えば、ジェスチャとしてのタッチを含まない動きを検出するために、赤外線周波数等の非可視波長又は可視波長を利用することができる)カメラ等を含む。出力デバイスの例は、ディスプレイデバイス(例えば、モニタやプロジェクタ)、スピーカ、プリンタ、ネットワークカード、触覚応答デバイス等を含む。したがって、コンピューティングデバイス1202は、ユーザインタラクションをサポートするために、以下でさらに説明するように、多様な態様で構成することができる。
【0086】
コンピューティングデバイス1202はまた、ジオフェンスシステム1214を含む。ジオフェンスシステム1214は、上述した変化する信頼度レベルを用いたジオフェンスイベントの検出を含む様々なジオフェンス機能を提供する。ジオフェンスシステム1214は、例えば、
図2のシステム200を実装することができる。
【0087】
様々な技術が、ソフトウェア、ハードウェア要素、又はプログラムモジュールの一般的コンテキストにおいて本明細書で説明され得る。一般に、そのようなモジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造等を含む。本明細書で使用される「モジュール」、「機能」、及び「コンポーネント」という用語は、一般に、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せを表す。本明細書で説明した技術の特徴は、プラットフォーム非依存であり、これは、そのような技術が、様々なプロセッサを有する様々なコンピューティングプラットフォーム上で実装され得ることを意味する。
【0088】
説明したモジュール及び技術の実装物は、何らかの形態のコンピュータ読み取り可能な媒体に記憶されてもよいし、そのようなコンピュータ読み取り可能な媒体を介して伝送されてもよい。コンピュータ読み取り可能な媒体は、コンピューティングデバイス1202がアクセスできる様々な媒体を含み得る。限定ではなく例として、コンピュータ読み取り可能な媒体は、「コンピュータ読み取り可能な記憶媒体」及び「コンピュータ読み取り可能な信号媒体」を含み得る。
【0089】
「コンピュータ読み取り可能な記憶媒体」とは、単なる信号伝送、搬送波、又は信号自体ではなく、情報の永続的記憶を可能にする媒体及び/若しくはデバイス、並びに/又は有体のストレージを指す。したがって、コンピュータ読み取り可能な記憶媒体は、非信号伝送媒体を指す。コンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、論理要素/回路、又は他のデータ等といった情報を記憶するのに適した方法又は技術により実装された、揮発性及び不揮発性の着脱可能及び着脱不可能な媒体及び/又は記憶デバイス等のハードウェアを含む。コンピュータ読み取り可能な記憶媒体の例は、RAM、ROM、EEPROM、フラッシュメモリ、若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気記憶デバイス、又は、所望の情報を記憶するのに適した、コンピュータがアクセスできる他の記憶デバイス、有体の媒体、若しくは製品を含み得るが、これらに限定されるものではない。
【0090】
「コンピュータ読み取り可能な信号媒体」とは、ネットワークを介して等、コンピューティングデバイス1202のハードウェアに命令を伝送するよう構成された信号伝送媒体を指す。信号媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータを、搬送波、データ信号、又は他の伝送機構等の変調されたデータ信号内に具現化することができる。信号媒体はまた、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定又は変更された特性のうちの1以上を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、RF、赤外線、及び他の無線媒体等の無線媒体と、を含む。
【0091】
前述したように、ハードウェア要素1210及びコンピュータ読み取り可能な媒体1206は、本明細書で説明した技術の少なくとも一部の態様を実装するためにいくつかの実施形態において使用することができる、ハードウェア形態で実装された命令、モジュール、プログラマブルデバイスロジック、及び/又は固定デバイスロジックを表す。ハードウェア要素は、集積回路又はオンチップシステム、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブル論理デバイス(CPLD)、及び、シリコンによる他の実装物又は他のハードウェアデバイスのコンポーネントを含み得る。このコンテキストにおいて、ハードウェア要素は、そのハードウェア要素により具現化される命令、モジュール、及び/又はロジックにより定められるプログラムタスクを実行する処理デバイスに加えて、前述したコンピュータ読み取り可能な記憶媒体等の、実行される命令を記憶するために利用されるハードウェアデバイスとして動作することができる。
【0092】
前述したものの組合せを使用して、本明細書で説明した様々な技術及びモジュールを実装することもできる。したがって、ソフトウェア、ハードウェア、又は、プログラムモジュール及び他のプログラムモジュールは、何らかの形態のコンピュータ読み取り可能な記憶媒体上に具現化される、且つ/あるいは、1以上のハードウェア要素1210により具現化される1以上の命令及び/又はロジックとして実装することができる。コンピューティングデバイス1202は、ソフトウェアモジュール及び/又はハードウェアモジュールに対応する特定の命令及び/又は機能を実行するよう構成することができる。したがって、ソフトウェアとしてコンピューティングデバイス1202により実行可能なモジュールとしてのモジュールの実装は、例えば、処理システムのハードウェア要素1210及び/又はコンピュータ読み取り可能な記憶媒体を使用することにより、ハードウェアにより少なくとも部分的に実現することができる。命令及び/又は機能は、本明細書で説明した技術、モジュール、及び例を実装する1以上の製品(例えば、1以上のコンピューティングデバイス1202及び/又は処理システム1204)により、実行可能/動作可能であり得る。
【0093】
図12にさらに示されるように、例示的なシステム1200は、パーソナルコンピュータ(PC)、モバイルデバイス、及び/又は他のデバイス上でアプリケーションを実行する際のシームレスなユーザエクスペリエンスのためのユビキタス環境を可能にする。サービス及びアプリケーションは、アプリケーションを利用している間、ビデオゲームをプレイしている間、ビデオを見ている間等に1つのデバイスから次のデバイスに移る際の共通のユーザエクスペリエンスのために、これらの環境において実質的に同様に動作する。
【0094】
例示的なシステム1200において、複数のデバイスが、中央コンピューティングデバイスを介して相互接続される。中央コンピューティングデバイスは、複数のデバイスに対してローカルにあってもよいし、複数のデバイスからリモートに位置してもよい。1以上の実施形態において、中央コンピューティングデバイスは、ネットワーク、インターネット、又は他のデータ通信リンクを介して複数のデバイスに接続される1以上のサーバコンピュータのクラウドであり得る。
【0095】
1以上の実施形態において、この相互接続アーキテクチャは、複数のデバイスのユーザに共通のシームレスなエクスペリエンスを提供するために、複数のデバイスにわたって機能を配信することを可能にする。複数のデバイスの各々は、異なる物理的要件及び能力を有し得、中央コンピューティングデバイスは、各デバイス向けに合わせられながらも全てのデバイスに共通であるエクスペリエンスを各デバイスに提供することを可能にするプラットフォームを使用する。1以上の実施形態において、ターゲットデバイスのクラスが作成され、エクスペリエンスが、デバイスの一般クラス向けに合わせられる。デバイスのクラスは、デバイスの物理的特徴、使用のタイプ、又は他の共通特性により定められ得る。
【0096】
様々な実装において、コンピューティングデバイス1202は、コンピュータ1216又はモバイル1218等の使用のために、多種多様な構成をとることができる。これらの構成の各々は、一般に異なる構造及び能力を有し得るデバイスを含み、したがって、コンピューティングデバイス1202は、異なるデバイスクラスのうちの1以上のデバイスクラスに従って構成され得る。例えば、コンピューティングデバイス1202は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブック等を含むデバイスのコンピュータ1216クラスとして実装され得る。コンピューティングデバイス1202はまた、携帯電話機、ポータブル音楽プレーヤ、ポータブルゲームデバイス、タブレットコンピュータ、ウェアラブルデバイス、マルチスクリーンコンピュータ等といったモバイルデバイスを含むデバイスのモバイル1218クラスとして実装され得る。
【0097】
本明細書で説明した技術は、コンピューティングデバイス1202のこれら様々な構成によりサポートされ得るが、本明細書で説明した技術の特定の例に限定されるものではない。本機能は、以下で説明するように、プラットフォーム1224を経由して「クラウド」1222を介する等、分散システムの使用により全て又は一部が実装されてもよい。
【0098】
クラウド1222は、リソース1226のためのプラットフォーム1224を含む、且つ/あるいは、リソース1226のためのプラットフォーム1224を表す。プラットフォーム1224は、クラウド1222のハードウェアリソース(例えば、サーバ)及びソフトウェアリソースの基礎をなす機能を抽象化する。リソース1226は、コンピューティングデバイス1202からリモートにあるサーバ上でコンピュータ処理が実行されている間に利用することができるアプリケーション及び/又はデータを含み得る。リソース1226はまた、インターネット、及び/又は、セルラネットワーク若しくはWi−Fi(登録商標)ネットワーク等の加入者ネットワークを介して提供されるサービスを含み得る。
【0099】
プラットフォーム1224は、コンピューティングデバイス1202を他のコンピューティングデバイスに接続するためのリソース及び機能を抽象化することができる。プラットフォーム1224はまた、リソースのスケーリングを抽象化して、プラットフォーム1224を介して実装されるリソース1226を求める受けた要求に対するスケールの対応するレベルを提供するよう機能することができる。したがって、相互接続されるデバイスの実施形態において、本明細書で説明した機能の実装物は、システム1200にわたって分散させることができる。例えば、本明細書で説明した機能は、コンピューティングデバイス1202上に一部を実装することができるとともに、クラウド1222の機能を抽象化するプラットフォーム1224を介して実装することができる。
【0100】
構造的特徴及び/又は方法論的動作に特有の言葉で主題について説明したが、添付の特許請求の範囲において定められる主題は、上述した特定の特徴又は動作に必ずしも限定されるものではない。そうではなく、上述した特定の特徴及び動作は、請求項を実施する例示的な形態として開示されている。