(57)【要約】  セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックを無線ネットワークへオフロードするための拡張可能なフレームワークは、ソフトウェア・プラグインと、典型的にはモバイル・デバイス・オペレーティング・システムの一部であるプラグイン・ホストと、プラグイン・ホストがプラグインと通信する際に経由するプラグイン・インターフェースとを含む。プラグインは、１つ又は複数のモバイル・オペレータに関連付けられている。フレームワークは、１つ又は複数のプラグインを含むことができるが、典型的には、一度に１つのプラグインのみがアクティブである。フレームワークは、アクティブ・プラグインに関連付けられているモバイル・オペレータに関連付けられている無線ネットワークを自動的に検知して接続を行うことができる。プラグインは、接続されている無線ネットワークを介してモバイル・オペレータに対してモバイル・デバイス又はモバイル・デバイス・ユーザーを自動的に認証することができる。プラグインは、無線ネットワークを検知して接続及び接続解除を行うことを担当するオペレーティング・システム機能へのアクセスを許可されず、このことにより、モバイル・オペレーティング・システムの安定性及びバッテリー寿命を改善することができる。
2015508613.tif 000002
【特許請求の範囲】
【請求項１】
セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックをオフロードする方法であって、
１つ又は複数の検知された無線ネットワークに対応する情報を認証プラグイン・ホストからアクティブ認証プラグインへ送信するステップであって、前記１つ又は複数の検知された無線ネットワーク及び前記アクティブ認証プラグインは、モバイル・オペレータに関連付けられている、送信するステップと、
前記１つ又は複数の検知された無線ネットワークから選択された１つ又は複数の好ましい無線ネットワークに対応する情報を前記認証プラグイン・ホストにおいて前記アクティブ認証プラグインから受信するステップと、
前記モバイル・コンピューティング・デバイスを前記１つ又は複数の好ましい無線ネットワークのうちの１つに接続するステップであって、前記モバイル・コンピューティング・デバイスが接続される前記好ましい無線ネットワークは、接続されている無線ネットワークである、接続するステップと、
前記接続されている無線ネットワーク上で前記モバイル・コンピューティング・デバイス又は前記モバイル・コンピューティング・デバイスのユーザーの認証要求を前記アクティブ認証プラグインへ送信するステップと、
認証が成功したことを示す情報を前記アクティブ認証プラグインから受信するステップと、
前記データ・トラフィックの少なくとも一部分を、前記接続されている無線ネットワークへオフロードするステップと、
を含む、方法。
【請求項２】
前記１つ又は複数の好ましい無線ネットワークに対応する前記情報は、接続順序を含む、請求項１に記載の方法。
【請求項３】
接続される前記無線ネットワークを、前記接続順序に少なくとも部分的に基づいて前記１つ又は複数の好ましい無線ネットワークから選択するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記アクティブ認証プラグインを、複数のモバイル・オペレータに関連付けられている複数の認証プラグインから選択する選択ステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記選択ステップは、
前記複数の認証プラグインにクエリーを行うステップと、
肯定的に応答する最初の認証プラグインを前記アクティブ認証プラグインとして選択するステップと、
を含む、請求項４に記載の方法。
【請求項６】
前記複数の認証プラグインから別の認証プラグインを前記アクティブ認証プラグインとして選択するステップをさらに含む、請求項４に記載の方法。
【請求項７】
プラグイン更新頻度を前記アクティブ認証プラグインから前記認証プラグイン・ホストへ送信するステップと、
実質的に少なくとも前記プラグイン更新頻度で前記認証プラグイン・ホストから前記アクティブ認証プラグインへプラグイン更新コマンドを送信するステップと、
をさらに含む、請求項１に記載の方法。
【請求項８】
１つ又は複数の隠れたネットワークに関する情報を前記認証プラグイン・ホストにおいて前記アクティブ認証プラグインから受信するステップと、
前記１つ又は複数の隠れたネットワークのうちの少なくとも１つの隠れたネットワークを探してスキャンを行うステップと、
をさらに含む、請求項１に記載の方法。
【請求項９】
前記１つ又は複数の検知された無線ネットワークは、前記少なくとも１つの隠れた無線ネットワークを含む、請求項８に記載の方法。
【請求項１０】
モバイル・コンピューティング・デバイスであって、
当該モバイル・コンピューティング・デバイスによって実行可能な命令を記憶している１つ又は複数のコンピュータ読み取り可能な記憶媒体を備え、前記命令は、
１つ又は複数の検知されたネットワークに対応する情報をアクティブ認証プラグインへ送信し、接続されたネットワーク上で前記モバイル・コンピューティング・デバイス又は前記モバイル・コンピューティング・デバイスのユーザーの認証要求をすることができる認証プラグイン・ホストと、
少なくとも１つの認証プラグインと、を含み、各認証プラグインは、
１つ又は複数の検知されたネットワークに対応する情報を前記認証プラグイン・ホストから受信したことに応答して、１つ又は複数の好ましい無線ネットワークに対応する情報、及び前記１つ又は複数の好ましい無線ネットワークに関する接続順序を前記認証プラグイン・ホストに提供し、
接続されている無線ネットワーク上で前記モバイル・コンピューティング・デバイス又は前記モバイル・コンピューティング・デバイスのユーザーを認証し、前記認証が成功したかどうかを示す情報を前記認証プラグイン・ホストへ送信することができる、モバイル・コンピューティング・デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
セルラー・ネットワークは、コンテンツ、とりわけビデオ・コンテンツに対する加入者の需要が増大するにつれて、それについていこうと奮闘している。この問題に対処するために使用される１つの技術が、Ｗｉ−Ｆｉオフロードであり、Ｗｉ−Ｆｉオフロードにおいては、モバイル・ネットワーク・オペレータが、トラフィックをセルラー・ネットワークからＷｉ−Ｆｉネットワークへオフロードする。
【発明の概要】
【課題を解決するための手段】
【０００２】
この「発明の概要」は、以降の「発明を実施するための形態」においてさらに説明されるコンセプトから抜粋したものを、簡略化された形式で紹介するために提供されている。この「発明の概要」は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図しておらず、特許請求される主題の範囲を限定するために使用されることも意図していない。
【０００３】
アプリケーション開発者が、セルラー・データをＷｉ−Ｆｉホットスポットへオフロードするためのモバイル・オペレータ固有のロジックを伴うソフトウェア・プラグインを実装することを可能にする拡張可能なフレームワークについて説明する。このフレームワークは、好ましいＷｉ−Ｆｉネットワークを指定すること、認証を試みること、並びに接続の試みの成功又は失敗をプラットフォーム及びユーザーに通知することを行うためにプラグインが使用することができるインターフェース及びコールバックを含む。モバイル・デバイスは、さまざまなネットワーク上で使用され得るため、単一のデバイスが、加入者ＩＤ又はネットワーク・プロパティーに従ってアクティブ化される複数のプラグインを含むことができる。
【０００４】
セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックをオフロードする方法の一実施形態においては、プラグイン・ホストが、モバイル・デバイスによって検知されたネットワークに関する情報をアクティブ・プラグインへ送信する。アクティブ・プラグイン及び検知されたネットワークは、特定のモバイル・オペレータに関連付けられている。プラグインは、検知されたネットワークから選択された好ましいネットワークに関する情報を返す。モバイル・デバイスは、好ましいネットワークのうちの１つに接続され、プラグイン・ホストは、アクティブ・プラグインがモバイル・デバイス又はモバイル・デバイス・ユーザーを認証することを要求する。認証が成功したことを示す情報が、アクティブ・プラグインから受信され、データ・トラフィックが、セルラー・ネットワークから、接続されている無線ネットワークへオフロードされる。
【０００５】
開示されているテクノロジーの上述及びその他の目的、特徴、及び利点は、添付の図を参照しながら進む以降の「発明を実施するための形態」から、より明らかになるであろう。
【図面の簡単な説明】
【０００６】
【図１】例示的なモバイル・コンピューティング・デバイスを示すシステム図である。
【０００７】
【図２】説明されている実施形態、技術、及びテクノロジーを実施することができる適切な実施環境の一般化された例である。
【０００８】
【図３】セルラー・ネットワーク及び無線ネットワークを介してクラウドに接続されている例示的なモバイル・コンピューティング・デバイスのブロック図である。
【０００９】
【図４】拡張可能なフレームワークの例示的な一実施態様のブロック図である。
【００１０】
【図５】セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックをオフロードする第１の例示的な方法のフローチャートである。
【００１１】
【図６】本明細書において説明されている拡張可能なフレームワークを採用しているモバイル・コンピューティング・デバイスのブロック図である。
【００１２】
【図７】セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックをオフロードする第２の例示的な方法のフローチャートである。
【００１３】
【図８】セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックをオフロードする第３の例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１４】
本明細書において説明されているテクノロジーは、セルラー・ネットワークを介してスマートフォン又はタブレット・コンピュータなどのモバイル・コンピューティング・デバイスへ／から送信されているデータ・トラフィックが、Ｗｉ−Ｆｉ  ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの別の無線ネットワークへオフロードされることを可能にする。このオフロードは、モバイル・コンピューティング・デバイスにおいて実装される拡張可能なフレームワークによって可能にされる。このフレームワークは、無線ネットワークへの自動的な接続、及びモバイル・デバイス（又はモバイル・デバイス・ユーザー）の自動的な認証を提供する。このフレームワークは、プラグイン・ホスト（認証ソフトウェア・モジュール・ホスト又は認証プラグイン・ホスト）と、１つ又は複数のソフトウェア・プラグイン（認証ソフトウェア・モジュール又は認証プラグイン）とを含む。それらのソフトウェア・プラグインは、典型的には、モバイル・ネットワーク・オペレータ（ＭＯ）又はＩＳＶ（ｉｎｄｅｐｅｎｄｅｎｔ  ｓｏｆｔｗａｒｅ  ｖｅｎｄｏｒ）によって供給され、自動的な接続及び認証のために必要とされる情報を含む。本明細書において説明されているネットワーク・オフロード・テクノロジーを伴って構成されているモバイル・コンピューティング・デバイスは、ユーザーの介入を伴わずにセルラー・データ・トラフィックをオフロードするためにＷｉ−Ｆｉホットスポットに自動的に接続することができる。本明細書において使用される際には、「ホットスポット」という用語は、ネットワーク、典型的にはインターネットへのアクセスを提供するサイトを意味する。
【００１５】
図１は、本明細書において説明されている方法のうちの任意の方法を実行するために使用することができる例示的なモバイル・コンピューティング・デバイス（モバイル・デバイス）１００を示すシステム図である。モバイル・コンピューティング・デバイス１００は、さまざまなオプションのハードウェア及びソフトウェア・コンポーネント１０５を含むことができる。一般に、コンポーネント１０５は、他のコンポーネントと通信することができるが、例示を簡単にするために、全ての接続が示されているわけではない。モバイル・デバイス１００は、携帯電話、スマートフォン、ハンドヘルド・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、タブレット・デバイス、スレート・デバイス、メディア・プレーヤー、民生電子デバイス（例えば、ネットワーク対応カメラ、ビデオ・カメラ）などのさまざまなモバイル・コンピューティング・デバイスのうちの任意のものとすることができ、Ｗｉ−Ｆｉネットワーク、セルラー・ネットワーク、又は衛星ネットワークなどの１つ又は複数のネットワークとの有線通信又は無線通信を可能にすることができる。「モバイル」コンピューティング・デバイスと呼ばれているが、いくつかの実施形態においては、モバイル・デバイス１００は、デスクトップ・コンピュータ又はサーバなど、典型的にはモバイルではないとみなされるコンピューティング・デバイスとすることができる。
【００１６】
モバイル・デバイス１００は、信号コーディング、グラフィックス処理、データ処理、入力／出力処理、パワー制御、及び／又はその他の機能などのタスクを実行するためのコントローラ又はプロセッサ１１０（例えば、信号プロセッサ、グラフィックス処理装置（ＧＰＵ）、マイクロプロセッサ、ＡＳＩＣ、又はその他のコントロール及び処理論理回路若しくはソフトウェア）を含むことができる。オペレーティング・システム１１２は、コンポーネント１０５の割り当て及び使用を制御すること、並びに１つ又は複数のアプリケーション・プログラム１１３のためのサポートを行うことが可能である。アプリケーション・プログラム１１３は、一般的なモバイル・コンピューティング・アプリケーション（例えば、Ｅメール・アプリケーション、カレンダー、コンタクト・マネージャー、ウェブ・ブラウザー、メッセージング・アプリケーション）及びその他のコンピューティング・アプリケーションを含むことができる。
【００１７】
モバイル・コンピューティング・デバイス１００は、メモリ１２０を含むことができる。メモリ１２０は、取り外し不能なメモリ１２２及び取り外し可能なメモリ１２４を含むことができる。取り外し不能な、又は組み込まれたメモリ１２２は、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、ハード・ドライブ、又はその他のよく知られているメモリ・ストレージ・テクノロジーを含むことができる。取り外し可能なメモリ１２４は、フラッシュ・メモリ・カード（例えば、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）カード）、メモリ・スティック、ＧＳＭ（登録商標）（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）システムにおいてよく知られているサブスクライバー・アイデンティティー・モジュール（ＳＩＭ）カード、又は「スマート・カード」など、その他のよく知られているメモリ・ストレージ・テクノロジーを含むことができる。メモリ１２０は、デバイス１００上でオペレーティング・システム１１２、アプリケーション・プログラム１１３、プラグイン・ホスト１１４、及びプラグイン１１５を稼働させるためのデータ及び／又はコンピュータ実行可能命令を記憶するために使用することができる。プラグイン・ホスト１１４は、オペレーティング・システム１１２の一部とすることができる。例示的なデータとしては、１つ又は複数の有線ネットワーク又は無線ネットワークを介してモバイル・コンピューティング・デバイス１００によって１つ若しくは複数のネットワーク・サーバ若しくはその他のデバイスへ送信される、且つ／又は１つ若しくは複数のネットワーク・サーバ若しくはその他のデバイスから受信されるウェブ・ページ、テキスト、イメージ、サウンド・ファイル、ビデオ・データ、無線ネットワーク・データベース、又はその他のデータ・セットを含むことができる。メモリ１２０は、国際移動体加入者識別番号（ＩＭＳＩ）などの加入者識別子、及び国際移動体装置識別番号（ＩＭＥＩ）などの機器識別子を記憶するために使用することができる。そのような識別子は、ユーザー及び機器を識別するためにネットワーク・サーバへ送信することができる。コンピューティング・デバイス１００は、外部ハード・ドライブなどの外部メモリ（図示せず）へのアクセスを有することもできる。
【００１８】
モバイル・デバイス１００は、タッチスクリーン１３２、マイクロフォン１３４、カメラ１３６、物理キーボード１３８、及び／又はトラックボール１３９などの１つ又は複数の入力デバイス１３０、並びにスピーカー１４２及びディスプレイ１４４などの１つ又は複数の出力デバイス１４０をサポートすることができる。その他の可能な出力デバイス（図示せず）としては、圧電式又はその他の触覚出力デバイスを含むことができる。入力デバイス１３０及び出力デバイス１４０のうちの任意のものは、コンピューティング・デバイス１００の内部にあること、コンピューティング・デバイス１００の外部にあること、又はコンピューティング・デバイス１００に取り外し可能に取り付けられることが可能である。外部の入力デバイス１３０及び出力デバイス１４０は、有線接続又は無線接続を介してコンピューティング・デバイス１００と通信することができる。いくつかのデバイスは、１つの入力／出力機能を超えるものを提供することができる。たとえば、タッチスクリーン１３２及びディスプレイ１４４は、単一の入力／出力デバイスにおいて結合することができる。
【００１９】
無線セルラー・モデム１６０は、セルラー・モデム・アンテナ１６２に接続することができ、モバイル・コンピューティング・デバイス１００とモバイル・セルラー通信ネットワークとの間における双方向通信をサポートすることができる。モバイル・デバイス１００は、Ｗｉ−Ｆｉモデム１６３又はブルートゥース（登録商標）・モデム１６４などのその他の無線ベースのモデムを含むことができ、それらのそれぞれは、自身のアンテナ（例えば、Ｗｉ−Ｆｉアンテナ１６８、ブルートゥース・アンテナ１６９）に接続することができる。セルラー・モデム１６０は、典型的には、単一のセルラー・ネットワーク内における、セルラー・ネットワークどうしの間における、又はモバイル・コンピューティング・デバイスと公衆交換電話網（ＰＳＴＮ）との間におけるデータ通信及び音声通信のために、ＧＳＭ（登録商標）ネットワークなどの１つ又は複数のセルラー・ネットワークと通信するように構成されている。
【００２０】
モバイル・コンピューティング・デバイス１００は、物理コネクタ１７２を含む少なくとも１つの入力／出力ポート１７０（例えば、ＵＳＢポート、ＩＥＥＥ  １３９４（ファイヤ・ワイヤ（登録商標））ポート、及び／又はＲＳ−２３２ポートとすることができる）と、電源１７４と、ＧＰＳ受信機１７５などの衛星ナビゲーション・システム受信機とをさらに含むことができる。ＧＰＳ受信機１７５は、ＧＰＳアンテナ１７９に接続することができる。さまざまなアンテナが、モバイル・コンピューティング・デバイス１００の別々のハードウェア・コンポーネントとして示されているが、その他のコンポーネント内に組み込まれてもよい。例えば、ＧＰＳアンテナ１７９は、ＧＰＳ受信機１７５内に組み込むことができる。加えて、図１において別々のものとして示されているアンテナどうしは、単一のアンテナとして実装することができる。
【００２１】
図示されているコンポーネント１０５は、必須のもの、又はすべてを含むものではない。なぜなら、いずれかのコンポーネントは削除されてもよいし、その他のコンポーネントが付加されてもよいからである。
【００２２】
図２は、説明されている実施形態、技術、及びテクノロジーを実施することができる適切な実施環境２００の一般化された例を示している。
【００２３】
例示的な環境２００においては、さまざまなタイプのサービス（例えば、コンピューティング・サービス）が、クラウド２１０によって提供される。例えば、クラウド２１０は、コンピューティング・デバイスの集合を含むことができ、それらのコンピューティング・デバイスは、中央に配置されること、又は分散されることが可能であり、インターネットなどのネットワークを介して接続されているさまざまなタイプのユーザー及びデバイスにクラウドベースのサービスを提供する。実施環境２００は、コンピューティング・タスクを達成するために、さまざまな方法で使用することができる。例えば、いくつかのタスク（例えば、ユーザー入力を処理すること、及びユーザー・インターフェースを提示すること）は、ローカル・コンピューティング・デバイス（例えば、接続されているデバイス２３０、２４０、２５０）上で実行することができ、その一方で、その他のタスク（例えば、その後の処理、モバイル・デバイス、又はユーザー認証において使用されることになるデータの記憶）は、クラウド２１０において実行することができる。
【００２４】
例示的な環境２００においては、クラウド２１０は、さまざまなスクリーン機能を伴う接続されているデバイス２３０、２４０、２５０のためのサービスを提供する。接続されているデバイス２３０は、コンピュータ・スクリーン（例えば、中型スクリーン２３５）を伴うデバイスに相当する。例えば、接続されているデバイス２３０は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、ネットブック・コンピュータ、又はタブレット・コンピュータなどとすることができる。接続されているデバイス２４０は、モバイル・コンピューティング・デバイス・スクリーン２４５（例えば、小型スクリーン）を伴うモバイル・コンピューティング・デバイスに相当する。例えば、接続されているデバイス２４０は、モバイル電話、スマートフォン、携帯情報端末などとすることができる。接続されているデバイス２５０は、大型スクリーン２５５を伴うデバイスに相当する。例えば、接続されているデバイス２５０は、インターネット接続を伴うテレビジョン、又は、セットトップ・ボックス、ゲーミング・コンソールなど、クラウドに接続することができる別のデバイスに接続されているテレビジョンとすることができる。スクリーン機能を伴わないデバイスを、例示的な環境２００において使用することも可能である。例えば、クラウド２１０は、ディスプレイを伴わない１つ又は複数のコンピュータ（例えば、サーバ・コンピュータ）のためのサービスを提供することができる。
【００２５】
サービスは、サービス・プロバイダ２２０を通じて、又はオンライン・サービスのその他のプロバイダ（図示せず）を通じて、クラウド２１０によって提供することができる。例えば、クラウド・サービスは、特定の接続されているデバイス（例えば、接続されているデバイス２３０、２４０、２５０）のスクリーン・サイズ、ディスプレイ機能、及び／又はタッチスクリーン機能に合わせてカスタマイズすることができる。サービス・プロバイダ２２０によって提供され得るサービスとしては、例えば、Ｅメール、ショート・メッセージ・サービス（ＳＭＳ）、マルチメディア・メッセージ・サービス（ＭＭＳ）、ソーシャル・ネットワーキング、及びウェブサイト・ホスティングが含まれる。サービス・プロバイダは、幅広い種類の商品と、認証プラグイン及びプラグイン・アップグレードなどのサービスと、購入するか否かを問わずに、及びクラウドからのダウンロード又は郵便を通じた配送用としてユーザーによって入手され得るメディア・コンテンツとを提供するオンライン・マーケットプレイスをホストすることができる。
【００２６】
例示的な環境２００においては、クラウド２１０は、サービス・プロバイダ２２０を少なくとも部分的に使用して、本明細書において説明されているテクノロジー及びソリューションを、さまざまな接続されているデバイス２３０、２４０、２５０に提供する。例えば、サービス・プロバイダ２２０は、さまざまなクラウドベースのサービスのための集中型のソリューションを提供することができる。サービス・プロバイダ２２０は、ユーザー及びデバイスに関する（例えば、接続されているデバイス２３０、２４０、２５０、及びそれらのそれぞれのユーザーに関する）サービス・サブスクリプションを管理することができる。
【００２７】
図３は、セルラー・ネットワーク３２０及び無線ネットワーク３３０を介してクラウド３１０に接続されているモバイル・コンピューティング・デバイス３００のブロック図である。本明細書において説明されているオフロード方法を使用すれば、セルラー・ネットワーク３２０を通じて進む、クラウド３１０とモバイル・デバイス３００との間におけるデータ・トラフィック３３３は、無線ネットワーク３３０を通じて進むデータ・トラフィック３３６としてオフロードすることができる。無線ネットワーク３３０は、１つ又は複数のＷｉ−Ｆｉネットワーク・アクセス・ポイント（Ｗｉ−Ｆｉホットスポット）によってアクセスされるＷｉ−Ｆｉネットワークなどの任意の無線ＷＬＡＮ（Ｗｉｒｅｌｅｓｓ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）とすることができる。本明細書において説明されているテクノロジーについては、一般には、データ・トラフィックを無線ネットワークへオフロードすることに関して論じているが、モバイル・デバイスへの有線接続（例えば、イーサネット（登録商標）、ＵＳＢ、同軸ケーブル）が利用可能である場合には、セルラー・トラフィックを有線ネットワークへオフロードすることも可能である。
【００２８】
本明細書において使用される際には、「データ・トラフィック」という用語は、オーディオ・データ及びビデオ・データを含む、モバイル・デバイス３００とクラウド３１０との間においてやり取りされ得る任意のタイプの情報を含む。
【００２９】
本明細書において使用される際には、「オフロード」という用語は、クラウド３１０とモバイル・デバイス３００との間において流れているデータ・トラフィックの少なくとも一部分をセルラー・ネットワーク３２０から無線ネットワーク３３０へリダイレクトすることを意味する。いくつかの実施形態においては、データ・トラフィックは、データ・トラフィックのうちの全てが又はごく少量しかセルラー・ネットワーク３２０を通じて進まないように無線ネットワークへオフロードすることができる。その他の実施形態においては、オフロードは、セルラー・ネットワーク・データ・トラフィックが単に低減されることを含み、これは、セルラー・ネットワーク・データ・レート、若しくはセルラー・ネットワーク３２０を通じて転送されるデータの量を制限すること、セルラー・ネットワーク３２０を通じて送信されるデータのタイプを制限すること、特定のタイプのデータ・トラフィックをオフロードすることによって、又はその他の方法で実行することができる。例えば、オフロードは、ビデオ・データを無線ネットワーク３３０へオフロードすることを含むことができる。さらに他の実施形態においては、データ・トラフィックは、モバイル・デバイスが無線ネットワーク３３０に接続された後も、引き続きセルラー・ネットワーク３２０を通じて渡され、オフロードは、データ・トラフィックが特定の閾値を超えた場合に生じる。その他のオフロード・スキームを利用することも可能である。
【００３０】
モバイル・デバイス３００は、オペレーティング・システム３４０及びプラグイン３５０を含む。本明細書において説明されている拡張可能なフレームワーク（フレームワーク）は、オペレーティング・システム３４０及びプラグイン３５０の部分を含む。オペレーティング・システム３４０は、プラグイン３５０によってコールされ得るアプリケーション・プログラム・インターフェース（ＡＰＩ）と、プラグイン３５０をコールするコールバックとを含む。オペレーティング・システム３４０におけるＡＰＩ及びコールバックは、例えば、オフロードのための無線ネットワークを指定すること、認証結果を報告すること、及びモバイル・デバイス・ユーザーへ提示されることになるメッセージをオペレーティング・システム３４０に提供することを行うために、プラグイン３５０によって使用することができる。一般に、個々のプラグインは、単一のＭＯ、又は仮想モバイル・ネットワーク・オペレータなど、ＭＯのパートナーによって所有、運営、又は借用されている無線ネットワークに関連付けられているオフロード・タスクをサポートする。プラグインは、Ｗｉ−Ｆｉホットスポット・アグリゲータ（ただし、いくつかの場合においては、ホットスポット・アグリゲータは、ＭＯのビジネス・パートナーであることがある）に直接関連付けられているネットワークなど、ＭＯに関連付けられていない無線ネットワークに関連付けられているオフロード・タスクをサポートすることもできる。さまざまな実施形態においては、アクティブ・プラグインは、モバイル・デバイス又はモバイル・デバイス・ユーザーが接続することができる無線ネットワークを所有しているモバイル・オペレータに関連付けられているプラグインである。アクティブ・プラグインを特定することは、（例えば、ブートアップ手順の一環として）モバイル・コンピューティング・デバイスがオンにされたときに、モバイル・コンピューティング・デバイスが無線ネットワークを探してスキャンを行って無線ネットワークを検知したときに、又は別の時点で行うことができる。
【００３１】
モバイル・デバイスは、複数のモバイル・オペレータに関連付けられている無線ネットワークを使用することができるため、モバイル・デバイス３００は、加入者（モバイル・デバイス及び／又はユーザー）ＩＤに従って、又は、モバイル・デバイスがデータ・トラフィックを受信／送信する際に経由している、若しくは接続したいと望んでいるセルラー・ネットワーク３２０のプロパティーに従ってアクティブ化される複数のプラグイン３５０を含むことができる。したがって、複数のアクティブ・プラグインが存在することが可能である。どのプラグインをアクティブ化するかという選択は、ＩＭＳＩ、モバイル・カントリー・コード（ＭＣＣ）、モバイル・ネットワーク・コード（ＭＮＣ）、又はモバイル・サブスクリプション識別子番号（ＭＳＩＮ）など、ＳＩＭカード上に記憶されているプロパティーと；、国際移動体装置識別番号（ＩＭＥＩ）、電子シリアル番号（ＥＳＮ）、又はモバイル機器識別子（ＭＥＩＤ）など、モバイル・デバイスのメモリ内に記憶されているプロパティーと；、リムーバブル・ユーザー・アイデンティティー・モジュール（Ｒ−ＵＩＭ）又はユニバーサル集積回路カード（ＵＩＣＣ）、その他の２つのタイプのモバイル・コンピューティング・デバイス・スマート・カード上に記憶されているプロパティーと；に基づくことができる。プラグイン３５０は、オペレーティング・システム３４０が加入者及び／又はネットワークの識別子情報に基づいてアクティブ化されることになるかどうかのインジケーションをオペレーティング・システム３４０に提供することができる。いくつかの実施形態においては、アクティブ認証プラグインを選択することは、モバイル・デバイス上にインストールされている認証プラグインにクエリーを行うこと、及びそのクエリーに肯定的に応答する最初の認証プラグイン（又は、複数のアクティブ認証プラグインが認められる場合には、そのクエリーに肯定的に応答する最初のＮ個の認証プラグイン）を（１つ又は複数の）アクティブ認証プラグインとして選択することを含む。
【００３２】
したがって、さまざまなモバイル・ネットワーク上でのＷｉ−Ｆｉホットスポット接続をサポートするために、複数のプラグインをモバイル・デバイス上にインストールすることができる。あるいは、単一のプラグインが、複数のモバイル・オペレータの無線ネットワークへの接続をサポートすることもできる。モバイル・デバイス３００は、例えば、ＳＩＭカードが交換された場合に、又はそのモバイル・デバイスがその他の形で１つのセルラー・ネットワークから別のセルラー・ネットワークへ切り替えた場合に、１つのプラグインから別のプラグインへ切り替えることができる。モバイル・デバイス３００は、第１のモバイル・オペレータによって運営されている無線ネットワークから、第２のモバイル・オペレータによって運営されている無線ネットワークへモバイル・デバイス３００が切り替えることになる旨を示す入力をユーザーが提供した場合などのユーザー入力に応答して、プラグインを切り替えることもできる。
【００３３】
オペレーティング・システム３４０は、さまざまなオフロード・タスク及びネットワーク・タスクを実行する。さまざまな実施形態においては、これらのタスクは、プラグイン・ホストによって実行される。例えば、オペレーティング・システム３４０は、モバイル・デバイス３００によって現時点で検知可能ではないが（衛星ナビゲーション・システム受信機（例えば、ＧＰＳ受信機１７５）を通じて受信される情報を通じて、セル・タワーどうしの間における三角測量によって、又はモバイル・デバイスの付近にあるＷｉ−Ｆｉルーターの既知のロケーションに基づいて特定することができる）モバイル・デバイスの物理的なロケーションに起因して利用可能であると推定されるネットワークに関する問合せを行うために、プラグイン３５０をコールすることができる。
【００３４】
例えば、あるモバイル・コンピューティング・デバイスが、４つのＷｉ−Ｆｉホットスポットの近くに存在する場合があり、それらの４つのＷｉ−Ｆｉホットスポットのうちの３つは、そのモバイル・デバイスが接続することができるが、そのモバイル・デバイス上にインストールされているソフトウェア・プラグインに関連付けられているモバイル・オペレータに関連付けられているネットワークのためのアクセス・ポイントではない。第４のワイヤレス・ホットスポットは、そのモバイル・コンピューティング・デバイスのワイヤレス通信レンジをちょうど超えており、アクティブ・プラグインに関連付けられているＭＯによって運営されている。そのような状況においては、このフレームワークは、そのＭＯに関連付けられている付近のＷｉ−Ｆｉネットワークの存在をユーザーに通知することができる。そのような通知は、オーディオ、テキスト、又はビデオを介して行うことができる。一実施形態においては、ユーザーには、ユーザーの現在のロケーションと、付近のＭＯ  Ｗｉ−Ｆｉホットスポットのロケーションとを示す地図を、ユーザーがそのＭＯ  Ｗｉ−Ｆｉホットスポットへさらに近づくべきである旨の推奨、及びそのホットスポットへどのようにたどりつくかに関する案内とともに表示することを介して、付近のＭＯ  Ｗｉ−Ｆｉホットスポットが通知される。そのＭＯ  Ｗｉ−Ｆｉホットスポットは、地図上に表示されているその他のＷｉ−Ｆｉホットスポットから区別されるためにハイライトされ得るか、又はその他の形でマークされ得る。
【００３５】
オペレーティング・システム３４０は、Ｗｉ−Ｆｉホットスポットとして識別されているルーターなどのデバイスのワイヤレス通信レンジ内の特定の無線ネットワークに接続したいというユーザー要求に応答すること、並びにそのネットワークに関する検証及び認証を実行するようプラグイン３５０に指示することも可能である。したがって、このフレームワークは、自動的なネットワーク接続（例えば、プラグインによってサポートされている無線ネットワーク・データベース内に含まれている無線ネットワークへの接続）、及び手動のネットワーク接続（例えば、ユーザーによって指定されたネットワークへの接続）の両方をサポートすることができる。さらに、オペレーティング・システム３４０は、ユーザーの好み、バッテリー寿命、システムの状態、又はその他の要因に基づいて、無線ネットワークを探してスキャンを行うかどうかを決定することができる。例えば、ユーザーは、特定のネットワークには接続すべきではないということ、又はどれぐらいの頻度でデバイスが無線ネットワークを探してスキャンを行うべきかということを示すことができる。いくつかの実施形態においては、モバイル・デバイス３００は、モバイル・デバイスの推定されるバッテリー寿命が依然として閾値（デフォルト値又はユーザー指定値とすることができる）を上回っている場合には、ネットワークを探してスキャンを行うように構成され得る。本明細書において使用される際には、「ワイヤレス通信レンジ」というフレーズは、モバイル・コンピューティング・デバイスが、ネットワーク・コンピューティング・デバイス（例えば、ルーター）又は別のワイヤレス・コンピューティング・デバイス（例えば、スマートフォン）などの別のコンピューティング・デバイスとワイヤレスに通信することができる、モバイル・コンピューティング・デバイスからの距離を意味する。
【００３６】
オペレーティング・システム３４０はまた、ネットワークに関するユーザーのデータ・プランが、データ・トラフィック・オフロードをサポートするのに不適格又は不十分であること、又はユーザーが、無線ネットワークのオペレータのカスタマー・サポートにコンタクトすべきであることなど、ユーザーの注意を必要とする場合がある状況に関してユーザーに通知するためのインターフェースを提供する。オペレーティング・システム３４０は、そのような通知が、いつ、どれぐらいの頻度で、及びどんなメディアを通じてユーザーに提示されるべきであるかを決定することができる。通知プロパティーがユーザーによって指定されることも可能である。典型的には、プラグインは、通知がユーザーに提示されるようにすることを直接行うことはできない。プラグインからのユーザー通知を、オペレーティング・システムを通じて渡すことによって、メッセージは、オペレーティング・システムを介してユーザーへ送達することができ、それにより、プラグインによって生成されたメッセージは、オペレーティング・システムによって提供されるその他のメッセージと整合した様式で送達されて、整合性のあるユーザー経験を保持することが可能になる。
【００３７】
オペレーティング・システム３４０はさらに、プラグイン３５０によってサポートされている無線ネットワークに関する情報をプラグイン３５０から受信することができる。ワイヤレス通信レンジ内で１つ又は複数の無線ネットワークの存在を検知した後に、オペレーティング・システム３４０は、どのプラグインが、アクティブ・プラグインであるか、並びに、検知されたネットワークのうちの好ましいネットワークのリストを提供すること、及び無線ネットワークへの接続が行われた後にモバイル・コンピューティング・デバイス又はユーザーを認証することなどのオフロード・タスクのために使用されることになるかを特定することができる。したがって、プラグイン３５０は、モバイル・オペレータが、好ましい無線ネットワークのリストを事前に構成することを可能にする。
【００３８】
プラグイン３５０は、ソフトウェア・モジュールであり、典型的にはモバイル・デバイスのオペレーティング・システムから分離されており、さまざまなネットワーク・オフロード機能を実行する。プラグイン３５０は、例えば、モバイル・オペレータ又は独立系ソフトウェア・ベンダー（ＩＳＶ）によって提供され得、モバイル・コンピューティング・デバイス上にインストールされた状態で届くこと、又はモバイル・コンピューティング・デバイス・ユーザーによってインストールのためにダウンロードされることが可能である。プラグインは、モバイル・コンピューティング・デバイスをネットワークに接続するために必要とされる情報、そのモバイル・デバイスが特定のネットワークに自動的に接続されることになるかどうか、どの無線ネットワークが好ましいか、及びそれらのネットワークに関する接続優先度情報など、１つ又は複数の無線ネットワークの特性をオペレーティング・システム３４０に知らせることができる。例えば、２つのプラグイン、すなわち、Ｔ−Ｍｏｂｉｌｅ（登録商標）  Ｗｉ−Ｆｉホットスポットをサポートする第１のプラグインと、ＡＴ＆Ｔ（登録商標）  Ｗｉ−Ｆｉホットスポットとともに機能する第２のプラグインとを含むモバイル・コンピューティング・デバイスについて考えていただきたい。このモバイル・デバイスは、そのデバイス上でＡＴ＆Ｔ  ＳＩＭカードを検知したか、若しくはＴ−Ｍｏｂｉｌｅ  ＳＩＭカードを検知したか、又はユーザーがＡＴ＆Ｔホットスポットに接続しようと試みているか、若しくはＴ−Ｍｏｂｉｌｅホットスポットに接続しようと試みているかに応じて、適切なプラグインをアクティブ化することができる。プラグイン３５０は、ネットワークへの接続がＳＩＭカードの存在を必要とするかどうかをオペレーティング・システム３４０に知らせることもできる。接続優先度情報は、モバイル・デバイスによって検知されている無線ネットワークのリストに関する接続順序をプラグイン・ホストに提供するためにプラグインによって使用することができる任意の情報とすることができる。例えば、無線ネットワークは、そのネットワークの帯域幅容量などの要因に基づいて、優先度（例えば、「１」、「２」、「３」．．．、又は「Ａ」、「Ｂ」、「Ｃ」．．．）を有することができる。
【００３９】
プラグイン３５０は、モバイル・デバイス３００のワイヤレス通信レンジ内で検知された無線ネットワークのリストを受信すること、並びに、好ましいネットワークのリストと、それらの好ましいネットワークに対してデバイス３００が接続を試みることになる順序と、それらの好ましいネットワークに関する接続及び認証の情報とをオペレーティング・システム３４０に返すことを行うように構成され得る。いくつかの実施形態においては、オペレーティング・システム３４０は、ユーザー設定（例えば、ユーザーに好まれているＷｉ−Ｆｉネットワーク又はネットワーク接続順序）及びその他の要因に基づいて、好ましいネットワークのうちでどのネットワークに接続するかを選択することができる。ユーザー設定をオフロード・フレームワーク内で指定しておくことによって、ユーザーは、複数のソフトウェア・アプリケーション（例えば、複数のプラグイン）内で設定又は好みを指定する必要はなく、ユーザーの好みの１つのグループを設定することによって、オフロードの好みを管理することができる。
【００４０】
プラグイン３５０は、隠れたネットワークをサポートするように構成され得る。隠れたネットワークは、自身の存在を主体的にブロードキャストしないネットワークを含む。隠れたネットワークは、もっぱら又は主としてオフロードの専用とされているネットワークとすることができる。隠れたネットワークをサポートするために、プラグイン３５０は、それらの隠れたネットワークのネットワーク識別子（例えば、ＳＳＩＤ）を提供することができ、それらの隠れたネットワークを探して、モバイル・デバイスが主体的に検索を行うことになる。モバイル・デバイスは、ユーザー設定（例えば、このシステムは、隠れたネットワークを探して検索を行うこと、又は隠れたネットワークに接続することをユーザーが無効にできるように構成され得る）、電力消費率、バッテリー・レベルなどに基づいて、これらの隠れたネットワークを探して検索を行うかどうかを決定することができる。例えば、モバイル・コンピューティング・デバイスは、そのモバイル・コンピューティング・デバイスの電力消費率が電力消費率閾値を下回ったこと、そのモバイル・コンピューティング・デバイスのバッテリー・レベルがバッテリー・レベル閾値を下回ったこと、又はそのモバイル・デバイスのワイヤレス通信レンジ内でその他のいかなる無線ネットワークも検知できないことに応答して、隠れた無線ネットワークを探してスキャンを開始することができる。
【００４１】
モバイル・デバイスがネットワークに成功裏に接続した旨のオペレーティング・システム３４０からの通知に応答して、プラグイン３５０は、ネットワークのＩＤを確認すること、ユーザーを認証すること、又はセルラー・トラフィックをオフロードする目的でＷｉ−Ｆｉ接続を機能させるために必要とされるその他の任意のアクションを実行することが可能である。これらのオペレーションのうちのいずれかが失敗した場合には、プラグイン３５０は、ネットワークから接続解除するようオペレーティング・システム３４０に通知することができる。典型的には、システムの安定性を改善するために、プラグインは、Ｗｉ−Ｆｉネットワークを探してスキャンすること、又は無線ネットワークに接続すること／無線ネットワークから接続解除することをモバイル・コンピューティング・デバイスに行わせることはできない。プラグインはまた、典型的には、モバイル・コンピューティング・デバイス上でバックグラウンド・タスクを実行することは認められていない。
【００４２】
いくつかの実施形態においては、プラグイン３５０は、ユーザー応答を必要とするさまざまな通知がユーザーに提示されるようにするように構成され得る。例えば、プラグインは、ネットワークをオフロードのために使用することが可能になる前に、例えば、ネットワークに関する使用条件、又はプライバシー設定など、特定のネットワーク・プロパティーに関する設定をユーザーが受け入れるかどうかを尋ねるクエリーがモバイル・デバイス・ディスプレイにおいて提示されるようにすることができる。これらの通知は、ユーザーによって単に却下され得る情報通知を含むこともできる。例えば、プラグインは、広告によってサポートされている特定のネットワークにモバイル・デバイスが接続したときに、そのモバイル・デバイス上に１つ又は複数の広告が現れるようにすることができる。それらの広告は、例えば、広告ウィンドウ内の「ＯＫ」ボタンをクリックすること、又は広告ウィンドウを閉じることによって却下することができる。いくつかの実施形態においては、プラグインは、接続されているネットワークをネットワーキングのために使用することが可能になる前にユーザー応答を必要とする通知が、ユーザー・クエリー要求をプラグイン・ホストへ送信することによって提示されるようにすることができる。そのユーザー・クエリー要求は、ユーザーが承認若しくは同意することになる情報（例えば、使用条件の文章）、又はそのような情報への参照（例えば、使用条件が見つかる場所へのリンク）を含むことができる。それと引き換えに、プラグイン・ホストは、ユーザー・クエリー要求内に含まれている情報又はユーザー・クエリー要求内で参照される情報に対してユーザーが承認又は同意を行ったかどうかを示す情報をプラグインへ送信することができる。
【００４３】
プラグイン３５０は、プラグインがクラッシュした場合にオペレーティング・システム障害を防止するために設定されている特権を伴ってモバイル・デバイス３００上で専用プロセスとして稼働することができる。プラグインがクラッシュした場合に、プラグイン・プロセスは、システムの安定性に影響を与えることなく再開することができる。
【００４４】
プラグイン３５０はさらに、利用可能なプラグイン更新があればそれをプラグインに検索させるプラグインへのコールバックをオペレーティング・システム３４０が定期的に（又は別の時間ベースで）発行することになると指定するように構成され得る。モバイル・デバイス３００は、１つ又は複数のプラグイン３５０がプリインストールされた状態で届くことが可能であり、さらなるプラグインは、必要に応じて、又は利用可能になった時点で、そのデバイスに追加することができる。一実施形態においては、フレームワークは、次のプラグイン・インターフェース、すなわち、初期化インターフェース、チェック・ネットワーク・インターフェース、マスク・インターフェース、接続前インターフェース、認証インターフェース、キープ・アライブ・インターフェース、接続失敗インターフェース、リセット・インターフェース、及びコントロール・インターフェースのうちの１つ又は複数を含むことができる。
【００４５】
初期化インターフェースは、登録ステータス（すなわち、セルラー・ネットワークへのモバイル・デバイスの登録のステータス）、プラグインが更新されることになる（例えば、新たなホットスポットのロケーション、もはや存在しないホットスポット、又は別のＭＯによって所有若しくは運営されるようになっているホットスポットの除去など、モバイル・オペレータに関するＷｉ−Ｆｉホットスポット情報の更新の）頻度（例えば、プラグイン更新頻度）、接続情報（例えば、ネットワーク・プロトコル）、認証情報（例えば、ネットワークに関して使用されている認証スキーマ）、モバイル・デバイスと無線ネットワークとの間における接続を維持するためにキープ・アライブ・メッセージが送信されることになる頻度（例えば、キープ・アライブ・メッセージ頻度）を返すことができる。プラグインは、数十、数百、又は数千もの無線ネットワーク上の情報を含むネットワーク・データベースを含むことができるため、そのネットワーク・データベースは、ときおり更新されることが必要となる可能性が高い。プラグイン更新頻度又はキープ・アライブ・メッセージ頻度を受信したことに応答して、プラグイン・ホストは、プラグイン更新コマンド又はキープ・アライブ・メッセージ・コマンドをそれぞれ実質的に少なくとも定期的更新頻度又はキープ・アライブ・メッセージ更新で送信することができる。例えば、プラグインが、３日間の定期的更新頻度をプラグイン・ホストに提供した場合には、プラグイン・ホストは、定期的更新コマンドを少なくとも約３日ごとにプラグインに送信することができる。
【００４６】
チェック・ネットワーク・インターフェース（例えば、Ｃｈｅｃｋ＿ＳＳＩＤインターフェース）は、そのインターフェースに提供されている１つ又は複数のネットワーク識別子（例えば、ＳＳＩＤ）に関連付けられているネットワークが、プラグインに知られているかどうか、及びオフロードのために使用され得るかどうかを判定することができる。チェック・ネットワーク・インターフェースは、例えば、提供されているネットワーク識別子が、オフロードのために使用され得る無線ネットワークに関連付けられている場合には「１」を返すことによって、また、そうでない場合には「０」を返すことによって、提供されているネットワーク識別子が、オフロードのために使用され得る無線ネットワークに関連付けられていることを示すことができる。複数のネットワーク識別子が提供されている場合には、チェック・ネットワーク・インターフェースは、１つ又は複数の好ましい無線ネットワークと、それらの好ましい無線ネットワークに関する接続情報と、それらの１つ又は複数の好ましい無線ネットワークに関する接続順序とを返すことができる。
【００４７】
マスク・インターフェース（例えば、Ｇｅｔ＿Ｎｅｔｗｏｒｋ＿Ｍａｓｋ）は、プラグインに提供されるネットワーク識別子（例えば、ＳＳＩＤ）のための「マスク」を返す。マスクは、無線ネットワークのためのさらに「ユーザーフレンドリーな」記述子である。例えば、マスク・インターフェースは、提供されるＳＳＩＤ「ＡＴＴＷＩＦＩ」のためのマスク「ＡＴ＆Ｔ  Ｗｉ−Ｆｉ  Ｈｏｔ  Ｓｐｏｔ」を返すことができ、提供されるＳＳＩＤ「ＡＴＴＭＥＴＲＯＷＩＦＩ」のために、マスク「ＡＴ＆Ｔ  Ｍｅｔｒｏ  Ｗｉ−Ｆｉ」を返すことができる。
【００４８】
接続前インターフェースは、プラグインが任意の接続前の初期化タスク又は準備タスクを実行することを可能にするためにネットワーク接続の試みの前にコールすることができる。
【００４９】
認証インターフェース（例えば、Ａｔｔｅｍｐｔ＿Ａｕｔｈｅｎｔｉｃａｔｉｏｎインターフェース）は、モバイル・オペレータの認証データベースに対してモバイル・デバイス又はモバイル・デバイス・ユーザーを認証することなどの認証タスクを実行するようプラグインに指示するために、モバイル・デバイスが無線ネットワークに接続された後にコールすることができる。認証インターフェースは、認証が成功したかどうかのインジケーションを返すことができる。キープ・アライブ・インターフェース（例えば、Ｓｅｎｄ＿Ｋｅｅｐ＿Ａｌｉｖｅ＿Ｍｅｓｓａｇｅインターフェース）は、無線ネットワーク接続を維持する目的でキープ・アライブ・メッセージを送信するようプラグインに指示するために、コールすることができる。接続失敗インターフェース（例えば、Ｃｏｎｎｅｃｔｉｏｎ＿Ｆａｉｌｕｒｅインターフェース）は、示されたネットワークに関するネットワーク・テレメトリー・データを収集して報告することをプラグインに行わせるために、コールすることができる。定期的更新インターフェース（例えば、Ｐｅｒｉｏｄｉｃ＿Ｕｐｄａｔｅインターフェース）は、データベース更新を実行してテレメトリー・データをリモート・サーバへ送信することをプラグインに行わせる。リセット・インターフェースは、初期状態へリセットするようプラグインに要求することができる。コントロール・インターフェースは、モバイル・デバイスが任意のプラグイン固有コマンドをプラグインへ送信することを可能にすることができる。
【００５０】
さまざまな実施形態においては、このフレームワークは、上で列挙されているよりも多くの又は少ないプラグイン・インターフェースを含むことができ、インターフェースは、上で使用されている以外の名前、又は上述のインターフェースの変形形態を有することができる。例えば、初期化インターフェースは、上述の初期化インターフェースによって返される情報のサブセットを返すことができ、チェック・ネットワーク・インターフェースは、プラグインに関連付けられている無線ネットワーク・データベース内に含まれている無線ネットワークのうちの全てのリストを返すことができる。
【００５１】
図４は、拡張可能なフレームワーク４００の例示的な一実施態様のブロック図である。フレームワーク４００は、ＷＬＡＮプロトコル・スタック（ＷＬＡＮスタック）４１０、プラグイン・ホスト（認証ソフトウェア・モジュール・ホスト）４２０、プラグイン（認証ソフトウェア・モジュール）４３０、及びユーザー・インターフェース・コントローラ４９７の間においてメッセージ及び情報が渡されているところを示している。モバイル・コンピューティング・デバイスが、複数のプラグインを含んでいる場合には、プラグイン４３０は、アクティブ認証プラグイン（又は、複数のプラグインがアクティブであることが認められる場合には、アクティブ・プラグインのうちの１つ）とすることができる。典型的には、ＷＬＡＮスタック４１０、プラグイン・ホスト４２０、及びユーザー・インターフェース・コントローラ４９７は、モバイル・デバイス・オペレーティング・システムの一部である。したがって、プラグイン・ホスト４２０は、典型的には、プラグイン４３０と通信するモバイル・コンピューティング・デバイス・オペレーティング・システムのコンポーネントを含む。フレームワーク４００内の情報の例示的なフローにおいては、はじめにモバイル・デバイスが、ＷＬＡＮスタック４１０を介して、ＷＬＡＮネットワークを探してスキャンを行う。利用可能な又は検知されたＷＬＡＮネットワークのリスト４４０が、プラグイン・ホスト４２０へ送信される。プラグイン・ホスト４２０は、リスト４４０から除去されることになるネットワークがあるかどうかを、例えばユーザー設定をチェックすることによって、判定することができる。例えばユーザーは、特定のネットワークには、たとえそれらのネットワークが利用可能であっても接続することはない、ということを示しておくことができる。ネットワーク・リスト４５０（ネットワーク・リスト４４０の短縮されたバージョンとすることができる）が、プラグイン４３０へ送達される。このネットワーク・リストは、検知されたネットワークに対応する任意の情報を含むことができる。プラグイン４３０は、オフロードのために使用することができる１つ又は複数の好ましい無線ネットワークのネットワーク情報４６０（例えば、ＳＳＩＤ）を返す。それらの好ましいネットワークは、プラグイン・ホスト４２０によって提供される検知されたネットワークから選択される。複数の好ましい無線ネットワークがプラグイン４３０によって提供されている場合には、プラグイン・ホスト４２０は、接続のために１つを選択する。次いでプラグイン・ホスト４２０は、選択された無線ネットワークに接続するようＷＬＡＮスタック４１０に指示する接続コマンド４７０を送信する。例えば、プラグイン・ホスト４２０は、プラグイン４３０によって提供された接続順序、及び／又はユーザーによって指定された接続順序に基づいて、どの無線ネットワークに接続するかを選択することができる。
【００５２】
複数のアクティブ認証プラグインが存在する実施形態においては、ネットワーク・リスト４５０が、プラグイン・ホスト４２０によってアクティブ・プラグインに提供され得る。同じネットワーク・リスト４５０を複数のアクティブ・プラグインへ送信することが可能であり、又は特定のプラグインに関連付けられているモバイル・オペレータに関連付けられている無線ネットワークにのみ対応する情報を含むネットワーク・リスト４５０を送信することも可能である。次いでプラグイン・ホスト４２０は、好ましいネットワークに関するネットワーク情報４６０をアクティブ・プラグイン４３０から受信することができる。次いでプラグイン・ホスト４２０は、複数のアクティブ・プラグインによって提供された好ましいネットワークから、接続先のネットワークを選択することができる。
【００５３】
モバイル・デバイスが複数の同時ネットワーク接続をサポートすることができる場合には、この拡張可能なフレームワークは、そのモバイル・デバイスをオフロードのために複数のネットワークに接続することができる。この拡張可能なフレームワークは、下記のように、オフロードのために複数のネットワーク接続を行うことができる。モバイル・デバイスは、そのモバイル・デバイスが接続することができるさまざまなモバイル・オペレータに関連付けられているネットワークを検知することができる。検知されたネットワークのリストは、ＷＬＡＮコンポーネント又はサブシステムによってプラグイン・ホストへ渡される。プラグイン・ホストは、そのモバイル・デバイスが接続することができるネットワークを所有しているモバイル・オペレータに関連付けられているアクティブ・プラグインへネットワーク・リストを送信する。それと引き換えに、アクティブ・プラグインのうちのそれぞれは、１つ又は複数の好ましいネットワークに関する情報をプラグイン・ホストへ送信することができる。次いでプラグイン・ホストは、アクティブ・プラグインによって提供されたそれぞれの好ましいネットワーク・リストからネットワークを選択し、選択されたネットワークへ接続するようＷＬＡＮコンポーネントに指示する。選択されたネットワークへの接続が行われた後に、それぞれの接続ごとに、適切なアクティブ・プラグインが通知される。次いでアクティブ・プラグインは、選択されたネットワークに対してモバイル・デバイス又はモバイル・デバイス・ユーザーを認証することを試みて、その認証結果をプラグイン・ホストに報告する。接続されたネットワークの認証が成功した場合には、モバイル・デバイスは、接続されたネットワークのうちの任意の１つをオフロードのために使用することができる。
【００５４】
選択されたネットワークへの接続が行われた後に、プラグイン・ホスト４２０は、接続通知４８０をその接続のプラグイン４３０へ送信し、モバイル・デバイス又はモバイル・デバイスのユーザーの認証を要求する。次いでプラグイン４３０は、選択されたネットワークに関連付けられているモバイル・オペレータに基づいて、ネットワーク上で認証を実行することを試みて、認証結果４９０（非同期応答とすることができる）をプラグイン・ホスト４２０へ返して、認証の試みのステータスを報告する。認証は、例えば、８０２．１１オープン認証、ＨＴＴＰＳベースの認証、ＥＡＰ−ＳＩＭ（Ｅｘｔｅｎｓｉｂｌｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ−ＳＩＭ）若しくはＥＡＰ−ＡＫＡ（Ｅｘｔｅｎｓｉｂｌｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ−Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ａｎｄ  Ｋｅｙ  Ｍａｎａｇｅｍｅｎｔ）認証、又はその他の認証スキームを使用して実行することができる。認証が成功した場合には、プラグイン・ホスト４２０は、接続された無線ネットワークにデータ・トラフィックをロードすることができる。
【００５５】
ＷＬＡＮスタック４１０は、モバイル・デバイスのユーザー・インターフェース・コントローラ４９７へ接続通知を送信して（４９５）、選択されたネットワークにそのデバイスが接続したことをユーザーに知らせることも可能である。ユーザー・インターフェース・コントローラ４９７は、ネットワークのＳＳＩＤとは異なる場合がある（例えば、Ｇｅｔ＿Ｎｅｔｗｏｒｋ＿Ｍａｓｋインターフェースを使用した）無線ネットワーク表示名のユーザーフレンドリー・バージョンを求めてプラグイン４３０にクエリーを行うこと（４９９）、及びそれに応答して無線ネットワーク表示名のユーザーフレンドリー・バージョンを受信することが可能である。
【００５６】
認証の試みが不成功であった場合には、プラグイン・ホスト４２０は、モバイル・デバイスを無線ネットワークから接続解除することができる。複数の好ましいネットワーク及び接続順序がプラグイン４３０によって指定されていた場合には、プラグイン・ホスト４２０は、接続順序に従って次なる無線ネットワークに接続することを試みることができる。ユーザーのデータ・プランの適格性に起因して、又はユーザーによって是正することが可能である別の理由で認証が失敗した場合には、プラグイン４３０は、カスタマー・サポートにコンタクトすること、又はユーザーのデータ・プランをアップグレードすることなど、その問題をどのようにして解決するかをユーザーにアドバイスする通知をプラグイン・ホスト４２０へ渡すことができる。
【００５７】
いくつかの実施形態においては、モバイル・コンピューティング・デバイスは、オフロード・フレームワークの複数の側面にわたるユーザー・コントロールを可能にするように構成され得る。例えば、モバイル・デバイスは、ユーザーが個々のＷｉ−Ｆｉホットスポットへの接続を有効にすること若しくは無効にすること、ホットスポット・ネットワークに手動で接続することを可能にするように、又は、モバイル・オペレータ・ホットスポット接続がユーザーによって無効にされている場合にはユーザーがユーザー・プロファイルをホットスポット・ネットワークへの接続用に構成することを可能にするように構成され得る。例えば、ユーザーは、たとえ特定のＷｉ−Ｆｉホットスポットに関連付けられているモバイル・オペレータのためのホットスポット接続がユーザーによって無効にされていても、その特定のＷｉ−Ｆｉホットスポット・ネットワークが接続されることになるようにユーザー・プロファイルを構成することができる。その上、ユーザーは、プラグインが接続情報を含んでいるネットワーク以外のネットワークへの自動的なデータ・トラフィック・オフロードを可能にするようにフレームワークを構成することができる。さらに、モバイル・コンピューティング・デバイスは、自動的なＷｉ−Ｆｉネットワーク・オフロードをユーザーが有効にすること又は無効にすることを可能にするように構成され得る。
【００５８】
図５は、モバイル・コンピューティング・デバイス・データ・トラフィックをセルラー・ネットワークから無線ネットワークへオフロードする第１の例示的な方法５００のフローチャートである。方法５００は、例えば、認証プラグイン・ホストと、ＡＴ＆Ｔ無線ネットワークへの自動的な接続及びデータ・トラフィックのオフロードを可能にするためのＡＴ＆Ｔ認証プラグインとを含む、ＡＴ＆Ｔセルラー・ネットワーク及び無線ネットワークとともに機能するように構成されているスマートフォンによって実行することができる。５１０において、モバイル・コンピューティング・デバイス・データ・トラフィックが、セルラー・ネットワークを介して送信及び／又は受信される。この例においては、スマートフォンは、ＡＴ＆Ｔセルラー・ネットワークを介してデータ・トラフィックを送信及び／又は受信する。５２０において、１つ又は複数の検知される無線ネットワークが、モバイル・コンピューティング・デバイスのレンジ内で検知される。この例においては、ユーザーがコーヒー・ショップ内にやって来て、スマートフォンが、２つのＷｉ−Ｆｉホットスポット（１つは、コーヒー・ショップを拠点としており、もう１つは、隣のオフィスを拠点としている）を検知する。コーヒー・ショップのＷｉ−Ｆｉホットスポットは、ＡＴ＆Ｔ  Ｗｉ−Ｆｉホットスポットである。５３０において、選択される無線ネットワークが、１つ又は複数の検知された無線ネットワークから選択される。選択された無線ネットワークは、モバイル・オペレータに関連付けられている。この例においては、スマートフォンは、ＡＴ＆Ｔ  Ｗｉ−Ｆｉホットスポットに関連付けられている無線ネットワークを選択する。５４０において、ワイヤレス通信デバイスは、選択された無線ネットワークに自動的に接続される。この例においては、スマートフォンは、ＡＴ＆Ｔ  Ｗｉ−Ｆｉホットスポットに自動的に接続する。５５０において、モバイル・オペレータに対するモバイル・コンピューティング・デバイス又はモバイル・コンピューティング・デバイスのユーザーの認証が、自動的に開始される。この例においては、スマートフォンは、ＡＴ＆Ｔに対するそのスマートフォンの認証を自動的に開始する。認証を開始することは、ＡＴ＆Ｔ  Ｗｉ−Ｆｉ無線ネットワークを介してリモートのＡＴ＆Ｔサーバへ情報を送信することを含む。５６０において、モバイル・コンピューティング・デバイス又はモバイル・コンピューティング・デバイスのユーザーの認証が成功したと判定される。この例においては、スマートフォンは、そのスマートフォンが、接続されているネットワーク上での使用を認証されたことを示す、リモートのＡＴ＆Ｔサーバからの情報、又は、認証が成功したことを判定するためにそのスマートフォンが使用することができる情報を受信する。５７０において、データ・トラフィックが、選択された無線ネットワークへオフロードされる。この例においては、スマートフォンは、データ・トラフィックのうちの少なくとも一部分をＡＴ＆Ｔ無線ネットワークへオフロードする。このように、スマートフォンは、ＡＴ＆Ｔ無線ネットワークを自動的に検知して接続を行っており、ユーザーの介入を伴わずにＡＴ＆Ｔセルラ���・ネットワークからＡＴ＆Ｔ無線ネットワークへデータ・トラフィックを自動的にオフロードしている。いくつかの実施形態においては、方法５００は、図５において示されているよりも少ないアクションを含むことができる。
【００５９】
本明細書において説明されている拡張可能なフレームワークは、少なくとも下記の例示的な利点を提供する。コア・システムＡＰＩへのアクセスを制御することによって、モバイル・デバイス・オペレーティング・システムの安定性を改善することができ、バッテリー寿命を延長することができる。例えば、プラグイン、又はプラグインとインタラクトするその他のソフトウェア・アプリケーションなど、モバイル・デバイス上で実行されているソフトウェア・アプリケーションが、無線ネットワークの存在を探してスキャンを行うシステム機能への際限のないアクセスを有するのを防止することによって、アプリケーションが無線ネットワークを探して継続的に又は頻繁にスキャンを行うこと（これは、バッテリー寿命を低減させ得る）が防止される。
【００６０】
さらに、現在のモバイル・オペレータのエコシステムは、さらに細分化されるようになっており、さまざまなモバイル・オペレータが、セルラー・データをＷｉ−Ｆｉホットスポットへオフロードするためのさまざまなソリューション及びプロトコルを使用し続けているため、プラットフォーム開発者にとって、全てのモバイル・オペレータの要求を満たして最新の状態に保たれるオフロード・ソリューションを開発して保守することは、さらに厄介になっている。複数のプラグインが１つのモバイル・デバイス上にインストールされること、新たなプラグインがインストールされること、及びインストールされたプラグインが更新されることを可能にすることによって、このフレームワークは、ネットワーク通信プロトコルにおける変化、新たなプロトコルの開発、新たなホットスポットの存在、及びモバイル・オペレータのビジネス環境における変化（例えば、新たなモバイル・オペレータの登場、モバイル・オペレータどうしの合併、モバイル・オペレータの廃業）に適合することができる動的で拡張可能なフレームワークである。
【００６１】
その上、本明細書において説明されているオフロード・フレームワークは、ネットワーク・スキャン、接続、及び接続解除機能へのアクセスを許可しないこと、その一方で同時に、アプリケーション開発者（ＭＯ及びＩＳＶ）がモバイル・オペレータの仕様に従ってＷｉ−Ｆｉオフロード・ソリューションを実施することができるフレームワークをそれらのアプリケーション開発者に提供することによって、モバイル・コンピューティング・デバイスがシステム・パフォーマンス及び安定性を維持することを可能にする。
【００６２】
さらに、システム・プラットフォーム開発者は、コア・システムＡＰＩへのアクセスを許可することによってＩＳＶに柔軟性を提供することと、システム・パフォーマンス、安定性、及びエンド・ユーザー経験にマイナスの影響を与える可能性があるＡＰＩをロック・ダウンすることとの間においてバランスを取らなければならない。本明細書において説明されている拡張可能なフレームワークは、モバイル・デバイスがシステム・パフォーマンス及び安定性を維持することを可能にして、その一方で同時に、モバイル・オペレータの仕様に従ってＷｉ−Ｆｉオフロード・ソリューションを実施するための手段をアプリケーション開発者に提供する。
【００６３】
図６は、本明細書において説明されている拡張可能なフレームワークを採用しているモバイル・コンピューティング・デバイス６００のブロック図である。モバイル・コンピューティング・デバイス６００は、１つ又は複数のプロセッサ６１０と、オペレーティング・システム６２０と、プラグイン・インターフェース６３０と、認証プラグイン６４０とを含む。オペレーティング・システム６２０は、認証プラグイン６４０と通信するためにプラグイン・インターフェース６３０を使用する認証プラグイン・ホスト６５０を含む。プラグイン・インターフェース６３０は、本明細書において説明されているプラグイン・インターフェースのうちの任意のプラグイン・インターフェース（例えば、初期化、認証、チェック・ネットワーク）、及びその他のインターフェースのうちの１つ又は複数を含むことができる。
【００６４】
図７は、セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックをオフロードする第２の例示的な方法７００のフローチャートである。方法７００は、例えば、アクティブ認証プラグインである、モバイル・オペレータＡに関連付けられているプラグインとともに複数のプラグインを記憶している、認証プラグイン・ホストを含むオペレーティング・システムを有するタブレット・コンピューティング・デバイスによって実行することができる。
【００６５】
７１０において、１つ又は複数の検知された無線ネットワークに対応する情報が、認証プラグイン・ホストからアクティブ認証プラグインへ送信される。それらの１つ又は複数の検知された無線ネットワーク及びアクティブ認証プラグインは、モバイル・オペレータに関連付けられている。この例においては、タブレットの認証プラグイン・ホストは、モバイル・オペレータＡに関連付けられている検知された無線ネットワークＸ、Ｙ、及びＺに関するＳＳＩＤをアクティブ認証プラグインへ送信する。
【００６６】
７２０において、１つ又は複数の検知された無線ネットワークから選択された１つ又は複数の好ましい無線ネットワークに対応する情報が、認証プラグイン・ホストにおいてアクティブ認証プラグインから受信される。この例においては、タブレットの認証プラグイン・ホストは、好ましい無線ネットワークＸ及びＺに関するＳＳＩＤをアクティブ・プラグインから受信する。無線ネットワークＸが無線ネットワークＺの前に接続されるべきであることを示す接続順序も、認証プラグイン・ホストへ送信される。
【００６７】
７３０において、モバイル・コンピューティング・デバイスは、１つ又は複数の好ましい無線ネットワークのうちの１つに接続する。モバイル・コンピューティング・デバイスが接続される好ましい無線ネットワークは、接続されている無線ネットワークである。この例においては、タブレットは、無線ネットワークＸに接続する。７４０において、接続されている無線ネットワーク上で、モバイル・コンピューティング・デバイス又はモバイル・コンピューティング・デバイスのユーザーの認証要求が、アクティブ認証プラグインへ送信される。この例においては、タブレットの認証プラグイン・ホストは、無線ネットワークＸ上でタブレットを認証したいという要求をアクティブ・プラグインへ送信する。
【００６８】
７５０において、認証が成功したことを示す情報が、アクティブ認証プラグインから受信される。この例においては、認証プラグイン・ホストは、タブレットがモバイル・オペレータＡによって認証された旨の確認をモバイル・オペレータＡプラグインから受信する。
【００６９】
７６０において、データ・トラフィックの少なくとも一部分が、接続されている無線ネットワークへオフロードされる。この例においては、タブレットは、自身がセルラー・ネットワークを介して受信及び送信しているデータ・トラフィックの少なくとも一部分を無線ネットワークＸへオフロードする。
【００７０】
図８は、セルラー・ネットワークを介してモバイル・コンピューティング・デバイスへ送信されるデータ・トラフィックをオフロードする第３の例示的な方法のフローチャートである。８１０において、認証プラグイン・ホストと、アクティブ認証プラグインを含む複数の認証プラグインと、認証インターフェースと、チェック・ネットワーク・インターフェースとを含む拡張可能なフレームワークが提供される。
【００７１】
８２０において、認証プラグイン・ホストから認証インターフェースへの少なくとも１つのコールを受信したことに応答して、アクティブ認証プラグインは、モバイル・コンピューティング・デバイスが接続されているネットワーク上でそのモバイル・コンピューティング・デバイス又はそのモバイル・コンピューティング・デバイスのユーザーの認証を試みて、その試みた認証が成功したかどうかのインジケーションを返す。８３０において、１つ又は複数の検知された無線ネットワークに対応する情報を含む、チェック・ネットワーク・インターフェースへの少なくとも１つのコールを受信したことに応答して、アクティブ認証プラグインは、１つ又は複数の好ましい無線ネットワークに対応する情報と、それらの１つ又は複数の好ましい無線ネットワークに関する接続順序とを返す。
【００７２】
開示されている方法のうちのいずれも、コンピュータ実行可能命令又はコンピュータ・プログラム製品として実装することができる。それらのコンピュータ実行可能命令又はコンピュータ・プログラム製品、並びに開示されている実施形態の実装中に作成及び使用されるいかなるデータも、１つ又は複数のコンピュータ読み取り可能な記憶媒体（例えば、１つ若しくは複数の光媒体ディスク（ＤＶＤ若しくはＣＤなど）、揮発性メモリ・コンポーネント（ＤＲＡＭ若しくはＳＲＡＭなど）、又は不揮発性メモリ・コンポーネント（フラッシュ・メモリ若しくはハード・ドライブなど）などの非トランジトリなコンピュータ読み取り可能な記憶媒体）上に記憶されること、及びコンピュータ（例えば、スマートフォン、又は、コンピューティング・ハードウェアを含むその他のコンピューティング・デバイスなど、任意の市販のコンピュータ）上で実行されることが可能である。コンピュータ読み取り可能な記憶媒体は、伝搬信号を含まない。コンピュータ実行可能命令は、例えば、専用ソフトウェア・アプリケーション、又はウェブ・ブラウザーを介してアクセス若しくはダウンロードされるソフトウェア・アプリケーション、又はその他のソフトウェア・アプリケーション（リモート・コンピューティング・アプリケーションなど）の一部とすることができる。そのようなソフトウェアは、たとえば、単一のローカル・コンピュータ（例えば、任意の適切な市販のコンピュータ）上で、又は、１つ若しくは複数のネットワーク・コンピュータを使用してネットワーク環境において（例えば、インターネット、ワイドエリア・ネットワーク、ローカルエリア・ネットワーク、クライアントサーバ・ネットワーク（クラウド・コンピューティング・ネットワークなど）、若しくはその他のそのようなネットワークを介して）実行することができる。
【００７３】
明確にするために、ソフトウェアベースの実装形態の特定の選択された態様のみが説明されている。当技術分野においてよく知られているその他の詳細は、省略されている。例えば、開示されているテクノロジーは、いかなる特定のコンピュータ言語又はプログラムにも限定されるものではないということを理解されたい。例えば、開示されているテクノロジーは、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ａｄｏｂｅ（登録商標）  Ｆｌａｓｈ、又はその他の任意の適切なプログラミング言語で書かれたソフトウェアによって実装することができる。同様に、開示されているテクノロジーは、いかなる特定のコンピュータ又は特定のタイプのハードウェアにも限定されるものではない。適切なコンピュータ及びハードウェアの特定の詳細は、よく知られており、本開示において詳細に説明する必要はない。
【００７４】
さらに、（例えば、開示されている方法のうちの任意の方法をコンピュータに実行させるためのコンピュータ実行可能命令を含む）ソフトウェアベースの実施形態のうちのいずれも、適切な通信手段を通じてアップロードされること、ダウンロードされること、又はリモートからアクセスされることが可能である。そのような適切な通信手段は、例えば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ケーブル（光ファイバ・ケーブルを含む）、磁気通信、電磁通信（ＲＦ通信、マイクロ波通信、及び赤外線通信を含む）、電子通信、又はその他のそのような通信手段を含む。
【００７５】
開示されている方法は、開示されている方法のうちの任意の方法を実行するように構成されている専門化されたコンピューティング・ハードウェアによって実装することもできる。例えば、開示されている方法は、集積回路（例えば、特定用途向け集積回路（「ＡＳＩＣ」）、又はフィールド・プログラマブル・ゲート・アレイ（「ＦＰＧＡ」）などのプログラマブル・ロジック・デバイス（「ＰＬＤ」））によって（全体的に又は少なくとも部分的に）実装することができる。その集積回路は、拡張可能なフレームワークを実施するためのモバイル・コンピューティング・デバイス内に組み込まれること、又はそのモバイル・コンピューティング・デバイスに直接結合されることが可能である。
【００７６】
本明細書において開示されているさまざまな方法は、プロセッサによってコンピューティング環境において実行される、プログラム・モジュール内に含まれているコンピュータ実行可能命令など、コンピュータ実行可能命令という一般的なコンテキストにおいて説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するか又は特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラム・モジュールの機能は、さまざまな実施形態において、希望に応じてプログラム・モジュールどうしの間において結合されること、又は分割されることが可能である。プログラム・モジュールのためのコンピュータ実行可能命令は、ローカルな又は分散されたコンピューティング環境内で実行することができる。
【００７７】
本出願において、及び特許請求の範囲において使用される際には、単数形の「ａ」、「ａｎ」、及び「ｔｈｅ」は、複数形を含む（ただし、そうではないことを文脈が明らかに示している場合は除く）。同様に、「ｏｒ」という言葉は、「ａｎｄ」を含むことが意図されている（ただし、そうではないことを文脈が明らかに示している場合は除く）。「ｃｏｍｐｒｉｓｉｎｇ」という用語は、「ｉｎｃｌｕｄｉｎｇ」を意味し、したがって、「ｃｏｍｐｒｉｓｉｎｇ  Ａ  ｏｒ  Ｂ」は、Ａ又はＢ、並びにＡ及びＢをともに含むことを意味する。加えて、「ｉｎｃｌｕｄｅｓ」という用語は、「ｃｏｍｐｒｉｓｅｓ」を意味する。さらに、本明細書において使用される際には、「ａｎｄ／ｏｒ」という用語は、そのフレーズにおける任意の１つのアイテム又は任意のアイテムの組合せを意味する。
【００７８】
開示されている方法、装置、及びシステムは、いかなる形であれ限定的なものと解釈されるべきではない。そうではなく、本開示は、単独での、及び相互のさまざまな組合せ及び下位組合せでの、さまざまな開示されている実施形態の全ての自明ではない新規な特徴及び態様を対象としている。開示されている方法、装置、及びシステムは、いかなる特定の態様若しくは特徴又はそれらの組合せにも限定されるものではなく、開示されている実施形態は、いかなる１つ又は複数の特定の利点が存在することも、又はいかなる問題が解決されることも必要とするものではない。
【００７９】
本開示の装置又は方法を参照しながら本明細書において提示されているオペレーションの理論、科学的な原理、又はその他の理論的な説明は、より良好な理解の目的で提供されており、範囲を限定することを意図するものではない。添付の特許請求の範囲における装置及び方法は、オペレーションのそのような理論によって説明されている様式で機能する装置及び方法に限定されるものではない。
【００８０】
開示されている方法のうちのいくつかのオペレーションは、好都合な提示のために特定の連続した順序で説明されているが、説明のこの様式は、並べ替えを含む（ただし、本明細書において示されている特定の表現によって特定の順序が必要とされている場合は除く）ということを理解されたい。例えば、連続して説明されているオペレーションどうしは、いくつかのケースにおいては、並べ替えられること、又は同時に実行されることが可能である。その上、簡潔にするために、添付の図は、開示されている方法をその他の方法と併せて使用することができるさまざまなやり方を示していない場合がある。
【００８１】
例示されている実施形態の原理について示し、説明してきたが、これらの実施形態は、上述のコンセプトに対する忠実性を保持しながらも、さまざまなアレンジで修正することができる。例示されている実施形態の原理を適用することができる多くの可能な実施形態を考慮すれば、例示されている実施形態は、例にすぎず、本開示の範囲を限定するものと解釈されるべきではないということが認識されるはずである。我々は、添付の特許請求の範囲内に収まる全てについて特許請求している。
【図１】
2015508613.tif 000003
【図２】
2015508613.tif 000004
【図３】
2015508613.tif 000005
【図４】
2015508613.tif 000006
【図５】
2015508613.tif 000007
【図６】
2015508613.tif 000008
【図７】
2015508613.tif 000009
【図８】
2015508613.tif 000010
【国際調査報告】
2015508613.tif 000011
2015508613.tif 000012