(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスが、所定のプログラムが実行されるようスケジュールされない、オペレーティングシステムの節約期間中に、前記コンピューティングデバイスに関する１以上のジオフェンスイベントが発生したときを検出するステップと、
前記コンピューティングデバイスが、複数のジオフェンスの各々に関するジオフェンスイベントのレコードを保持するステップと、
前記コンピューティングデバイスが、前記複数のジオフェンスのうちの少なくとも１つのジオフェンスに関連付けられたプログラムが、前記オペレーティングシステムの実行期間中に実行されるようスケジュールされている時間まで、待機するステップと、
前記コンピューティングデバイスが、前記待機の後、前記プログラムに対して、ジオフェンスイベントの前記レコードから、前記複数のジオフェンスのうちの前記少なくとも１つのジオフェンスに関する１以上のジオフェンスイベントのインジケーションを提供するステップと、
前記コンピューティングデバイスが、時間期間の満了に基づいて、ジオフェンスイベントの前記レコードから、特定のジオフェンスイベントを削除するステップと、
を含む方法。
【請求項２】
提供する前記ステップは、前記コンピューティングデバイスが、前記複数のジオフェンスの各々について、最も直近のジオフェンスイグジットイベント及び／又は最も直近のジオフェンスエントリイベントのみを提供するステップを含む、請求項１記載の方法。
【請求項３】
保持する前記ステップは、前記コンピューティングデバイスが、前記複数のジオフェンスの各々について、複数のジオフェンスイグジットイベント及び複数のジオフェンスエントリイベントのレコードを保持するステップを含む、請求項２記載の方法。
【請求項４】
前記コンピューティングデバイスが、前記プログラムに関連付けられた前記複数のジオフェンスのうちの１つのジオフェンスを削除することを前記プログラムに通知することなく、前記複数のジオフェンスのうちの前記１つのジオフェンスを削除するステップ
をさらに含む、請求項１記載の方法。
【請求項５】
提供する前記ステップは、前記コンピューティングデバイスが、前記プログラムに関連付けられた複数のジオフェンスに関する１以上のジオフェンスイベントを融合することにより、１以上のジオフェンスイベントの前記インジケーションを前記プログラムに提供するステップを含む、請求項１記載の方法。
【請求項６】
提供する前記ステップは、前記コンピューティングデバイスが、前記ジオフェンス又は前記プログラムに関連付けられた１以上のさらなる基準が満たされた場合にのみ、ジオフェンスイベントの前記インジケーションを前記プログラムに提供するステップを含む、請求項１記載の方法。
【請求項７】
複数のジオフェンスに関するジオフェンスデータを記憶するデータ記憶部であって、ジオフェンスに関する前記ジオフェンスデータは、該ジオフェンスに関連付けられたプログラムのインジケーションを含む、データ記憶部と、
所定のプログラムが実行されるようスケジュールされない、オペレーティングシステムの節約期間中に、１以上のジオフェンスイベントが発生したときを含む、前記複数のジオフェンスに関する１以上のジオフェンスイベントが発生したときを検出するジオフェンスイベント検出モジュールと、
前記の検出された１以上のジオフェンスイベントのレコードを保持させるジオフェンスイベント記憶モジュールと、
前記オペレーティングシステムの実行期間中に後で実行されるようスケジュールされているプログラムに対して、前記の検出された１以上のジオフェンスイベントの前記レコードに含まれる１以上のジオフェンスイベントのインジケーションを提供することを、前記オペレーティングシステムが前記実行期間に入るまで待機するジオフェンスイベントレポートモジュールと、
を備えたコンピューティングデバイス。
【請求項８】
前記レコードは、ジオフェンスに関する検出されたジオフェンスイベントのレコードであって、該ジオフェンスに関連付けられた前記プログラムが実行されているかどうかに関係なく検出されたジオフェンスイベントのレコードである、請求項７記載のコンピューティングデバイス。
【請求項９】
ジオフェンスイベントの前記レコードは、各ジオフェンスイベントについて、該ジオフェンスイベントのアイデンティフィケーションと、該ジオフェンスイベントが検出された時間のタイムスタンプと、を含む、請求項７記載のコンピューティングデバイス。
【請求項１０】
コンピューティングデバイスが、所定のプログラムが実行されるようスケジュールされない、オペレーティングシステムの節約期間中に、前記コンピューティングデバイスに関する１以上のジオフェンスイベントが発生したときを検出するステップと、
前記コンピューティングデバイスが、複数のジオフェンスの各々に関するジオフェンスイベントのレコードを保持するステップであって、該ステップは、前記コンピューティングデバイスが、前記複数のジオフェンスの各々について、複数のジオフェンスイグジットイベント及び複数のジオフェンスエントリイベントのレコードを保持するステップを含み、ジオフェンスイベントの前記レコードは、各ジオフェンスイベントについて、該ジオフェンスイベントのアイデンティフィケーションと、該ジオフェンスイベントが検出された時間のタイムスタンプと、を含む、ステップと、
前記コンピューティングデバイスが、前記複数のジオフェンスのうちの２以上のジオフェンスに関連付けられたプログラムに対して、前記プログラムが前記オペレーティングシステムの実行期間中に実行されるようスケジュールされている時間に、前記プログラムが前記オペレーティングシステムの前記実行期間中に実行されたことに応じて、ジオフェンスイベントの前記レコードから、前記複数のジオフェンスのうちの前記２以上のジオフェンスの各々に関する最も直近のジオフェンスイグジットイベント及び最も直近のジオフェンスエントリイベントのインジケーションを提供するステップと、
を含む方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティング技術が進化するにつれ、ますます強力なモバイルデバイスが利用可能になってきている。例えば、スマートフォンが一般的になっている。そのようなデバイスの移動性は、所定のアクションがデバイスの位置に基づいてデバイスにより行われる位置に基づく機能等、様々なタイプの機能の開発をもたらしている。この機能は、多くの利点を有するが、問題がないわけではない。そのような１つの問題は、デバイスの位置をプログラムに通知する予想される頻度よりも頻繁にデバイスの位置をプログラムに通知するのを試みることがあることである。これは、プログラムが実行されると予想される頻度に関するデバイス制御が迂回される（circumvented）ことをもたらすおそれがあり、これは、デバイスにおける電力使用の増大及びバッテリ寿命の低下をもたらし、したがって、デバイスを使用する際のユーザエクスペリエンスの低下をもたらす。
【発明の概要】
【０００２】
この概要は、発明を実施するための形態において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。
【０００３】
１以上の態様に従うと、所定のプログラムが実行されるようスケジュールされない、オペレーティングシステムの節約期間（conservation  period）中に、コンピューティングデバイスに関する１以上のジオフェンスイベントの発生が検出される。複数のジオフェンスの各々に関するジオフェンスイベントのレコードが保持される。複数のジオフェンスのうちの少なくとも１つのジオフェンスに関連付けられたプログラムが、オペレーティングシステムの実行期間（execution  period）中に実行されるようスケジュールされている時間に、ジオフェンスイベントのレコードのうち、複数のジオフェンスのうちの少なくとも１つのジオフェンスに関する１以上のジオフェンスイベントのインジケーションが、プログラムに提供される。
【図面の簡単な説明】
【０００４】
同じ符号が、同様の特徴を参照するために、図面全体を通じて使用される。
【図１】本明細書で説明するジオフェンスイベントの融合を用いることができる例示的なシステムを示す図。
【図２】１以上の実施形態に従った、ジオフェンスイベントの融合を実施する例示的なシステムを示すブロック図。
【図３】１以上の実施形態に従った、位置が判定されるべきであるかどうかをユーザが選択することを可能にするためにユーザに対して表示され得る例示的なユーザインタフェースを示す図。
【図４】１以上の実施形態に従った、オペレーションの様々な期間の例を示す図。
【図５】１以上の実施形態に従った、ジオフェンスイベントを融合するための例示的なプロセスを示すフローチャート。
【図６】本明細書で説明する様々な技術を実装することができる１以上のシステム及び／又はデバイスを表す例示的なコンピューティングデバイスを含む例示的なシステムを示す図。
【発明を実施するための形態】
【０００５】
ジオフェンスイベントの融合（coalescing）について本明細書で説明する。コンピューティングデバイスの位置が判定され、関心領域の位置が特定される。関心領域は、ジオフェンスとも呼ばれる地理的領域である。複数のジオフェンスがコンピューティングデバイスにより特定され得、異なるジオフェンスがコンピューティングデバイス上の異なるプログラムに関連付けられ得る。コンピューティングデバイスのオペレーティングシステムは、コンピューティングデバイスに関するオペレーションの複数の異なる期間を実装し、この複数の異なる期間は、所定のプログラムが実行されるよう通常はスケジュールされない節約期間と、そのようなプログラムが実行されるよう通常はスケジュールされる実行期間と、を含む。コンピューティングデバイスのシステムは、コンピューティングデバイスがジオフェンスに入ったとき又はジオフェンスから出たときに発生するジオフェンスイベントを特定する。システムは、複数のジオフェンスの各々に関するジオフェンスイベントのレコードを保持し、オペレーティングシステムの実行期間中にプログラムがコンピューティングデバイス上で実行されるようスケジュールされている時間に、それらジオフェンスイベントのうち選択されたジオフェンスイベント（例えば、プログラムに関連付けられた各ジオフェンスに最も直近入ったこと、及び、プログラムに関連付けられた各ジオフェンスから最も直近出たことに関するジオフェンスイベント）をプログラムに提供する。
【０００６】
図１は、本明細書で説明するジオフェンスイベントの融合を用いることができる例示的なシステム１００を示している。システム１００は、コンピューティングデバイス１０２を含む。コンピューティングデバイス１０２は、様々なタイプのデバイスのうちの任意のデバイスとすることができるが、典型的にはモバイルデバイスである。例えば、コンピューティングデバイス１０２は、スマートフォン又は他の無線電話機、ラップトップコンピュータ又はネットブックコンピュータ、タブレットコンピュータ又はノートパッドコンピュータ、ウェアラブルコンピュータ、移動局、エンターテイメント機器、オーディオ再生デバイス及び／又はビデオ再生デバイス、ゲームコンソール、自動車用コンピュータ等とすることができる。コンピューティングデバイス１０２は、一般に、モバイルデバイスと呼ばれる。なぜならば、デバイス１０２は、複数の異なる位置に移動される（例えば、ユーザが異なる位置に移動するときにユーザと一緒にユーザにより運ばれる）よう設計又は意図されているからである。
【０００７】
コンピューティングデバイス１０２の位置は、以下でより詳細に説明するように、無線ネットワーキング（例えば、Ｗｉ−Ｆｉ（登録商標））三角測位、セルラ測位、全地球航法衛星システム（ＧＮＳＳ）測位、ネットワークアドレス（例えば、インターネットプロトコル（ＩＰ）アドレス）測位等といった多種多様な技術のうちの任意の技術を用いて判定することができる。異なる位置判定技術は、異なる精度誤差又は関連付けられた不確定性を有し得る。例えば、位置判定技術は、１０メートル（ｍ）又は１０キロメートル（ｋｍ）の精度であり得る。したがって、コンピューティングデバイス１０２の位置は、正確には示されず、コンピューティングデバイス１０２を取り囲む領域１０４として示される。領域１０４は、コンピューティングデバイス１０２の判定された位置の不確定性を表し、したがって、コンピューティングデバイスが、特定の位置（例えば、領域１０４の略中心）に存在すると判定されたとしても、コンピューティングデバイス１０２は、実際には、領域１０４内のどこかに存在するであろう。
【０００８】
システム１００はまた、複数のジオフェンス１１２、１１４、１１６、及び１１８も示している。各ジオフェンス１１２〜１１８は、コンピューティングデバイス１０２、コンピューティングデバイス１０２のユーザ、コンピューティングデバイス１０２上で実行されているプログラム等にとって関心のある多種多様な場所のうちの任意の場所であり得る。例えば、ジオフェンス１１２〜１１８は、ユーザの自宅、ユーザの職場、ユーザにより訪問され得るレストラン又は事業所、教育施設、公共サービス（例えば、病院や図書館）、地理的場所（例えば、街や国）等であり得る。
【０００９】
ジオフェンス１１２〜１１８の位置は、コンピューティングデバイス１０２内に保持される、あるいは、コンピューティングデバイス１０２によりアクセス可能である。コンピューティングデバイス１０２の異なるユーザは、任意的に、異なるジオフェンスを保持させてもよいし、異なるジオフェンスにアクセスさせてもよいことに留意すべきである。コンピューティングデバイス１０２は、モバイル式であり、ジオフェンス１１２〜１１８に入ることもあるし、ジオフェンス１１２〜１１８から出ることもある。任意の所与の時間において、コンピューティングデバイス１０２は、ジオフェンス１１２〜１１８のうちの１つのジオフェンス内に存在することもあるし、どのジオフェンス内にも存在しないこともある。コンピューティングデバイス１０２が、特定のジオフェンスを含む領域内に存在すると判定された場合、コンピューティングデバイス１０２は、その特定のジオフェンス内に存在すると呼ばれる。一方、コンピューティングデバイス１０２が、特定のジオフェンスを含む領域内に存在しないと判定された場合、コンピューティングデバイス１０２は、その特定のジオフェンス外に存在する、あるいは、その特定のジオフェンス内に存在しないと呼ばれる。２以上のジオフェンスが重なり合う状況も生じることがあり、その場合、コンピューティングデバイス１０２は、２以上のジオフェンス１１２〜１１８内に同時に存在することもある。図１の例示は、縮尺通りではなく、ジオフェンス１１２〜１１８は、コンピューティングデバイス１０２よりもサイズが著しく大きいことがある（通常は、コンピューティングデバイス１０２よりもサイズが著しく大きい）。
【００１０】
図示される例において、領域１０４は、ジオフェンス１１２〜１１８のいずれとも交わっておらず、したがって、コンピューティングデバイス１０２は、ジオフェンス１１２〜１１８の各々の外に存在する。しかしながら、領域１０４が、ジオフェンス１１２〜１１８のうちの１つと少なくとも部分的に重なり合った場合、コンピューティングデバイス１０２は、重なり合っているジオフェンス内に存在する可能性がある。そのような状況においてコンピューティングデバイス１０２がジオフェンス内に存在すると判定されるかジオフェンス外に存在すると判定されるかは、重なり合いの存在、ジオフェンスがどれくらい重なり合っているか等に基づいて、様々な方法により判定することができる。
【００１１】
図２は、１以上の実施形態に従った、ジオフェンスイベントの融合を実施する例示的なシステム２００を示すブロック図である。システム２００は、図１のコンピューティングデバイス１０２等の単一のデバイスにより実装されてもよいし、コンピューティングデバイス１０２、及びネットワーク（例えば、セルラ電話網又は他の無線電話網、インターネット等）を介してアクセスされる１以上のサーバコンピュータ等の複数のデバイスにより実装されてもよい。システム２００は、１以上の位置判定モジュール２０２、ジオフェンス判別モジュール２０４、ジオフェンスイベント検出モジュール２０６、ジオフェンストリガモジュール２０８、及びデータ記憶部２１０を含む。
【００１２】
データ記憶部２１０は、本明細書で説明する技術により用いられる様々なデータを保持する。データ記憶部２１０は、システムメモリ（例えば、ランダムアクセスメモリ（ＲＡＭ））、フラッシュメモリ又は他のソリッドステートメモリ、磁気ディスク、光ディスク等といった多種多様な記憶デバイスのうちの任意の記憶デバイスを用いて実装することができる。データ記憶部２１０に保持されるデータは、複数のジオフェンスの各々に関するジオフェンスデータ２２０を含み、複数のジオフェンスを特定する。ジオフェンスデータ２２０は、データ記憶部２１０にデータを記憶させている、データ記憶部２１０のディストリビュータ又はリセラ、システム２００を実装しているコンピューティングデバイス上で実行されるプログラム、別のデバイス又はサービス等といった様々なソースから取得することができる。ジオフェンスに関するジオフェンスデータは、ジオフェンスの境界に加えて、ジオフェンスがトリガされるために満たされるべき基準（criteria）を表す。
【００１３】
満たされるべき基準は、デバイスがジオフェンスに入ったこと、デバイスがジオフェンスから出たこと、デバイスが特定の時間量（例えば、少なくとも閾時間量、単に閾時間量等）の間ジオフェンス内に留まっていること、ジオフェンスに関する時間期間（例えば、開始時間と終了時間、開始時間と継続期間）、これらの組合せ等を指し得る。満たされるべきシステム状態等の様々なさらなる基準が任意的に含まれてもよい。例えば、基準は、コンピューティングデバイスのディスプレイがオン又はオフにされたかどうか、コンピューティングデバイスがネットワーク接続（例えば、インターネット接続）を有しているかどうか、コンピューティングデバイスの電力状態（例えば、コンピューティングデバイスが少なくとも閾バッテリ寿命量を残しているかどうか）等を含み得る。
【００１４】
ジオフェンスがトリガされたこと（基準が満たされたこと）に応じて行われる１以上のアクションも、ジオフェンスデータの一部として含まれ得る。ジオフェンスがトリガされたときに、特定のプログラムに通知すること、特定のコンテンツがコンピューティングデバイスにより表示又は別の形で再生されること、ジオフェンスデータがデータ記憶部２１０から削除されること、これらの組合せ等といった様々なアクションのうちのいずれかが行われ得る。複数の異なるアクションが、ジオフェンスがトリガされた態様に基づいて行われ得る。例えば、１つのアクションは、デバイスがジオフェンスに入ったことに応じて行われ、別のアクションは、デバイスがジオフェンスから出たことに応じて行われる。
【００１５】
ジオフェンスの境界は、多種多様な方法のうちのいずれかの方法により指定することができる。例えば、ジオフェンスは、位置（例えば、緯度座標及び経度座標）及び半径、位置のセット（例えば、ジオフェンスの複数のコーナーの緯度座標及び経度座標）、一連のベクトル等として指定することができる。本明細書における説明において、略円形形状であるジオフェンスについて言及する。しかしながら、ジオフェンスは、様々な標準的幾何学形状（例えば、三角形、四角形、八角形等）、他の幾何学形状（例えば、自由形状又はブロブ）等のうちの任意の形状とすることができることに留意すべきである。
【００１６】
データ記憶部２１０が、システム２００の一部として、図２に示されている。データ記憶部２１０に保持されるデータは、プログラム２３０（例えば、システム２００を実装しているコンピューティングデバイスにロードされるときのプログラム２３０）から取得できることに留意すべきである。代替的に、プログラム２３０のうちの１以上のプログラムが、データ記憶部２１０に加えて使用される、あるいは、データ記憶部２１０の代わりに使用されるデータ記憶部を含んでもよい。
【００１７】
ジオフェンスは、多種多様な態様で使用することができる。例えば、行われるジオフェンスアクションは、システム２００の少なくとも一部を実装しているコンピューティングデバイスのユーザがバス停に近づいているときにユーザに通知すること、ユーザがショッピングモール又はショッピング店に入ったときにユーザにクーポンを与えること、子供が学校を離れたとき又は子供が自宅に戻ったときに子供の親に通知すること、ユーザが別の街に旅行したときに現在位置に関する天気情報を表示すること等であり得る。
【００１８】
データ記憶部２１０に保持されるデータはまた、本明細書で説明する技術により用いられるさらなるデータを含み得る。例えば、データ記憶部２１０は、以下でより詳細に説明するように、ジオフェンスイベント検出モジュール２０６により検出されたジオフェンスイベントであるジオフェンスイベントのレコード２２２を含み得る。
【００１９】
位置判定モジュール２０２は、コンピューティングデバイス１０２の位置を判定する１以上のモジュールを含む。図示される例において、位置判定モジュール２０２は、Ｗｉ−Ｆｉ（登録商標）モジュール２１２、ＧＮＳＳモジュール２１４、ネットワークアドレスモジュール２１６、及びセルラモジュール２１８を含む。しかしながら、これらのモジュール２１２〜２１８は例であり、位置判定モジュール２０２は、モジュール２１２〜２１８の各々を必ずしも含む必要はないし、且つ／あるいは、位置判定モジュール２０２は、異なる方法によりコンピューティングデバイス１０２の位置を判定する１以上のさらなるモジュールを含んでもよいことに留意すべきである。例えば、位置判定モジュールは、ＭＥＭＳ（マイクロエレクトロメカニカルシステム）、カメラ、マイクロフォン等を含んでもよい。
【００２０】
Ｗｉ−Ｆｉ（登録商標）モジュール２１２は、Ｗｉ−Ｆｉ（登録商標）信号を使用して、例えば、Ｗｉ−Ｆｉ（登録商標）信号の三角測位を使用して、コンピューティングデバイス１０２の位置を判定する。Ｗｉ−Ｆｉ（登録商標）モジュール２１２は、様々な無線アクセスポイントから、信号が受信される元である特定の無線アクセスポイント及び／又は特定の無線ネットワークの識別子を含む信号を受信することができる。例えば、無線アクセスポイントは、その無線アクセスポイントの媒体アクセス制御（ＭＡＣ）アドレス、その無線アクセスポイントによりサポートされている無線ネットワークの基本サービスセット識別子（ＢＳＳＩＤ）等を送信することができる。Ｗｉ−Ｆｉ（登録商標）モジュール２１２はまた、そのような受信信号の強度（例えば、受信信号強度インジケータ（ＲＳＳＩ）値）を測定することができる。Ｗｉ−Ｆｉ（登録商標）モジュール２１２は、コンピューティングデバイスの任意の所与の位置に関して任意の所与の時間に、複数の無線アクセスポイントから信号を受信できることに留意すべきである。Ｗｉ−Ｆｉ（登録商標）モジュール２１２は、信号が受信される元である無線アクセスポイントと、任意の特定の時間におけるその信号の強度と、を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、無線アクセスポイント、信号強度、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、Ｗｉ−Ｆｉ（登録商標）モジュール２１２は、信号が受信される元である無線アクセスポイントと、特定の所与の時間におけるその信号の強度と、のインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをＷｉ−Ｆｉ（登録商標）モジュール２１２に返すリモートサービス（例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる）に提供してもよい。
【００２１】
ＧＮＳＳモジュール２１４は、ＧＮＳＳ測位を使用して、コンピューティングデバイス１０２の位置を判定する。コンピューティングデバイスの位置のこの判定は、ＧＮＳＳモジュール２１４が信号を受信できる元である、あるいはＧＮＳＳモジュール２１４が通信できる特定数の衛星（例えば、４以上の衛星）に基づく。ＧＮＳＳモジュール２１４は、多種多様な技術を用いてＧＮＳＳ機能を実装することができる。そのような技術は、全地球測位システム（ＧＰＳ）、全地球航法衛星システム（ＧＬＯＮＡＳＳ）、北斗航法システム（又はコンパス航法システム）、ガリレオ測位システム、これらの組合せ等を含むが、これらに限定されるものではない。ＧＮＳＳモジュール２１４は、ＧＮＳＳモジュール２１４が任意の特定の所与の時間において信号を受信できる元である、あるいはＧＮＳＳモジュール２１４が任意の特定の所与の時間において通信できる１以上の衛星を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、様々な公開方式（public  manner）及び／又は専用方式（proprietary  manner）のうちのいずれかの方式で動作する。
【００２２】
ネットワークアドレスモジュール２１６は、ネットワークアドレス測位を使用して、コンピューティングデバイス１０２の位置を判定する。使用されるネットワークアドレスは、コンピューティングデバイス１０２のＩＰアドレス等、様々なネットワークアドレスのうちの任意のネットワークアドレスとすることができる。ネットワークアドレスモジュール２１６は、任意の特定の時間におけるコンピューティングデバイスに割り当てられたＩＰアドレスを所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、ＩＰアドレス又はアドレス範囲、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、ネットワークアドレスモジュール２１６は、特定の所与の時間におけるコンピューティングデバイスのＩＰアドレスのインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをネットワークアドレスモジュール２１６に返すリモートサービス（例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる）に提供してもよい。
【００２３】
セルラモジュール２１８は、セルラ測位を使用して、コンピューティングデバイス１０２の位置を判定する。セルラモジュール２１８は、様々なセルトランシーバから、信号が受信される元である特定のセルトランシーバの識別子（例えば、セルタワー識別子又はトランシーバ識別子）を含む信号を受信することができる。セルラモジュール２１８はまた、そのような受信信号の強度を測定することができる。セルラモジュール２１８は、コンピューティングデバイスの任意の所与の位置に関して任意の所与の時間に、複数のセルトランシーバから信号を受信できることに留意すべきである。セルラモジュール２１８は、信号が受信される元であるセルトランシーバと、任意の特定の時間におけるその信号の強度と、を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、セルトランシーバ、信号強度、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、セルラモジュール２１８は、信号が受信される元であるトランシーバと、特定の所与の時間におけるその信号の強度と、のインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをセルラモジュール２１８に返すリモートサービス（例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる）に提供してもよい。追加的又は代替的に、セルラモジュール２１８は、低電力で状態変化をモニタリングして、通知を（例えば、ジオフェンスイベント検出モジュール２０６に）提供してもよく、これは、継続的なポーリングを要することなく、低電力での動き検出を可能にする。
【００２４】
位置判定モジュール２０２により判定される位置は、通常、緯度座標及び経度座標であるが、位置は、他の方法により、代替的に指定されてもよい。位置判定モジュール２０２の各々は、判定する位置の関連付けられた不確定性（位置の精度誤差又は推定精度誤差とも呼ばれる）を有する。この不確定性の程度は、例えば、位置判定モジュール自体によりレポートされる、システム２００の他のモジュール（例えば、ジオフェンスイベント検出モジュール２０６）において予め設定される、あるいはシステム２００の他のモジュール（例えば、ジオフェンスイベント検出モジュール２０６）によりアクセス可能である等、様々な方法により判定することができる。この不確定性は、位置判定モジュールにより判定された位置に関する位置不確定領域（position  uncertainty  area）をもたらす。位置不確定領域は、コンピューティングデバイス１０２が、判定された位置に関して実際に存在するであろう領域である。１以上の実施形態において、位置不確定領域は、略円形領域であり、位置判定モジュールにより判定された位置が、その略円形領域の略中心であり、その略円形領域の半径が、位置判定モジュールに関する不確定性として判定された誤差半径である。代替的に、位置不確定領域は、様々な他の標準的幾何学形状又は他の幾何学形状を用いて表されてもよい。したがって、位置判定モジュールに関する位置不確定領域は、空間的誤差分布関数（spatial  error  distribution  function）であり得る。空間的誤差分布関数の近似は、領域にわたる一様分布（flat  distribution）とすることができるが、空間的誤差分布関数の様々な他の近似又は表現が、代替的に使用されてもよい。
【００２５】
複数の実施形態において、位置を判定するためのユーザ承諾を受信した後にのみ、位置が位置判定モジュール２０２により判定される。このユーザ承諾は、オプトイン承諾（opt-in  consent）であり得、この場合、ユーザは、位置が判定される前に、位置が位置判定モジュール２０２により判定されることを要求する肯定的アクション（affirmative  action）を行う。あるいは、このユーザ承諾は、オプトアウト承諾（opt-out  consent）であってもよく、この場合、ユーザは、位置が位置判定モジュール２０２により判定されるべきではないことを要求する肯定的アクションを行う。ユーザが、位置の判定を拒否することを選択しなかった場合、それは、ユーザの位置を判定することに対するユーザによる暗黙的承諾である。さらに、位置判定モジュール２０２により判定された位置は、判定された位置を受信するコンピューティングデバイス（例えば、図１のコンピューティングデバイス１０２）内に保持され得、他のデバイス又はサービスに通信される必要はない。
【００２６】
代替的に、ユーザ承諾は、特定のプログラムに対しては許可されて、他のプログラムに対しては無効にされてもよい。この場合、ユーザが、ジオフェンス追跡が使用される少なくとも１つのプログラムに対して承諾したときのみ、位置情報が判定されることになる。位置情報は、承諾されたプログラムに属するジオフェンスのみに関するエントリ及び／又はイグジットを判定するために使用される。許可されていないプログラムからの残りのジオフェンスは追跡されない。
【００２７】
図３は、１以上の実施形態に従った、位置が判定されるべきであるかどうかをユーザが選択することを可能にするためにユーザに対して表示され得る例示的なユーザインタフェースを示している。なぜ位置情報が判定されるかをユーザに説明する記載３０２を含む位置コントロールウインドウ３００が表示される。プライバシに関する声明へのリンク３０４も表示される。ユーザがリンク３０４を選択した場合、システム２００のプライバシに関する声明が表示され、ユーザの情報がどのように機密のまま保たれるかがユーザに説明される。
【００２８】
さらに、ユーザは、位置情報の判定を許可するためのラジオボタン３０６又は位置情報の判定を拒否するためのラジオボタン３０８を選択することができる。ラジオボタン３０６又は３０８が選択されると、ユーザは、その選択を保存するための「ＯＫ」ボタン３１０を選択することができる。これらラジオボタン及び「ＯＫ」ボタンは、位置情報の判定を許可又は拒否するためにユーザに対して提示され得るユーザインタフェースの例に過ぎず、様々な他の従来のユーザインタフェース技術が代替的に使用されてもよいことを理解すべきである。その後、図２のシステム２００は、ユーザの選択に従って、コンピューティングデバイスの位置を判定することに進むか、あるいは、コンピューティングデバイスの位置を判定しない。
【００２９】
図２に戻ると、ジオフェンス判別モジュール２０４は、データ記憶部２１０において特定されるジオフェンスのうち、ジオフェンスがトリガされるかどうかに関する判定がなされるべき１以上のジオフェンスを判別する。多数の異なるジオフェンスに関するデータが、データ記憶部２１０に保持され得、それらジオフェンスのうちの１以上のジオフェンスが、ジオフェンス判別モジュール２０４により選択される。ジオフェンス判別モジュール２０４は、以下でより詳細に説明するように、ジオフェンスとコンピューティングデバイスとの間の現在距離に基づいて、ジオフェンスのサイズ（ジオフェンスにより包含される領域のサイズ）に基づいて、どのジオフェンスが最も厳格である（stringent）か（あるいは、ほぼ最も厳格であるか）に基づいて等、多種多様な方法によりこの判別を行うことができる。ジオフェンス判別モジュール２０４により判別される１以上のジオフェンスは、コンピューティングデバイスの現在位置等の様々な基準に基づいてコンピューティングデバイスが入った又は出た可能性がより高いとみなされるジオフェンスであり、それら１以上のジオフェンスは、基準が変わるまで、ジオフェンス判別モジュール２０４の焦点（focus）であり得る。しかしながら、ジオフェンス判別モジュール２０４は、データ記憶部２１０内のジオフェンスのうちの任意のジオフェンスに関してジオフェンスがトリガされるかどうかを判定できることに留意すべきである。
【００３０】
ジオフェンスイベント検出モジュール２０６は、定期間隔又は不定期間隔でコンピューティングデバイスの現在位置を取得し、ジオフェンスイベントが発生したかどうかを検出する。この間隔は、現在の状態（例えば、最も近いジオフェンスまでのおおよその距離、コンピューティングデバイスの電力バジェット（power  budget）、コンピューティングデバイスの移動の推定速度等）に基づいて、動的に選択され得る。ジオフェンスイベントは、デバイスがジオフェンスに入ったこと、デバイスがジオフェンスから出たこと、又は、デバイスが特定の時間量の間ジオフェンス内に留まっていること（例えば、ジオフェンス内に存在していてジオフェンスから出ていないこと）を指す。ジオフェンスイベント検出モジュール２０６は、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを判定するために、ジオフェンスのサイズに対する、判定された位置に関連付けられた不確定性を評価することができる。代替的に、ジオフェンスイベント検出モジュール２０６は、位置判定モジュールにより判定された位置を使用して、判定された位置に関連付けられた不確定性を考慮することなく、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを判定してもよい。ジオフェンスイベント検出モジュール２０６はまた、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを経時的に追跡することができるので、コンピューティングデバイスがジオフェンス内からジオフェンス外に移動したかどうか、コンピューティングデバイスがジオフェンス外からジオフェンス内に移動したかどうか、コンピューティングデバイスがジオフェンス内に存在していた時間量等を認識している。
【００３１】
ジオフェンスイベント検出モジュール２０６は、ジオフェンスイベント記憶モジュール２２４を含み、ジオフェンスイベント記憶モジュール２２４は、ジオフェンスイベントがジオフェンスイベント検出モジュール２０６により検出されたことに応じて、検出されたジオフェンスイベントを、ジオフェンスイベントレコード２２２に記憶する。ジオフェンスイベントレコード２２２は、データベース、ジオフェンスごとのジオフェンスイベントのリスト等、多種多様な形で実装することができる。検出されたジオフェンスイベントを記憶することは、ジオフェンスイベントと、任意的にジオフェンスイベントの様々な態様と、を特定するデータを記憶することを指す。検出されたジオフェンスイベントに関して記憶されるデータは、ジオフェンスイベントがジオフェンスに入ったことであるかジオフェンスから出たことであるかのインジケーション、コンピューティングデバイスが入った又は出たジオフェンスの（例えば、識別子の）インジケーション、コンピューティングデバイスがジオフェンス内に存在していた（あるいは、ジオフェンス内に存在している）継続期間、ジオフェンスに関連付けられたプログラム（例えば、ジオフェンスイベントが通知されるプログラム）、ジオフェンスイベントが検出された時間のタイムスタンプ（例えば、日付及び／又は時間）等を含み得る。記憶されたデータはまた、ジオフェンスイベントが検出されるジオフェンスを特定することができる、あるいは、ジオフェンスイベントは、ジオフェンスイベントが検出されるジオフェンスのアイデンティフィケーション（識別情報）が固有であるように記憶され得る（例えば、ジオフェンスイベントは、ジオフェンスに関するリストに追加され得、各ジオフェンスは、異なるリストを有する）。コンピューティングデバイスがジオフェンス内に存在していた継続期間又はコンピューティングデバイスがジオフェンス内に存在している継続期間は、例えば、ジオフェンスイベント検出モジュール２０６が、コンピューティングデバイスがジオフェンスに入ってからどれくらいの時間が経過したかをモニタリングすることによって、ジオフェンスに入った最後のジオフェンスイベントが検出された後に経過した時間（又は、ジオフェンスから出た最も直近のジオフェンイベントが検出されてからジオフェンスに入った前のジオフェンスイベントが検出されるまでに経過した時間）を判定することによって等、様々な方法により判定することができる。
【００３２】
１以上の実施形態において、ジオフェンスイベント検出モジュール２０６により検出された各ジオフェンスイベントは、データ記憶部２１０に、例えば、ジオフェンスイベントの発生の時間によりソートされた順番付きリストで記憶される。ジオフェンスイベントレコード２２２は、過去２４時間、過去１週間等といった様々な期間の間にわたるジオフェンスイベントを含み得る。代替的に、ジオフェンスイベントレコード２２２は、各ジオフェンスイベントについて、ジオフェンスから出た最も直近のジオフェンスイベント及びジオフェンスに入った最も直近のジオフェンスイベントを含んでもよい。新たなジオフェンスイベントがジオフェンスに関して検出されるたびに、同じタイプ（ジオフェンスから出た又はジオフェンスイベントに入った）の前に記録されていたジオフェンスイベントが、新たに検出されたジオフェンスイベントにより置換されてもよい。したがって、いくつかの実施形態においては、ジオフェンスに関する、ジオフェンスから出た最も直近のジオフェンスイベント及びジオフェンスに入った最も直近のジオフェンスイベントのみが記録されるのに対し、他の実施形態においては、ジオフェンスに関する、ジオフェンスに入った複数のジオフェンスイベント及びジオフェンスから出た複数のジオフェンスイベントが記録される（例えば、ジオフェンスに入った全てのジオフェンスイベント及びジオフェンスから出た全てのジオフェンスイベントが記録される）。ジオフェンスに関する記録されたジオフェンスイベントはまた、ジオフェンスに関するジオフェンスデータを提供したアプリケーションがシステム２００から削除された、あるいはアンインストールされた等といった様々なイベントに応じて、データ記憶部２１０から削除されてもよい。
【００３３】
ジオフェンストリガモジュール２０８は、ジオフェンスに関連付けられた基準を分析し、基準が満たされたかどうかを判定する。この判定は、ジオフェンスイベント検出モジュール２０６により判定された１以上のジオフェンスイベントの発生に少なくとも部分的に基づいてなされる。基準が満たされたことに応じて、ジオフェンストリガモジュール２０８は、ジオフェンスがトリガされることを決定し、適切なアクションを行う。行われるアクションは、データ記憶部２１０に記憶される、トリガされるジオフェンスに関するジオフェンスデータに関連付けられてもよいし、ジオフェンストリガモジュール２０８において予め設定される、別のモジュール又はデバイスから取得される等、他の方法により決定されてもよい。
【００３４】
１以上の実施形態において、ジオフェンスがトリガされたことに応じてジオフェンストリガモジュール２０８により行われるアクションは、ジオフェンスがトリガされたことを１以上のプログラム２３０に通知することである。１以上のプログラム２３０は、アプリケーション、オペレーティングシステムモジュール又はコンポーネント等といった多種多様なタイプのプログラムを含み得る。通知すべき１以上のプログラム２３０（トリガされたジオフェンスに関連付けられたプログラム２３０とも呼ばれる）は、ジオフェンストリガモジュール２０８において設定される、データ記憶部２１０内のジオフェンスに関するジオフェンスデータの一部として特定される、別のモジュール又はサービスから取得される等、様々な方法により特定することができる。プログラム２３０には、発生したジオフェンスイベントに加えて、任意的にさらなる情報（例えば、コンピューティングデバイスが、少なくとも閾時間量の間ジオフェンス内に存在していたこと）が通知され得る。次いで、プログラム２３０は、ジオフェンスがトリガされたことに基づいて、プログラム２３０が所望するアクションを行うことができる。
【００３５】
ジオフェンストリガモジュール２０８は、ジオフェンスがトリガされたことのプログラムへの通知を管理するジオフェンスイベントレポートモジュール２２６を含む。ジオフェンスイベントレポートモジュール２２６は、ジオフェンスイベントレコード２２２から１以上のジオフェンスイベントを選択する。例えば、ジオフェンスイベントレポートモジュール２２６は、プログラム２３０に関連付けられた各ジオフェンスについて、最も直近のジオフェンスイグジットイベント（ジオフェンスから出た最も直近のジオフェンスイベント）及び最も直近のジオフェンスエントリイベント（ジオフェンスに入った最も直近のジオフェンスイベント）を選択する。ジオフェンスイベントレポートモジュール２２６は、プログラム２３０に関連付けられた各ジオフェンスに関するジオフェンスイベントを融合し、プログラム２３０に関連付けられたジオフェンスに関するジオフェンスイベントの集合をプログラム２３０に提供する。
【００３６】
１以上の実施形態において、ジオフェンスイベント（ジオフェンスに入ったこと又はジオフェンスから出たこと）に応じて、ジオフェンスがトリガされ、ジオフェンスイベントレポートモジュール２２６は、そのジオフェンスイベントをプログラムに通知する。代替的に、ジオフェンスイベントレポートモジュール２２６は、ジオフェンスイベントをプログラムに通知するかどうかを判定する際に、ジオフェンスに関連付けられた他の基準を考慮して、そのようなさらなる基準が満たされた場合にのみプログラムに通知してもよい。例えば、インターネット接続が望ましいと基準が示しているが、インターネットアクセスが現在利用可能でない場合、ジオフェンスイベントレポートモジュール２２６は、ジオフェンスイベントをプログラムに通知しない。この他の基準は、ジオフェンスイベントレコード２２２及び／又はジオフェンスデータ２２０の一部として記憶され得る。
【００３７】
さらに、ジオフェンスイベントレポートモジュール２２６は、プログラム自体に関連付けられた任意の基準を考慮することができる。例えば、通知すべきプログラムが、１日のうち所定の時間の間は実行されないと基準が示している場合、ジオフェンスイベントが１日のうちのそのような所定の時間の間に発生しても、ジオフェンスイベントレポートモジュール２２６は、ジオフェンスイベントをプログラムに通知しない。
【００３８】
さらに、ジオフェンスイベントレポートモジュール２２６が、ジオフェンスの自動的満了等といった所定のジオフェンスイベントをプログラム２３０に通知しない状況が生じることもある。例えば、ジオフェンスが、特定の時間期間の間のみ有効である場合（例えば、夜９時に閉店する店に関する日々の取引）、ジオフェンスは、満了すると、システム２００から自動的に削除され得、ジオフェンスに関連付けられたプログラム２３０には、この削除イベントが通知され得ない。
【００３９】
１以上の実施形態において、ジオフェンスに関連付けられるプログラム２３０は、システム２００を実装しているコンピューティングデバイス上のプログラムである。システム２００を実装しているコンピューティングデバイスのオペレーティングシステムは、コンピューティングデバイスに関するオペレーションの複数の異なる期間を実装する。オペレーションのこれら複数の異なる期間は、コンピューティングデバイスが電力節約モードで動作している節約期間を含む。節約期間中、所定のプログラム（オペレーティングシステムプログラム以外のアプリケーション等）は、実行されるよう通常はスケジュールされず、様々な他の電力節約技術が、コンピューティングデバイスの電力使用を低減させるために、オペレーティングシステムにより使用され得る。オペレーションの複数の異なる期間はまた、コンピューティングデバイスが実行モードで動作している実行期間を含む。節約期間中通常はスケジュールされないプログラムが、オペレーティングシステムのスケジューリング機構により、実行期間中実行されるようスケジュールされる。スケジューリング機構は、多種多様のファクタを考慮して、どのプログラムが実行されるか、及び、どのくらいの時間の間そのプログラムが実行されるかを決定することができる。そのようなファクタとして、例えば、どれくらい直近にプログラムが実行されるよう最後にスケジュールされたか、プログラムが実行されるようスケジュールされた最後の時間にプログラムがどれくらいの時間の間（すなわち、何らかの過去の時間期間にわたって）実行されたか、スケジュールされるべき他のプログラム、コンピューティングデバイスの利用可能な電力（例えば、残りのバッテリ寿命）、プログラムを実行するユーザリクエストが受信されたかどうか等がある。スケジューリング機構は、システム２００とは独立して動作することに留意すべきである。スケジューリング機構は、プログラムをスケジュールする時間を決定する際に、プログラムに関するジオフェンスイベントが検出されたかどうかを考慮することができるが、スケジューリング機構は、プログラムに関連付けられたジオフェンスイベントが検出されたことに単に応じて、実行されるプログラムをスケジュールする必要はない（通常はそのようにはしない）。
【００４０】
図４は、１以上の実施形態に従った、オペレーションの様々な期間の例を示している。ちりばめられた実行期間４０４及び節約期間４０６を含むタイムライン４０２が示されている。実行期間４０４中、オペレーティングシステムは、実行モードで動作している。節約期間４０６中、オペレーティングシステムは、電力節約モードで動作している。同じ時間期間を有するものとして図示されているが、異なる実行期間４０４は、異なる期間を有し得、異なる節約期間４０６は、異なる期間を有し得ることに留意すべきである。実行期間４０４及び／又は節約期間４０６のこれらの期間は、コンピューティングデバイスの動作中、時間とともに変わり得る。
【００４１】
図２に戻ると、ジオフェンスイベントレポートモジュール２２６は、プログラム２３０に関連付けられた各ジオフェンスに関するジオフェンスイベントを融合し、プログラム２３０が後で実行されるようスケジュールされている時間に、プログラム２３０に関連付けられたジオフェンスに関するジオフェンスイベントの集合をプログラム２３０に提供する。（例えば、最も直近のイベントから始まる時系列にソートされた）ジオフェンスイベントの集合は、プログラム２３０が実行されるようスケジュールされる次の時間にプログラム２３０に提供されてもよいし、後の時間に提供されてもよい。プログラム２３０が実行されるようスケジュールされる時間は、オペレーティングシステムのスケジューリング機構により制御され得、次の実行期間又はいくらか後の実行期間内であり得る。実行期間中及び節約期間中の両方において、ジオフェンスイベント検出モジュール２０６は、ジオフェンスイベントを検出するよう動作し、ジオフェンスイベント記憶モジュール２２４は、検出されたジオフェンスイベントを、ジオフェンスイベントレコード２２２に記憶することに留意すべきである。したがって、検出されたジオフェンスイベントが通知されるべきプログラム２３０が、実行されていない、あるいは、実行されるようスケジュールされていない（すなわち、オペレーティングシステムが節約期間中である）場合であっても、プログラムに関連付けられたジオフェンスに関するジオフェンスイベントは、それでも検出されていて記録されており、プログラム２３０が後で実行されるときに、プログラム２３０に提供され得る。ジオフェンスイベントがプログラム２３０により受信されると、ジオフェンスイベントは、その後、データ記憶部２１０から削除され得る。
【００４２】
モジュール２０４〜２０８は、位置判定モジュール２０２から分離されたモジュールとして図示されているが、モジュール２０４〜２０８のうちの１以上のモジュールは、代替的に、位置判定モジュール２０２のうちの１つの位置判定モジュール内に少なくとも部分的に実装されてもよいことに留意すべきである。例えば、モジュール２０４〜２０８のうちの１以上のモジュールの少なくとも一部は、ＧＮＳＳモジュール２１４又はＷｉ−Ｆｉ（登録商標）モジュール２１２のハードウェアコンポーネント内に実装されてもよい。
【００４３】
図５は、１以上の実施形態に従った、ジオフェンスイベントを融合するための例示的なプロセス５００を示すフローチャートである。プロセス５００は、図２のシステム２００等のシステムにより実行される。プロセス５００は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せにより実装することができる。プロセス５００が、一連の動作として示されているが、プロセス５００は、様々な動作のオペレーションを実行するために、図示される順番に限定されるものではない。プロセス５００は、ジオフェンスイベントを融合するための例示的なプロセスである。ジオフェンスイベントを融合することについての異なる図を参照するさらなる説明が、本明細書に含まれる。
【００４４】
プロセス５００において、コンピューティングデバイスに関するジオフェンスイベントの発生が検出される（動作５０２）。ジオフェンスイベントの発生は、図２の位置判定モジュール２０２のうちの１以上のモジュールにより判定されたコンピューティングデバイスの位置に基づき、様々なジオフェンスの位置が、データ記憶部２１０内のジオフェンスデータにおいて特定される。
【００４５】
検出されたジオフェンスイベントのレコードが保持される（動作５０４）。保持される検出されたジオフェンスイベントのレコードは、上述したように、ジオフェンスイベントと、任意的にジオフェンスイベントの様々な態様と、を特定する様々な情報を含み得る。
【００４６】
プログラムに関連付けられた少なくとも１つのジオフェンスに関して検出された１以上のジオフェンスイベントのインジケーションが、プログラムが実行されるときに、プログラムに提供され（動作５０６）、プログラムは、次いで、示されたジオフェンスに基づいて、プログラムが所望する様々なオペレーションを実行することができる。１以上のジオフェンスイベントのインジケーションは、図２のデータ記憶部２１０に保持されている、ジオフェンスイベントとジオフェンスイベントの様々な態様とを特定する情報、ジオフェンスイベントを特定する情報が記憶されているデータ記憶部２１０内の位置の識別子等、様々な形をとることができる。プログラムが図２のシステム２００に対してジオフェンスイベントをリクエストする、システム２００が（例えば、プログラムのアプリケーションプログラミングインタフェース又は他のコールバック関数を呼び出すことにより）ジオフェンスイベントをプログラムに自動的に通知する等といった様々な機構を用いて、インジケーションがプログラムに提供され得る。
【００４７】
動作５０６におけるプログラムが実行される時間は、上述したように、オペレーティングシステムのスケジューリング機構により決定される。ジオフェンスイベントが検出されたときに、プログラムは、スケジュールされるよう待機している、あるいは、実行されていないことがあることに留意すべきである。プログラムがすでに実行されている場合には、検出されたジオフェンスイベントが、動作５０６において、（例えば、直ちに）プログラムに提供される、あるいは、動作５０６において、プログラムが実行される次の時間に、プログラムに提供される。プログラムが実行される次の時間は、様々な方法により決定され得る。例えば、プログラムは、ユーザによりアクティブ化されたときに実行されることもあるし、オペレーティングシステムのスケジューリング機構により決定された時間に実行されることもある。同じプログラムの複数のインスタンスが同時に実行される場合、イベント配信の重複と、特定のジオフェンスイベントを受信した際のプログラムからの結果として生じる重複アクションと、を避けるために、ジオフェンスイベントは、プログラムの１つのインスタンスのみに提供され得る。１以上の実施形態において、１以上のジオフェンスイベントは、プログラムに関連付けられた各ジオフェンス（又は、ジオフェンスイベントが検出されるプログラムに関連付けられた少なくとも各ジオフェンス）に関する最も直近のジオフェンスエントリイベント及び最も直近のジオフェンスイグジットイベントである。
【００４８】
したがって、プログラムに関連付けられた複数のジオフェンスに関するジオフェンスイベントが、融合されて、動作５０６において、ジオフェンスイベントの順番付き集合としてプログラムに提供される。さらに、オペレーティングシステムのスケジューリング機構に基づいてプログラムが実行されるときにジオフェンスイベントをプログラムに提供することにより、プログラムへのジオフェンスイベントの提供が、オペレーティングシステムのスケジューリング機構と調和される（harmonized）。ジオフェンスイベントをプログラムに提供する、スケジューリング機構から分離された機構は使用されず、これは、スケジューリング機構が迂回されることを防止するとともに、節約期間が、検出されたジオフェンスイベントに起因して中断されることを防止する。
【００４９】
したがって、本明細書で説明した技術は、電力を節約し、且つ、様々なプログラムによる乱用（abuse）を防止するように、ジオフェンスの使用をサポートする。ジオフェンスイベントを融合し、ジオフェンスイベントをオペレーティングシステムのスケジューリング機構と調和させることにより、オペレーティングシステムのスケジューリング機構は、トリガされる多数のジオフェンスを有するプログラムにより迂回されることがない。本明細書で説明した技術はまた、最も直近のジオフェンスエントリイベント及びジオフェンスイグジットイベントをプログラムに提供するので、現在の地理的関連情報をプログラムに提供することができる。
【００５０】
特定のモジュールを参照しながら特定の機能について本明細書で説明したが、本明細書で説明した個々のモジュールの機能は、複数のモジュールに分割されてもよいし、且つ／あるいは、複数のモジュールの少なくとも一部の機能は、１つのモジュールに結合されてもよいことに留意すべきである。さらに、あるアクションを実行するものとして本明細書で説明した特定のモジュールは、そのアクションを実行するその特定のモジュール自体を含む、あるいは、そのアクションを実行する（あるいは、その特定のモジュールと協働してそのアクションを実行する）別のコンポーネント又はモジュールを呼び出すその特定のモジュール又はそのアクションを実行する（あるいは、その特定のモジュールと協働してそのアクションを実行する）別のコンポーネント又はモジュールに別の形でアクセスするその特定のモジュールを含む。したがって、あるアクションを実行する特定のモジュールは、そのアクションを実行するその特定のモジュール自体、及び／又は、その特定のモジュールにより呼び出される、あるいはその特定のモジュールにより別の形でアクセスされる、そのアクションを実行する別のモジュールを含む。
【００５１】
図６は、本明細書で説明した様々な技術を実装することができる１以上のシステム及び／又はデバイスを表す例示的なコンピューティングデバイス６０２を含む例示的なシステムを、概括的に６００で示している。コンピューティングデバイス６０２は、例えば、サービスプロバイダのサーバ、クライアントに関連付けられたデバイス（例えば、クライアントデバイス）、オンチップシステム、及び／又は、任意の他の適切なコンピューティングデバイス若しくはコンピューティングシステムとすることができる。
【００５２】
図示される例示的なコンピューティングデバイス６０２は、処理システム６０４、１以上のコンピュータ読み取り可能な媒体６０６、及び互いに通信可能に接続される１以上のＩ／Ｏインタフェース６０８を含む。図示されていないが、コンピューティングデバイス６０２は、様々なコンポーネントを互いと接続するシステムバス又は他のデータ・コマンド転送システムをさらに含み得る。システムバスは、メモリバス若しくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、及び／又は、様々なバスアーキテクチャのうちのいずれかを利用するプロセッサバス若しくはローカルバス等の様々なバス構造の任意の１つ又は組合せを含み得る。制御ライン及びデータライン等の多様な他の例も意図されている。
【００５３】
処理システム６０４は、ハードウェアを用いて１以上のオペレーションを実行する機能を表す。したがって、処理システム６０４は、プロセッサ、機能ブロック等として構成することができるハードウェア要素６１０を含むものとして示されている。これは、特定用途向け集積回路、又は、１以上の半導体を用いて形成される他の論理デバイスとしてのハードウェアによる実装物を含み得る。ハードウェア要素６１０は、ハードウェア要素６１０が形成される材料又はハードウェア要素６１０において利用される処理機構により限定されるものではない。例えば、プロセッサは、１以上の半導体及び／又はトランジスタ（例えば、電子集積回路（ＩＣ））から構成され得る。そのようなコンテキストにおいて、プロセッサ実行可能な命令は、電子的に実行可能な命令であり得る。
【００５４】
コンピュータ読み取り可能な媒体６０６は、メモリ／ストレージ６１２を含むものとして示されている。メモリ／ストレージ６１２は、１以上のコンピュータ読み取り可能な媒体に関連付けられたメモリ／ストレージ能力を表す。メモリ／ストレージ６１２は、揮発性媒体（ランダムアクセスメモリ（ＲＡＭ）等）及び／又は不揮発性媒体（読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、光ディスク、磁気ディスク等）を含み得る。メモリ／ストレージ６１２は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハードドライブ等）に加えて、着脱可能な媒体（例えば、フラッシュメモリ、着脱可能なハードドライブ、光ディスク等）を含み得る。コンピュータ読み取り可能な媒体６０６は、以下でさらに説明するように、多様な他の態様で構成されてもよい。
【００５５】
１以上の入力／出力インタフェース６０８は、ユーザが様々な入力デバイスを用いてコマンド及び情報をコンピューティングデバイス６０２に入力できるようにするとともに、様々な出力デバイスを用いて情報をユーザ及び／又は他のコンポーネントに提示できるようにする機能を表す。入力デバイスの例は、キーボード、カーソル制御デバイス（例えば、マウス）、マイクロフォン（例えば、音声入力用）、スキャナ、タッチ機能（例えば、物理的タッチを検出するよう構成される静電容量式センサ又は他のセンサ）、（例えば、ジェスチャとしてのタッチを含まない動きを検出するために、赤外線周波数等の非可視波長又は可視波長を利用することができる）カメラ等を含む。出力デバイスの例は、ディスプレイデバイス（例えば、モニタやプロジェクタ）、スピーカ、プリンタ、ネットワークカード、触覚応答デバイス等を含む。したがって、コンピューティングデバイス６０２は、ユーザインタラクションをサポートするために、以下でさらに説明するように、多様な態様で構成することができる。
【００５６】
コンピューティングデバイス６０２はまた、ジオフェンスシステム６１４を含む。ジオフェンスシステム６１４は、上述したジオフェンスの融合を含む様々なジオフェンス機能を提供する。ジオフェンスシステム６１４は、例えば、図２のシステム２００を実装することができる。
【００５７】
様々な技術が、ソフトウェア、ハードウェア要素、又はプログラムモジュールの一般的コンテキストにおいて本明細書で説明され得る。一般に、そのようなモジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造等を含む。本明細書で使用される「モジュール」、「機能」、及び「コンポーネント」という用語は、一般に、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せを表す。本明細書で説明した技術の特徴は、プラットフォーム非依存であり、これは、そのような技術が、様々なプロセッサを有する様々なコンピューティングプラットフォーム上で実装され得ることを意味する。
【００５８】
説明したモジュール及び技術の実装物は、何らかの形態のコンピュータ読み取り可能な媒体に記憶されてもよいし、そのようなコンピュータ読み取り可能な媒体を介して伝送されてもよい。コンピュータ読み取り可能な媒体は、コンピューティングデバイス６０２がアクセスできる様々な媒体を含み得る。限定ではなく例として、コンピュータ読み取り可能な媒体は、「コンピュータ読み取り可能な記憶媒体」及び「コンピュータ読み取り可能な信号媒体」を含み得る。
【００５９】
「コンピュータ読み取り可能な記憶媒体」とは、単なる信号伝送、搬送波、又は信号自体ではなく、情報の永続的記憶を可能にする媒体及び／若しくはデバイス、並びに／又は有体のストレージを指す。したがって、コンピュータ読み取り可能な記憶媒体は、非信号伝送媒体を指す。コンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、論理要素／回路、又は他のデータ等といった情報を記憶するのに適した方法又は技術により実装された、揮発性及び不揮発性の着脱可能及び着脱不可能な媒体及び／又は記憶デバイス等のハードウェアを含む。コンピュータ読み取り可能な記憶媒体の例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気記憶デバイス、又は、所望の情報を記憶するのに適した、コンピュータがアクセスできる他の記憶デバイス、有体の媒体、若しくは製品を含み得るが、これらに限定されるものではない。
【００６０】
「コンピュータ読み取り可能な信号媒体」とは、ネットワークを介して等、コンピューティングデバイス６０２のハードウェアに命令を伝送するよう構成された信号伝送媒体を指す。信号媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータを、搬送波、データ信号、又は他の伝送機構等の変調されたデータ信号内に具現化することができる。信号媒体はまた、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定又は変更された特性のうちの１以上を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、ＲＦ、赤外線、及び他の無線媒体等の無線媒体と、を含む。
【００６１】
前述したように、ハードウェア要素６１０及びコンピュータ読み取り可能な媒体６０６は、本明細書で説明した技術の少なくとも一部の態様を実装するためにいくつかの実施形態において使用することができる、ハードウェア形態で実装された命令、モジュール、プログラマブルデバイスロジック、及び／又は固定デバイスロジックを表す。ハードウェア要素は、集積回路又はオンチップシステム、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブル論理デバイス（ＣＰＬＤ）、及び、シリコンによる他の実装物又は他のハードウェアデバイスのコンポーネントを含み得る。このコンテキストにおいて、ハードウェア要素は、そのハードウェア要素により具現化される命令、モジュール、及び／又はロジックにより定められるプログラムタスクを実行する処理デバイスに加えて、前述したコンピュータ読み取り可能な記憶媒体等の、実行される命令を記憶するために利用されるハードウェアデバイスとして動作することができる。
【００６２】
前述したものの組合せを使用して、本明細書で説明した様々な技術及びモジュールを実装することもできる。したがって、ソフトウェア、ハードウェア、又は、プログラムモジュール及び他のプログラムモジュールは、何らかの形態のコンピュータ読み取り可能な記憶媒体上に具現化される、且つ／あるいは、１以上のハードウェア要素６１０により具現化される１以上の命令及び／又はロジックとして実装することができる。コンピューティングデバイス６０２は、ソフトウェアモジュール及び／又はハードウェアモジュールに対応する特定の命令及び／又は機能を実行するよう構成することができる。したがって、ソフトウェアとしてコンピューティングデバイス６０２により実行可能なモジュールとしてのモジュールの実装は、例えば、処理システムのハードウェア要素６１０及び／又はコンピュータ読み取り可能な記憶媒体を使用することにより、ハードウェアにより少なくとも部分的に実現することができる。命令及び／又は機能は、本明細書で説明した技術、モジュール、及び例を実装する１以上の製品（例えば、１以上のコンピューティングデバイス６０２及び／又は処理システム６０４）により、実行可能／動作可能であり得る。
【００６３】
図６にさらに示されるように、例示的なシステム６００は、パーソナルコンピュータ（ＰＣ）、モバイルデバイス、及び／又は他のデバイス上でアプリケーションを実行する際のシームレスなユーザエクスペリエンスのためのユビキタス環境を可能にする。サービス及びアプリケーションは、アプリケーションを利用している間、ビデオゲームをプレイしている間、ビデオを見ている間等に１つのデバイスから次のデバイスに移る際の共通のユーザエクスペリエンスのために、これらの環境において実質的に同様に動作する。
【００６４】
例示的なシステム６００において、複数のデバイスが、中央コンピューティングデバイスを介して相互接続される。中央コンピューティングデバイスは、複数のデバイスに対してローカルにあってもよいし、複数のデバイスからリモートに位置してもよい。１以上の実施形態において、中央コンピューティングデバイスは、ネットワーク、インターネット、又は他のデータ通信リンクを介して複数のデバイスに接続される１以上のサーバコンピュータのクラウドであり得る。
【００６５】
１以上の実施形態において、この相互接続アーキテクチャは、複数のデバイスのユーザに共通のシームレスなエクスペリエンスを提供するために、複数のデバイスにわたって機能を配信することを可能にする。複数のデバイスの各々は、異なる物理的要件及び能力を有し得、中央コンピューティングデバイスは、各デバイス向けに合わせられながらも全てのデバイスに共通であるエクスペリエンスを各デバイスに提供することを可能にするプラットフォームを使用する。１以上の実施形態において、ターゲットデバイスのクラスが作成され、エクスペリエンスが、デバイスの一般クラス向けに合わせられる。デバイスのクラスは、デバイスの物理的特徴、使用のタイプ、又は他の共通特性により定められ得る。
【００６６】
様々な実装において、コンピューティングデバイス６０２は、コンピュータ６１６又はモバイル６１８等の使用のために、多種多様な構成をとることができる。これらの構成の各々は、一般に異なる構造及び能力を有し得るデバイスを含み、したがって、コンピューティングデバイス６０２は、異なるデバイスクラスのうちの１以上のデバイスクラスに従って構成され得る。例えば、コンピューティングデバイス６０２は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブック等を含むデバイスのコンピュータ６１６クラスとして実装され得る。コンピューティングデバイス６０２はまた、携帯電話機、ポータブル音楽プレーヤ、ポータブルゲームデバイス、タブレットコンピュータ、ウェアラブルデバイス、マルチスクリーンコンピュータ等といったモバイルデバイスを含むデバイスのモバイル６１８クラスとして実装され得る。
【００６７】
本明細書で説明した技術は、コンピューティングデバイス６０２のこれら様々な構成によりサポートされ得るが、本明細書で説明した技術の特定の例に限定されるものではない。本機能は、以下で説明するように、プラットフォーム６２４を経由して「クラウド」６２２を介する等、分散システムの使用により全て又は一部が実装されてもよい。
【００６８】
クラウド６２２は、リソース６２６のためのプラットフォーム６２４を含む、且つ／あるいは、リソース６２６のためのプラットフォーム６２４を表す。プラットフォーム６２４は、クラウド６２２のハードウェアリソース（例えば、サーバ）及びソフトウェアリソースの基礎をなす機能を抽象化する。リソース６２６は、コンピューティングデバイス６０２からリモートにあるサーバ上でコンピュータ処理が実行されている間に利用することができるアプリケーション及び／又はデータを含み得る。リソース６２６はまた、インターネット、及び／又は、セルラネットワーク若しくはＷｉ−Ｆｉ（登録商標）ネットワーク等の加入者ネットワークを介して提供されるサービスを含み得る。
【００６９】
プラットフォーム６２４は、コンピューティングデバイス６０２を他のコンピューティングデバイスに接続するためのリソース及び機能を抽象化することができる。プラットフォーム６２４はまた、リソースのスケーリングを抽象化して、プラットフォーム６２４を介して実装されるリソース６２６を求める受けた要求に対するスケールの対応するレベルを提供するよう機能することができる。したがって、相互接続されるデバイスの実施形態において、本明細書で説明した機能の実装物は、システム６００にわたって分散させることができる。例えば、本明細書で説明した機能は、コンピューティングデバイス６０２上に一部を実装することができるとともに、クラウド６２２の機能を抽象化するプラットフォーム６２４を介して実装することができる。
【００７０】
構造的特徴及び／又は方法論的動作に特有の言葉で主題について説明したが、添付の特許請求の範囲において定められる主題は、上述した特定の特徴又は動作に必ずしも限定されるものではない。そうではなく、上述した特定の特徴及び動作は、請求項を実施する例示的な形態として開示されている。
【図１】
0006352407.tif 000002
【図２】
0006352407.tif 000003
【図３】
0006352407.tif 000004
【図４】
0006352407.tif 000005
【図５】
0006352407.tif 000006
【図６】
0006352407.tif 000007