(57)【特許請求の範囲】
【請求項１】
ワイヤレス通信のための方法であって、
第１のワイヤレスインターフェースがアクティブである間、少なくとも１つのソケットコールを、モバイルデバイスにおけるソケット層に到達することからインターセプトすることと、なお、前記第１のワイヤレスインターフェースは常時接続インターフェースである、
前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することに基づいて、第２のワイヤレスインターフェースをアクティブ化することと、
前記少なくとも１つのインターセプトされたソケットコールを前記アクティブ化された第２のワイヤレスインターフェース上の前記ソケット層にリリースすることと、
を備え、
前記少なくとも１つのソケットコールをインターセプトすること、前記第２のワイヤレスインターフェースをアクティブ化すること、及び、前記インターセプトされたソケットコールを前記ソケット層にリリースすることは、前記モバイルデバイスがアイドルモードにある期間中に実行される、
方法。
【請求項２】
前記アクティブ化された第２のワイヤレスインターフェースを使用して、前記リリースされたソケットコールを送信することをさらに備える、請求項１に記載の方法。
【請求項３】
前記第２のワイヤレスインターフェースをアクティブ化することは、
前記第１のワイヤレスインターフェースに関連する第１のワイヤレスネットワークとは異なる、利用可能な第２のワイヤレスネットワークをスキャンすることと、
前記利用可能な第２のワイヤレスネットワークを検出すると、前記第２のワイヤレスインターフェースをアクティブ化することと、を備える、請求項１に記載の方法。
【請求項４】
トリガイベントを検出すると、前記第２のワイヤレスインターフェースを非アクティブ化することをさらに備える、請求項１に記載の方法。
【請求項５】
前記トリガイベントを検出することは、
前記少なくとも１つのソケットコールが実行されたものと決定することを備える、請求項４に記載の方法。
【請求項６】
前記トリガイベントを検出することは、
タイマーが終了したものと決定することを備える、請求項４に記載の方法。
【請求項７】
前記第２のワイヤレスインターフェースがアクティブ化された状態にある期間中、および前記第２のワイヤレスインターフェースが非アクティブ化された状態にある期間中に、前記第１のワイヤレスインターフェースをアクティブ化された状態に維持すること、をさらに備える、請求項１に記載の方法。
【請求項８】
前記第２のワイヤレスインターフェースがアクティブ化されていると決定することに基づいて、前記第１のワイヤレスインターフェースを非アクティブ化することと、
前記第２のワイヤレスインターフェースが非アクティブ化されていると決定することに基づいて、前記第１のワイヤレスインターフェースを再アクティブ化することと、をさらに備える、請求項１に記載の方法。
【請求項９】
前記第２のワイヤレスインターフェースがアクティブになることに関する通知をディセーブルすることをさらに備える、請求項１に記載の方法。
【請求項１０】
前記第１のワイヤレスインターフェースを介して持続的な伝送制御プロトコル（ＴＣＰ）接続を有する１つまたは複数のアプリケーションを識別することと、
前記１つまたは複数のアプリケーションが、前記第２のワイヤレスインターフェースがアクティブになることに関する通知を受信することを防止することと、をさらに備える、請求項１に記載の方法。
【請求項１１】
前記１つまたは複数のアプリケーションを、前記通知を受信することから防止することは、
前記第２のワイヤレスインターフェースがアクティブになることに関する前記通知をインターセプトすることと、
前記通知を廃棄することと、を備える、請求項１０に記載の方法。
【請求項１２】
前記１つまたは複数のアプリケーションを、前記通知を受信することから防止することは、
前記１つまたは複数のアプリケーションから生じる、前記第２のワイヤレスインターフェースに宛てられたトラフィックを廃棄すること、を備える、請求項１０に記載の方法。
【請求項１３】
前記少なくとも１つのインターセプトされたソケットコールを、前記ソケット層にリリースすることを決定することは、
リリーストリガイベントの発生を検出すること、を備える、請求項１に記載の方法。
【請求項１４】
前記リリーストリガイベントは、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）への接続が完了していることの表示を備える、請求項１３に記載の方法。
【請求項１５】
前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することは、
前記少なくとも１つのソケットコールを発したアプリケーションを、クリティカルアプリケーションとして識別すること、を備える、請求項１に記載の方法。
【請求項１６】
前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することは、
前記少なくとも１つのインターセプトされたソケットコールが、許容度しきい値より下の遅延許容度を持つものと決定すること、を備える、請求項１に記載の方法。
【請求項１７】
ラッパーのための命令を実行することをさらに備え、前記実行されたラッパーは、前記少なくとも１つのソケットコールを前記インターセプトすることを実行する、請求項１に記載の方法。
【請求項１８】
前記ラッパーは、前記モバイルデバイスのオペレーティングシステムのアプリケーション層とソケット層との間に位置する、請求項１７に記載の方法。
【請求項１９】
ワイヤレス通信のために構成されたモバイルデバイスであって、
プロセッサと、
前記プロセッサと電子的に通信しており、オペレーティングシステムを備えるメモリとを備え、
前記プロセッサはアプリケーション接続性エンジンを備え、前記エンジンは、
第１のワイヤレスインターフェースがアクティブである間、少なくとも１つのソケットコールを、モバイルデバイスにおけるソケット層に到達することからインターセプトし、なお、前記第１のワイヤレスインターフェースは常時接続インターフェースである、
前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することに基づいて、第２のワイヤレスインターフェースをアクティブ化し、
前記少なくとも１つのインターセプトされたソケットコールを前記アクティブ化された第２のワイヤレスインターフェース上の前記ソケット層にリリースする、ための命令を実行するように構成され、
前記インターセプトすること、前記アクティブ化すること、及び前記リリースすることは、前記モバイルデバイスがアイドルモードにある期間中に実行される、
モバイルデバイス。
【請求項２０】
前記第２のワイヤレスインターフェースをアクティブ化することは、前記アプリケーション接続性エンジンが、
前記第１のワイヤレスインターフェースに関連する第１のワイヤレスネットワークとは異なる、利用可能な第２のワイヤレスネットワークをスキャンし、
前記利用可能な第２のワイヤレスネットワークを検出すると、前記第２のワイヤレスインターフェースをアクティブ化する、ための命令を実行するように構成されることを備える、請求項１９に記載のモバイルデバイス。
【請求項２１】
前記アプリケーション接続性エンジンは、
トリガイベントを検出すると、前記第２のワイヤレスインターフェースを非アクティブ化する、ための命令を実行するようにさらに構成される、請求項１９に記載のモバイルデバイス。
【請求項２２】
前記トリガイベントを検出することは、前記アプリケーション接続性エンジンが、
前記少なくとも１つのソケットコールが実行されたものと決定する、ための命令を実行するようにさらに構成されることを備える、請求項２１に記載のモバイルデバイス。
【請求項２３】
前記トリガイベントを検出することは、前記アプリケーション接続性エンジンが、
タイマーが終了したものと決定する、ための命令を実行するようにさらに構成されることを備える、請求項２１に記載のモバイルデバイス。
【請求項２４】
前記アプリケーション接続性エンジンは、
前記第２のワイヤレスインターフェースがアクティブ化された状態にある期間中、および前記第２のワイヤレスインターフェースが非アクティブ化された状態にある期間中に、前記第１のワイヤレスインターフェースをアクティブ化された状態に維持する、ための命令を実行するようにさらに構成される、請求項１９に記載のモバイルデバイス。
【請求項２５】
前記アプリケーション接続性エンジンは、
前記第２のワイヤレスインターフェースがアクティブ化されていると決定することに基づいて、前記第１のワイヤレスインターフェースを非アクティブ化し、
前記第２のワイヤレスインターフェースが非アクティブ化されていると決定することに基づいて、前記第１のワイヤレスインターフェースを再アクティブ化するための命令を実行するようにさらに構成される、請求項１９に記載のモバイルデバイス。
【請求項２６】
前記アプリケーション接続性エンジンは、
前記第２のワイヤレスインターフェースがアクティブになることに関する通知をディセーブルするための命令を実行するようにさらに構成される、請求項１９に記載のモバイルデバイス。
【請求項２７】
前記アプリケーション接続性エンジンは、
前記第１のワイヤレスインターフェースを介して持続的な伝送制御プロトコル（ＴＣＰ）接続を有する１つまたは複数のアプリケーションを識別し、
前記１つまたは複数のアプリケーションを、前記第２のワイヤレスインターフェースが利用可能になることに関する通知を受信することから防止する、ための命令を実行するようにさらに構成される、請求項１９に記載のモバイルデバイス。
【請求項２８】
前記アプリケーション接続性エンジンは、
前記１つまたは複数のアプリケーションから生じる、前記第２のワイヤレスインターフェースに宛てられたトラフィックを廃棄する、ための命令を実行するようにさらに構成される、請求項２７に記載のモバイルデバイス。
【請求項２９】
前記リリーストリガイベントは、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）への接続が完了したことの少なくとも１つの表示を備える、請求項１９に記載のモバイルデバイス。
【請求項３０】
前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することは、前記アプリケーション接続性エンジンが、
前記少なくとも１つのソケットコールを発したアプリケーションをクリティカルアプリケーションとして識別する、ための命令を実行するようにさらに構成されることを備える、請求項１９に記載のモバイルデバイス。
【請求項３１】
前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することは、前記アプリケーション接続性エンジンが、
前記少なくとも１つのインターセプトされたソケットコールが許容度しきい値より下の遅延許容度を持つものと決定する、ための命令を実行するようにさらに構成されることを備える、請求項１９に記載のモバイルデバイス。
【請求項３２】
前記メモリは、
ラッパーをさらに備え、前記アプリケーション接続性エンジンが前記ラッパー上で命令を実行するようにさらに構成され、前記命令が実行されると、前記ラッパーが前記ソケットコールを前記アプリケーションからインターセプトするように構成される、請求項１９に記載のモバイルデバイス。
【請求項３３】
前記ラッパーは、前記モバイルデバイスのオペレーティングシステムのアプリケーション層とソケット層との間に位置する、請求項３２に記載のモバイルデバイス。
【請求項３４】
モバイルデバイス上のアプリケーションからのソケットコールを管理するように構成された装置であって、
第１のワイヤレスインターフェースがオペレーティングシステムにおいてアクティブである間、少なくとも１つのソケットコールを、モバイルデバイスにおけるソケット層に到達することからインターセプトするための手段と、なお、前記第１のワイヤレスインターフェースは常時接続インターフェースである、
前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することに基づいて、前記オペレーティングシステムにおける第２のワイヤレスインターフェースをアクティブ化するための手段と、
前記少なくとも１つのインターセプトされたソケットコールを、前記アクティブ化された第２のワイヤレスインターフェース上の前記ソケット層にリリースするための手段と、を備え、
前記インターセプトすること、前記アクティブ化すること、及び前記リリースすることは、前記モバイルデバイスがアイドルモードにある期間中に実行される、
装置。
【請求項３５】
前記第２のワイヤレスインターフェースをアクティブ化することは、
前記第１のワイヤレスインターフェースに関連する第１のワイヤレスネットワークとは異なる、利用可能な第２のワイヤレスネットワークをスキャンするための手段と、
前記利用可能な第２のワイヤレスネットワークを検出すると、前記第２のワイヤレスインターフェースをアクティブ化するための手段と、をさらに備える、請求項３４に記載の装置。
【請求項３６】
トリガイベントを検出すると、前記第２のワイヤレスインターフェースを非アクティブ化するための手段をさらに備える、請求項３４に記載の装置。
【請求項３７】
前記トリガイベントを検出することは、
前記少なくとも１つのソケットコールが実行されたものと決定するための手段をさらに備える、請求項３６に記載の装置。
【請求項３８】
前記第２のワイヤレスインターフェースがアクティブになることに関する通知をディセーブルするための手段をさらに備える、請求項３４に記載の装置。
【請求項３９】
モバイルデバイス上でアプリケーションからのソケットコールを管理するためのコンピュータプログラムであって、
コンピュータに、第１のワイヤレスインターフェースがオペレーティングシステムにおいてアクティブである間、少なくとも１つのソケットコールを、モバイルデバイスにおけるソケット層に到達することからインターセプトさせるためのコードと、なお、前記第１のワイヤレスインターフェースは常時接続インターフェースである、
前記コンピュータに、前記少なくとも１つのインターセプトされたソケットコールを前記ソケット層にリリースすることを決定することに基づいて、前記オペレーティングシステムにおける第２のワイヤレスインターフェースをアクティブ化させるためのコードと、
前記コンピュータに、前記少なくとも１つのインターセプトされたソケットコールを、前記アクティブ化された第２のワイヤレスインターフェース上の前記ソケット層にリリースさせるためのコードと、
を備え、
前記インターセプトさせること、前記アクティブ化させること、及び前記リリースさせることは、前記モバイルデバイスがアイドルモードにある期間中に実行される、
コンピュータプログラム。
【発明の詳細な説明】
【関連出願】
【０００１】
本特許出願は、本特許の譲受人に譲渡され、参照により本明細書に明確に組み込まれた、２０１１年４月２２日に出願された、代理人整理番号１１１５６５Ｐ１を有する、Ａｒｎａｕｄ  Ｍｅｙｌａｎの「ＰＯＷＥＲ  ＥＦＦＩＣＩＥＮＴ  ＯＦＦＬＯＡＤＩＮＧ  ＯＦ  ＤＡＴＡ  ＩＮ  ＳＴＡＮＤＢＹ  ＴＯ  ＷＩＲＥＬＥＳＳ  ＬＯＣＡＬ  ＡＲＥＡ  ＮＥＴＷＯＲＫ（ＷＬＡＮ）」と題する米国特許出願第６１／４７８，１２３号の優先権の利益を主張する。
【背景技術】
【０００２】
広範囲にわたるアドオンのサービスと特徴とをワイヤレスデバイスに提供するように動作するアプリケーションまたはデバイスアプレット（device applet）が、現在、利用可能である。たとえば、現在、ワイヤレスデバイスは、買物、探索、位置特定、運転ナビゲーション、または各種の他の機能などの付加価値機能を実施するために、デバイスアプレットをダウンロードして起動することが可能である。したがって、デバイスアプレットを使用することで、ワイヤレスデバイスの機能性と使用性とが高まり、デバイス自体では本来利用できない特徴と利便性とをデバイスユーザに与えることができる。
【０００３】
ワイヤレスデバイスは、１つまたは複数の通信ネットワークとインターフェース接続することができる。たとえば、ワイヤレスデバイスは、セルラー、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または他のタイプの無線アクセス技術を使用する通信を提供する多様な無線を含むことができる。したがって、ワイヤレスデバイス上で実行するアプリケーションは、通信チャネルを確立するために無線とインターフェース接続し、適切なネットワークと通信するために、チャネルがアプリケーションによって使用され得る。
【０００４】
アプリケーションは、デバイスがアイドルモードにあるときにも、通信チャネルを確立するために、ワイヤレスデバイス上で無線とインターフェース接続することを継続することができる。セルラーインターフェースは、デバイスがアイドル状態にある間、低い電力消費率をもたらし得る一方で、ＷｉＦｉインターフェースは、デバイスが、セルラーインターフェースより低い電力消費率でデータを転送することを可能にする。デバイス上にインストールされるアプリケーションの数が増加するにつれて、セルラーデータネットワークは、通信チャネルのセットアップに関連するネットワークシグナリングによって過負荷になることがある。
【発明の概要】
【０００５】
モバイルデバイス上にインストールされたアプリケーションからのソケットコールをインターセプトするための方法、システムおよびデバイスを説明する。いくつかの実施形態では、第１のワイヤレスインターフェース（たとえば、セルラーインターフェース）はアクティブである。インターセプトされたソケットコールをソケット層にリリースすることを決定すると、第２のワイヤレスインターフェース（たとえば、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）インターフェース）がアクティブ化される。ソケットコールがソケット層にリリースされ、アクティブ化された第２のワイヤレスインターフェースを使用して送信される。ソケットコールを実質的に完了すると、第２のワイヤレスインターフェースは非アクティブ化される。ソケットコールのインターセプトおよび第２のワイヤレスインターフェースのアクティブ化は、モバイルデバイスがアイドルモードにある間に発生する。
【０００６】
一実施形態では、第２のワイヤレスインターフェースをアクティブ化することは、利用可能な第２のワイヤレスネットワークに対してスキャンすることを含むことができる。第２のネットワークは、第１のワイヤレスネットワークと異なってもよい。第１のワイヤレスネットワークは、第１のワイヤレスインターフェースと関連付けられ得る。利用可能な第２のワイヤレスネットワークを検出すると、第２のワイヤレスインターフェースがアクティブ化され得る。
【０００７】
一例では、第２のワイヤレスインターフェースは、トリガイベントを検出すると非アクティブ化され得る。トリガイベントを検出することは、少なくとも１つのソケットコールが実質的に実行されたものと決定することを含むことができる。一構成では、トリガイベントを検出することは、タイマーが実質的に終了したものと決定することを含むことができる。
【０００８】
一実施形態では、第１のワイヤレスインターフェースは、第２のワイヤレスインターフェースがアクティブ化された状態にある期間中、アクティブ化された状態を維持され得る。第１のワイヤレスインターフェースはまた、第２のワイヤレスインターフェースが非アクティブ化された状態にある期間中、アクティブ化された状態を維持され得る。
【０００９】
一構成では、第２のワイヤレスインターフェースがアクティブ化されていると決定することに実質的にもとづいて、第１のワイヤレスインターフェースは非アクティブ化され得る。第２のワイヤレスインターフェースが非アクティブ化されていると決定することに実質的にもとづいて、第１のワイヤレスインターフェースは再アクティブ化され得る。
【００１０】
一例では、第２のワイヤレスインターフェースがアクティブになることに関する通知が、ディセーブルされ得る。たとえば、第１のワイヤレスインターフェースを介して持続的な伝送制御プロトコル（ＴＣＰ）接続を有する１つまたは複数のアプリケーションが、識別され得る。１つまたは複数のアプリケーションは、第２のワイヤレスインターフェースがアクティブになることに関する通知を受信することを防止され得る。１つまたは複数のアプリケーションが通知を受信することを防止することは、第２のワイヤレスインターフェースがアクティブになることに関する通知をインターセプトすることと、その通知を廃棄することとを含むことができる。１つまたは複数のアプリケーションが通知を受信することを防止することはまた、１つまたは複数のアプリケーションから生じ、第２のワイヤレスインターフェースに宛てられたトラフィックを廃棄することを含むことができる。
【００１１】
一実施形態では、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースすることを決定することは、リリーストリガイベントの発生を検出することを含むことができる。リリーストリガイベント（releasing triggering event）は、タイマーの終了、ディスプレイのステータス変化、マイクロフォンのステータス変化、スピーカのステータス変化、モバイルデバイスの全地球測位システム（ＧＰＳ）センサのステータス変化、ユニバーサルシリアルバスポートが使用中であることの表示、オーディオ機器がモバイルデバイスに接続されていることの表示、ビデオ機器がモバイルデバイスに接続されていることの表示、ソケットコールの最大数の受信、またはワイヤレスローカルエリアネットワーク（ＷＬＡＮ）が完成したことの表示のうちの少なくとも１つを含むことができる。
【００１２】
一例では、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースすることを決定することは、少なくとも１つのソケットコールをクリティカルアプリケーションとして発したアプリケーションを識別することを含むことができる。少なくとも１つのインターセプトされたソケットコールをソケット層にリリースすることを決定することはまた、少なくとも１つのインターセプトされたソケットコールが許容度（tolerance）しきい値より下の遅延許容度を持つものと決定することを含むことができる。
【００１３】
一構成では、ラッパー（wrapper）に対する命令が実行され得る。実行されるラッパーは、少なくとも１つのソケットコールのインターセプトを実施することができる。ラッパーは、モバイルデバイスのオペレーティングシステムのアプリケーション層（application layer）とソケット層（socket layer）との間に位置することができる。一実施形態では、ラッパーによって実施される動作は、ソケット層内に埋め込まれ得る。
【００１４】
ワイヤレス通信のために構成されるモバイルデバイスを、同様に説明する。デバイスは、プロセッサと、このプロセッサと電子的に通信しているメモリとを含むことができる。メモリは、オペレーティングシステムを含むことができる。プロセッサは、アプリケーション接続性エンジン（application connectivity engine）を含むことができる。エンジンは、第１のワイヤレスインターフェースがアクティブである間、少なくとも１つのソケットコールがモバイルデバイスにおけるソケット層に到達することをインターセプトするための命令を実行するように構成され得る。エンジンは、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースすることの決定に実質的にもとづいて、第２のワイヤレスインターフェースをアクティブ化するための命令を実行するようにさらに構成され得る。加えて、エンジンは、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースし、アクティブ化された第２のワイヤレスインターフェースを使用して、リリースされたソケットコールを送信するための命令を実行するように構成され得る。
【００１５】
モバイルデバイス上のアプリケーションからのソケットコールを管理するように構成される装置を、同様に説明する。装置は、第１のワイヤレスインターフェースがアクティブである間、少なくとも１つのソケットコールが、モバイルデバイスにおけるソケット層に到達することをインターセプトするための手段を含む。装置は、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースすることを決定することに実質的にもとづいて、第２のワイヤレスインターフェースをアクティブ化するための手段をさらに含むことができる。装置は、アクティブ化された第２のワイヤレスインターフェースを使用して、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースするための手段と、リリースされたソケットコールを送信するための手段とをさらに含むことができる。
【００１６】
モバイルデバイス上のアプリケーションからのソケットコールを管理するように構成されるコンピュータプログラム製品を、同様に説明する。製品は、非一時的コンピュータ可読媒体を含むことができる。媒体は、第１のワイヤレスインターフェースがアクティブである間、少なくとも１つのソケットコールが、モバイルデバイスにおけるソケット層に到達することをインターセプトするためのコードを含むことができる。媒体は、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースすることの決定に実質的にもとづいて、第２のワイヤレスインターフェースをアクティブ化するためのコードをさらに含むことができる。加えて、媒体はまた、アクティブ化された第２のワイヤレスインターフェースを使用して、少なくとも１つのインターセプトされたソケットコールをソケット層にリリースするためのコードと、リリースされソケットコールを送信するためのコードとを含むことができる。
【００１７】
上記は、本開示による例の特徴と技術的側面とをかなり広く概説した。以下で、追加の特徴について説明する。開示する概念および具体例は、本開示の同じ目的を実行するために他の構造を変更または設計するための基礎として容易に利用され得る。そのような等価な構成は、添付の特許請求の範囲の趣旨および範囲から逸脱しない。本明細書で開示する概念の編成と動作の方法の両方に関して、それらの概念を特徴づけると考えられる特徴は、添付の図に関連して以下の説明を検討するとより良く理解されよう。図のそれぞれは、例示および説明のみの目的で提供され、特許請求の範囲の制限を定めるものではない。
【００１８】
以下の図面を参照すれば、本発明の性質のさらなる理解が得られ得る。添付の図において、同様の構成要素または特徴は同じ参照ラベルを有し得る。さらに、同じタイプの様々な構成要素は、ダッシュによる参照ラベルと、それらの同様の構成要素同士を区別する第２のラベルとを見ることによって区別され得る。第１の参照ラベルのみが明細書において使用される場合、その説明は、第２の参照ラベルにかかわらず、同じ第１の参照ラベルを有する同様の構成要素のうちのいずれにも適用可能である。
【図面の簡単な説明】
【００１９】
【図１】ネットワーク環境のブロック図。
【図２】モバイルデバイスのためのアーキテクチャを示すブロック図。
【図３】モバイルデバイスのアーキテクチャの別の例を示す図。
【図４】インターセプトされた要求をリリースすることを決定すると、ワイヤレスインターフェースのアクティブ化を実施するモバイルデバイスのブロック図。
【図５】第１のワイヤレスインターフェースがアクティブである間にネットワークアクセスについての要求をインターセプトすることと、要求をオペレーティングシステムにリリースすることを決定すると、第２のワイヤレスインターフェースをアクティブ化することとに有用なモバイルデバイス上のアーキテクチャのサンプルブロック図。
【図６】ソケットコールの同期リリースと、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）インターフェースのイネーブル化とのタイミング図。
【図７】ネットワークアクセスについての要求をインターセプトして保持し、要求がリリースされるべきときにワイヤレスインターフェースをアクティブ化するための方法の一例を示すフローチャート。
【図８】ネットワークアクセスについての要求をインターセプトし、デバイスがアイドルモードにあるときに第２のワイヤレスインターフェースを確立するための方法の一例を示すフローチャート。
【図９】どのワイヤレスネットワークを通信のために使用するかを決定するための方法の一構成を示すフローチャート。
【図１０】持続的な伝送制御プロトコル（ＴＣＰ）接続を維持するための方法の一構成を示すフローチャート。
【詳細な説明】
【００２０】
第１のワイヤレスインターフェースがアクティブである間に、モバイルデバイス上にインストールされたアプリケーションから出される要求をインターセプトするための方法、システムおよびデバイスを説明する。モバイルデバイス上で実行するオペレーティングシステム（ＯＳ）は、第１のインターフェースを、アクティブであるものとしてアプリケーションに提供することができる。アクティブなインターフェースは、無線接続が第１のネットワーク上で確立されるために利用可能であることを、アプリケーションに示すことができる。
【００２１】
インターセプトされる要求は、モバイルデバイスに対する通信チャネルを確立するためのシステムコールまたはソケットコールであってよい。「要求」、「システムコール」および「ソケットコール」という用語は、本明細書では互換的に使用されることがある。要求は、キャプチャされ、モバイルデバイス上で実行しているＯＳに到達することを阻止され得る。たとえば、要求は、ＯＳの伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）スタックに到達することを阻止され得る。
【００２２】
スマートフォン、携帯情報端末などのモバイルデバイスでは、ユーザがデバイスをアクティブに使用していない（たとえば、デバイスがアイドルモードにある）にもかかわらず、ソフトウェアアプリケーションは動作を継続することができる。モバイルデバイスは、デバイスのいくつかの入力が動作可能でないかまたはスリープ状態にあるときに、アイドルモードにあることができる。デバイスは、ユーザがデバイスを使用していないときに、バックグラウンドモード（すなわち、アイドルモード）にあるものと見なされ得る。たとえば、オーディオ入力（マイクロフォンなど）がオフのとき、デバイスはアイドルモードにあることがある。加えて、視覚的入力（デバイスのディスプレイなど）がオフのとき、デバイスはアイドルモードにあるものと決定され得る。以下で説明するように、モバイルデバイスがアイドルモードにあるか否かを決定するために、追加の入力が使用され得る。
【００２３】
ソーシャルネットワーキングアプリケーション、電子メールまたは他の通信アプリケーション、データフィードなどのアプリケーション（普及している例には、フェイスブック（登録商標）、Ｇメール（登録商標）、ツイッター（登録商標）などが含まれる）は、ユーザがデバイスを使用していないにもかかわらず、データを送信および受信することを継続することができる。動作の非アクティビティモード（たとえば、アイドルモード）の下でさえ、アクティビティにおける電力消費およびスパイクが、デバイスが表面上は使用されていない場合でも、動作を継続しているアプリケーションによって発生することがある。これらのアプリケーションによるアクティビティは、外部ネットワークによって提供されるような通信リソースを利用することができる。このことは、外部ネットワーク上のシグナリングの望ましくない増加を生じ、そのことがネットワークの性能に悪影響を及ぼすことがある。
【００２４】
モバイルデバイス上にインストールされている最近のオペレーティングシステムは、「常時接続（always-on）」セルラー無線インターフェースを有するアプリケーションを提供することができる。「常時接続」インターフェースは、デバイスがアイドルモードにある場合でも、任意のときにセルラーデータネットワーク上に、アプリケーションが無線接続（たとえば、通信チャネル）の確立を要求し得ることを、アプリケーションに提示することができる。「常時接続」インターフェースは、モバイルデバイスが、デバイス上で実行しているアプリケーションのセットによって非同期的にトリガされる頻繁な無線接続によってセルラーデータネットワークを過負荷にさせるということを、引き起こす可能性がある。
【００２５】
デバイスがアイドルモードにある間、ユーザは、様々なアプリケーションデータの更新における遅延を許容することができる。したがって、様々なアプリケーションからのソケットコールは、ＯＳまたはＯＳ内のソケット層に到達することをインターセプトされ、阻止され得る。次いで、ソケットコールは、同期方式でＯＳ（またはＯＳ内のソケット層）にリリースされ得る。ソケットコールを同期式にリリースすることで、いくつかのアプリケーションがそれらの情報を同期して更新し得るので、無線接続の改善された利用を可能にすることができる。
【００２６】
本システムおよび方法によって対処される相補的手法は、アプリケーションのためのデータ更新を移送するために、データをモバイルデバイスに送信し／モバイルデバイスからから受信するために、セルラー無線ではなくワイヤレスローカルエリアネットワーク（ＷＬＡＮ）を使用することを含むことができる。いくつかの例では、アプリケーションは、ＯＳによって提供されるセルラーインターフェースを介してセルラーネットワーク上でデータを送信／受信する。本システムおよび方法によれば、デバイスがアイドルモードにある間、アプリケーションは代わりに、ＷＬＡＮインターフェース上でＷＬＡＮにわたるデータを送信／受信することができる。ＷＬＡＮインターフェースは、モバイルデバイス上のＯＳによってアプリケーションに対してアクティブ化され提供され得る。
【００２７】
いくつかの実施形態では、デバイスがアイドルモードにある間にモバイルデバイス上にインストールされているいくつかのアプリケーションがセルラーネットワークへのアクセスを要求する場合、不必要な量のネットワークシグナリングが発生することがある。たとえば、ＯＳは、セルラーインターフェースを「常時接続」インターフェースとして提供することがある。第１のアプリケーションが、アクティブ化されたセルラーインターフェースを見て、セルラーネットワーク上に通信チャネルの確立を必要とするソケットコールを開始することがある。データが送信／受信された後、チャネルは中断され得る。第２のアプリケーションもまた、「常時接続」セルラーインターフェースを見て、同様に、通信チャネルを確立してセルラーネットワーク上でデータを送信／受信するために、ソケットコールを開始することがある。通信チャネルが確立されるたびに、ネットワークシグナリングの量が増加し、それによりネットワークの利用可能帯域幅が減少することがある。その結果、本システムおよび方法は、デバイスがアイドルモードにあるとき、セルラーネットワークへのアクセスについての要求をインターセプトすることができる。インターセプトされたＯＳへの要求をリリースすることが決定されると、ＷＬＡＮインターフェースがアクティブ化され得る。要求は、（セルラーインターフェースではなく）ＷＬＡＮインターフェース上で送信され得る。要求が実質的に実行されると、ＷＬＡＮインターフェースは、デバイスのバッテリー電力を温存するために非アクティブ化され得る。
【００２８】
以下の説明は、例を与えるものであり、特許請求の範囲において記載される範囲、適用性、または構成を限定するものではない。本開示の趣旨および範囲から逸脱することなく、説明される要素の機能および構成において変更が行われ得る。様々な実施形態は、適宜、様々な手順または構成要素を省略、代用、または追加し得る。たとえば、説明される方法は、説明される順序と異なる順序で実行され得、様々なステップが追加、省略、または組み合わせられ得る。また、いくつかの実施形態に関して説明される特徴は、他の実施形態において組み合わせられ得る。
【００２９】
次に図１を参照すると、ブロック図が、ワイヤレスネットワーク環境１００の例を示す。ネットワーク環境１００は、モバイルデバイス１０５と通信ネットワーク１１５とを含むことができる。デバイス１０５は、いくつかの無線チャネル１１０−ａを使用してネットワーク１１５と通信することができる。たとえば、制御チャネル１１０−ａ−１が、デバイス１０５とネットワーク１１５との間に確立され得る。加えて、他のタイプのチャネル１１０−ａ−２〜１１０−ａ−ｎもまた確立され得る。これらの他のタイプのチャネルは、データチャネル、音声チャネルなどを含むことができる。
【００３０】
動作中に、デバイス１０５は、いくつかの無線のいずれかを使用してネットワーク１１５とインターフェースし得るアプリケーションを実行することができる。たとえば、アプリケーションは、ネットワーク１１５の中のホストとの通信を確立するための要求を出すことができる。一例では、要求は、ソケット層コールなどのネットワーキングシステムコールであってよい。要求は、デバイス１０５上のＯＳのソケット層を対象とすることができる。従来のデバイスは、一般的には、これらのタイプの要求がＯＳに直接進んで処理されることを可能にする。要求を受信すると、従来のデバイスは、データ接続セットアッププロシージャによって制御チャネル１１０−ａ−１を確立するために、ネットワークシグナリング処理を開始する。データ接続セットアッププロシージャがモバイルデバイス１０５上で実行されると、ネットワーク上のシグナリングのレベルが増加してバッテリー電力が消費されることがある。このことが、ネットワーク１１５およびモバイルデバイス１０５の効率を低下させることがある。
【００３１】
一構成では、デバイス１０５は、第１のワイヤレスインターフェースがアクティブである間、要求がＯＳに到達することをインターセプトしてキャプチャするためのアーキテクチャを含むことができる。このアーキテクチャは、セルラーネットワークアクセスについての要求など、アプリケーションからのネットワークアクセスについての要求をインターセプトすることができる。要求をインターセプトすると、アーキテクチャは、要求がＯＳのＴＣＰ／ＩＰスタックに到達することを阻止するかまたは遅延させることができる。ＴＣＰ／ＩＰスタックは、ＯＳに組み込まれ得、ネットワーク上でデータを送信するための規格をＯＳに与える通信プロトコルを含むことができる。要求をＯＳにリリースすることの決定に実質的にもとづいて、アーキテクチャは、第２のワイヤレスインターフェースをアクティブ化することができる。インターセプトされた要求は、他のインターセプトされた、追加のアプリケーションから受信したネットワークアクセスについての要求とアグリゲートされ得る。アグリゲートされた要求は、一緒に束ねられ、同期方式でＯＳ内のソケット層にリリースされ得る。一実施形態では、アグリゲートされた要求は、同期方式でＯＳにリリースされ得る。次に、要求は、第２のワイヤレスインターフェースを使用して送信され得る。一例では、要求は、特定のイベントが発生する（たとえば、モバイルデバイスがアクティブになる）とリリースされ得る。一構成では、インターセプト、決定、アクティブ化、およびリリースに関して上記で説明したアーキテクチャは、デバイス１０５がアイドルモードにあるときに使用され得る。
【００３２】
図２は、モバイルデバイス１０５−ａの一例２００を示す。モバイルデバイス１０５−ａは、図１のモバイルデバイス１０５の一例であってよい。一構成では、デバイス１０５−ａは、インターセプトモジュール２０５と、アクティブ化モジュール２１０と、リリースモジュール２１５と、ＯＳ  ２２０とを含むことができる。インターセプトモジュール２０５は、アプリケーションからの要求がＯＳ  ２２０に到達することをインターセプトすることができる。要求は、第１のワイヤレスインターフェースがアクティブ化され、デバイス１０５−ａがアイドルモードにある間にインターセプトされ得る。要求は、ソケットコールなどのシステムアクセスコールを含むことができる。インターセプトされ得るソケットコールの例は、ｃｏｎｎｅｃｔ（）、ｓｅｎｄ（）、ｓｅｎｄｔｏ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）などを含む。ｃｏｎｎｅｃｔ（）ソケットコールは、ＴＣＰ接続など、ネットワーク上に通信チャネルを確立するために、モバイルデバイス１０５−ａによる試行を開始することができる。
【００３３】
一例では、アクティブ化モジュール２１０は、インターセプトされた要求がＯＳ  ２２０にまたはＯＳ  ２２０内のソケット層に、いつリリースされるべきかを決定することができる。要求をリリースすることを決定することに実質的にもとづいて、アクティブ化モジュール２１０は、第２のワイヤレスインターフェースをアクティブ化することができる。たとえば、アクティブ化モジュール２１０は、ＷＬＡＮインターフェースをアクティブ化することができる。リリースモジュール２１５は、ＷＬＡＮインターフェースがアクティブ化されたときに要求をリリースすることができる。
【００３４】
要求をリリースすることの決定は、１つまたは複数のファクタに基づくことができる。一実施形態では、インターセプトされた要求をリリースすることの決定は、要求がＯＳ  ２２０に到達してから、またはＯＳ  ２２０内のソケット層に到達してから保持または遅延されていた時間の長さを表すタイマーの終了を検出することを含むことができる。要求はまた、キュー（queue）内に保持されているインターセプトされた要求の最大数を検出するとリリースされ得る。一構成では、要求は、クリティカルアプリケーションがＯＳ  ２２０への要求を出したことを検出するとリリースされ得る。クリティカルアプリケーションは、遅延許容度がほとんどまたはまったくないアプリケーションであってよい。その結果、これらのアプリケーションから生じる要求は、低い遅延許容度を持つことがある。クリティカルアプリケーションの例には、限定はしないが、自動追尾アプリケーション、緊急ベースのアプリケーション、申し込みベースのアプリケーションなどが含まれることがある。一構成では、クリティカルアプリケーションから送られた要求は、インターセプトモジュール２０５によってインターセプトされた後、ＯＳ  ２２０に到達することを阻止（または遅延）されるのではなく、オペレーティングシステムのソケット層に直接進むことができる。加えて、一定のしきい値より下の遅延許容度を有する要求は、インターセプトされた後、ＯＳ  ２２０に到達することを遅延されないことがある。たとえば、クリティカルでないアプリケーションは、インターセプトされる要求を出すことができる。アプリケーションがクリティカルでないとしても、特定の要求は、遅延許容度を持たないことがある（たとえば、アプリケーションへのクリティカルな更新）。その結果、要求は、インターセプトされた後、直ちにＯＳ  ２２０にリリースされ得る。
【００３５】
追加のファクタが、インターセプトされた要求を、いつリリースしてネットワークへのアプリケーション接続性を許可するかを決定するために使用され得る。たとえば、（遅延され得ない緊急のアプリケーションなど、クリティカルアプリケーションからシステムコールを受信するなど）データ接続セットアッププロシージャを確立するためのトリガが存在する場合、インターセプトされた要求はＯＳ  ２２０にリリースされ、それにより通信チャネルが緊急のアプリケーションに関連して確立され得る。別の例では、インターセプトされた要求は、ＯＳ  ２２０内のソケット層にリリースされ得る。要求はまた、無線チャネルの品質がしきい値（たとえば、高い信号強度、ＳＮＲ、または他の望ましいパフォーマンスメトリック）を満足する場合にリリースされ得る。要求は、あらかじめ決定されたように、またはモバイルデバイス１０５−ａによって選択的に決定されたように、周期的にリリースされてよい。要求をリリースすることを決定するための別のヒューリスティック（heuristic）は、ユーザが、（彼／彼女がスクリーンをオンにする前に）デバイスを匿名で動作させるために、デバイスに接近するときであってよい。この例では、加速度計が、ユーザがデバイス１０５−ａを把持することを検出するか、またはユーザ近接センサが、ユーザが接近していることを示すことができる。別の態様では、バッテリーで動作している間、要求は、（たとえば、ＰＩＮが正しく入力された後）スクリーンがアンロックされているときに、リリースされることを決定され得る。この態様では、要求は、（たとえば、デバイス１０５−ａが財布またはポケットの中にあって）ランダムにボタンが押されるときはリリースされ得ない。
【００３６】
一例では、デバイス１０５−ａのディスプレイのステータス変化が、保持された要求をリリースすることの決定における一ファクタとなり得る。たとえば、ディスプレイは、「オフ」状態から「オン」状態に変化することができる。マイクロフォンのステータス変化（オフからオンへ）もまた、インターセプトされた要求をリリースすることの決定における一ファクタとなり得る。さらに、別のファクタは、全地球測位システム（ＧＰＳ）センサのステータス変化を検出することを含むことができる。たとえば、センサは、モバイルデバイス１０５−ａの運動を検出したときに状態を変更することができる。インターセプトされた要求をいつリリースするかを決定するために使用される追加のファクタには、ユニバーサルシリアルバスポートが使用中であることの表示、またはオーディオ機器がデバイス１０５−ａに接続されていることの表示が含まれ得る。加えて、ビデオ機器がモバイルデバイス１０５−ａに接続されていることの表示もまた、モバイルデバイス１０５−ａのＯＳ  ２２０に要求をリリースすることを決定するファクタとして働くことができる。さらに、一定のネットワークへの接続が利用可能であることの表示が、要求のリリースをトリガすることができる。たとえば、接続がＷｉ−Ｆｉタイプのネットワークに対するものであることの表示が、要求をリリースさせ得る。同様に、セルラーネットワークへの無線接続がすでにオープンであることの表示もまた、デバイス１０５−ａのＯＳ  ２２０への要求のリリースをトリガすることができる。さらに別の態様では、要求は、上記または他のファクタの何らかの組合せに従ってリリースされてよい。上記の説明は、アプリケーションプログラミングインターフェース（ＡＰＩ）アーキテクチャに関するが、その概念は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの任意の組合せに等しく適用することができる。
【００３７】
図３は、図１または図２のモバイルデバイス１０５の一例であり得る、モバイルデバイス１０５−ｂのアーキテクチャ３００の一例を示す。デバイス１０５−ｂのアーキテクチャ３００は、アプリケーション接続性エンジン３１０を含むことができる。接続性エンジン３１０は、デバイス１０５−ｂ上のアプリケーション層３０５内で実行しているアプリケーションが図１のネットワーク１１５などのネットワークに、いつアクセスできるかを管理することができる。アプリケーション層３０５は、様々な機能を提供し、無線ユニット３２５の無線３３０−ａのうちの１つまたは複数を使用して、ネットワーク１１５などの外部ネットワークと通信することを実行するアプリケーションを含むことができる。
【００３８】
本明細書で開示する技法と構造とを使用して、モバイルデバイス１０５−ｂは、アプリケーションからシステムコールまたはソケットコールをキャプチャし、それらがＯＳ  ２２０−ａに到達することを阻止するために、アプリケーションプログラムインターフェース（ＡＰＩ）を提供するソフトウェア層（説明のためにラッパー３１５と呼ぶ）を使用することができる。一構成では、アプリケーション接続性エンジン３１０は、ラッパー３１５を実行することができる。一例では、ラッパー３１５は、アプリケーション層３０５内のアプリケーションから生じるネットワークアクセスについての要求（たとえば、システムコール、ソケットコールなど）をインターセプトすることができる。一実施形態では、ラッパー３１５は、図２のインターセプトモジュール２０５を含むことができる。ラッパー３１５は、要求がデバイス１０５−ｂ上で実行しているＯＳ  ２２０−ａに到達することを遅延させることができる。ＯＳ  ２２０−ａは、アクティブ化された第１のワイヤレスインターフェースをアプリケーションに提供することができる。ラッパー３１５は、インターセプトされた要求をキュー内に保持し、それらがＯＳ  ２２０−ａに到達することを防止することができる。ラッパー３１５は、インターセプトされた要求を、追加のアプリケーションからインターセプトされた他の要求とアグリゲートすることができる。ラッパー３１５は、要求がオペレーティングシステム２２０−ａのソケット層３２０に到達することを阻止するかまたは遅延させることができる。ネットワークアクセスについての要求がソケット層３２０に到達すると、無線３３０−ａのうちの１つまたは複数を使用して通信チャネルを確立するための処理が、インターフェースによって開始され得る。たとえば、第１のワイヤレスインターフェースは、セルラーインターフェースであってよい。セルラーインターフェースがアクティブであるときにソケットコールがリリースされると、セットアッププロシージャが、セルラーネットワークとの無線接続を確立するために開始され得る。セットアッププロシージャは、セルラーネットワークの利用可能な帯域幅を低減するシグナリング技法を含むことができる。
【００３９】
ソケット層３２０は、要求を処理し、要求を開始したアプリケーションとネットワーク１１５との間の接続を確立するために、接続セットアッププロシージャを開始することを特定の無線に通知することができる。たとえば、ソケット層３２０は、特定のアプリケーションと無線、たとえば無線１  ３３０−ａ−１との間のバインディングを確立するために、コール（または要求）を出すことができる。無線１  ３３０−ａ−１は、制御チャネルを確立することによって接続セットアッププロシージャを開始するために、ネットワーク１１５に信号を送信することを開始することができ、そのことは、図１の制御チャネル１１０−ａ−１の一例であり得る。
【００４０】
要求がソケット層３２０にリリースされることを実質的に決定されると、ＯＳ  ２２０−ａは、（要求がリリースされる前に）第２のワイヤレスインターフェースをアクティブ化することができる。たとえば、ＯＳ  ２２０−ａは、第２のワイヤレスインターフェースをアクティブ化するために図２のアクティブ化モジュール２１０を含むか、またはそのモジュール２１０に第２のワイヤレスインターフェースをアクティブ化させることができる。ラッパー３１５は、図２のリリースモジュール２１５を含み得、第２のワイヤレスインターフェースがアクティブであることを通知されると、ラッパー３１５は、インターセプトされた要求をＯＳ  ２２０−ａのソケット層３２０にリリースすることができる。データは、第２のワイヤレスインターフェースを介して第２のワイヤレスネットワークを使用してアプリケーションへ／から送信され得る。第２のワイヤレスネットワークの一例は、ＷＬＡＮを含むことができる。
【００４１】
したがって、デバイスアーキテクチャ３００は、第１のワイヤレスインターフェースがアクティブである間にネットワークにアクセスするための要求をインターセプトすることと、要求をＯＳ  ２２０−ａにリリースすることを決定すると第２のワイヤレスインターフェースをアクティブ化することと、要求をＯＳ  ２２０−ａにリリースすることとを提供する。第２のワイヤレスインターフェースのアクティブ化は、セルラーインターフェース上の要求のリリースを伴う、セルラーネットワーク上のネットワークシグナリングを低減することを助けることができる。
【００４２】
図４は、インターセプトされた要求をリリースすることを決定すると、第２のワイヤレスインターフェースのアクティブ化を実施するモバイルデバイス１０５−ｃのブロック図４００を示す。デバイス１０５−ｃは、図１、図２または図３デバイス１０５の一例であってよい。デバイス１０５−ｃは、通信バス４１５を使用して通信するためにすべて結合されたメモリ４０５と、プロセッサ４１０と、アプリケーション層３０５と、ラッパー３１５と、アプリケーション接続性エンジン３１０と、ＯＳ  ２２０−ｂと、無線ユニット３２５とを含むことができる。メモリ４０５は、アプリケーション層３０５と、ラッパー３１５と、オペレーティングシステム２２０−ｂとを記憶することができる。プロセッサ４１０は、アプリケーション接続性エンジン３１０を含むことができる。接続性エンジン３１０は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理回路、個別ハードウェア構成要素、または本明細書で説明する機能を実施するように設計されたそれらの任意の組合せとして実装され得る。接続性エンジン３１０は、第１のワイヤレスインターフェースがアクティブである間にモバイルデバイス上のアプリケーションからのソケットコールをインターセプトするための手段と、ソケットコールがモバイルデバイス上のＯＳ  ２２０−ｂ内のソケット層に到達することを阻止するための手段と、ソケットコールをリリースすることを実質的に決定すると第２のワイヤレスインターフェースをアクティブ化するための手段と、ＯＳ  ２２０−ｂ内のソケット層に要求をリリースするための手段とを含むことができる。さらに、接続性エンジン３１０は、ソケットコールを、他のインターセプトされた、モバイルデバイス１０５上にインストールされた追加のアプリケーションからのソケットコールとアグリゲートし、アグリゲートされたソケットコールをＯＳ  ２２０−ｂ内のソケット層に同期方式でリリースするための手段を含むことができる。接続性エンジン３１０はまた、図３または図４のラッパー３１５を実行するための手段を含むことができる。実行されたラッパーは、アプリケーションからの要求をインターセプトすることができる。加えて、エンジン３１０は、アプリケーションを、ソケットコールが出されるアプリケーションのクラスとして識別するための手段を含むことができる。さらに、接続性エンジン３１０は、アプリケーションをクリティカルアプリケーションまたはクリティカルでないアプリケーションとして識別するための手段と、第２のワイヤレスインターフェースがアクティブ化されるまでクリティカルでないアプリケーションからのソケットコールを遅延させるための手段とを含むことができる。デバイス１０５−ｃは、単なる１つの実装形態にすぎず、他の実装形態が可能であることに留意されたい。
【００４３】
一態様では、プロセッサ４１０は、中央処理装置（ＣＰＵ）、プロセッサ、ゲートアレイ、ハードウェア論理回路、メモリ要素、および／またはソフトウェアを実行するハードウェアのうちの少なくとも１つを含む。プロセッサ４１０は、デバイス１０５−ｃの動作を制御するように動作し、それにより、アプリケーション層３０５で実行しているアプリケーションによって開始されたネットワークアクセスについてのシステムコールが、第２のワイヤレスインターフェースがアクティブ化されるまでＯＳ  ２２０−ｂに到達することを阻止され得、次いでＯＳ  ２２０−ｂにリリースされるかまたはＯＳ  ２２０−ｂ内のソケット層にリリースされ得る。一実装形態では、プロセッサ４１０は、いくつかの機能のうちのいずれかを実施することに関連するコンピュータ可読命令を実行することができる。たとえば、プロセッサ４１０は、要求のインターセプトと第２のワイヤレスインターフェースのアクティブ化とを実現するために、デバイス１０５−ｃから受信または伝達された情報を分析するように動作することができる。別の態様では、プロセッサ４１０は、インターセプトされた要求をＯＳ  ２２０−ｂにリリースすることを決定すると、第２のワイヤレスインターフェースのアクティブ化を実現するために、メモリ４０５、無線ユニット３２５、アプリケーション層３０５、ラッパー３１５、ＯＳ  ２２０−ｂ、および／またはアプリケーション接続性エンジン３１０によって利用され得る情報を生成するように動作することができる。
【００４４】
無線ユニット３２５は、デバイス１０５−ｃを、いくつかのチャネル１１０−ａを使用する外部通信ネットワークなど、いくつかの外部エンティティとインターフェース接続するために使用され得る、いくつかの無線／インターフェースを提供し得る、ソフトウェアを実行するハードウェアおよび／またはプロセッサを含むことができる。たとえば、無線ユニット３２５は、セルラー、ＷＬＡＮ、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、またはチャネル１１０−ａを使用して通信ネットワークと通信する任意の他の技術を使用して通信するための無線／インターフェースを提供することができる。
【００４５】
アプリケーション層３０５は、デバイス１０５−ｃ上の１つまたは複数のアプリケーションを記憶および／または実行し得るソフトウェアを実行するハードウェアおよび／またはプロセッサを含むことができる。一実装形態では、アプリケーション層３０５は、アプリケーションが、外部ネットワークまたはシステムと通信するために無線／インターフェースとの接続を要求することなど、ネットワークサービスを要求するためにネットワーキング機能コールを開始することを可能にさせ得る。
【００４６】
ＯＳ  ２２０−ｂは、ソケット層を含むことができる。ソケット層は、ソケット層機能を実施し得るソフトウェアを実行するハードウェアおよび／またはプロセッサを含むことができる。一実装形態では、ソケット層機能は、ｃｏｎｎｅｃｔ（）、ｂｉｎｄ（）、およびｓｅｔｓｏｃｋｏｐｔ（）のような機能を含むことができる。ｃｏｎｎｅｃｔ（）機能は、特定の無線／インターフェースを使用して２つのホスト間の接続を確立するように動作する。たとえば、特定の無線／インターフェースは、無線ユニット３２５によって提供されるいくつかの候補無線から選択され得る。一態様では、ソケット層は、多様なソケット層機能またはコマンドを実施することができる。ＯＳ  ２２０−ｂはまた、ワイヤレスインターフェース４２０−ａ〜４２０−ｎのうちのいくつかを含むことができる。前に説明したように、ＯＳ  ２２０−ｂは、様々なインターフェースをアクティブ化／非アクティブ化することができる。データは、アクティブ化されたワイヤレスインターフェースのうちの少なくとも１つを使用して、デバイス１０５−ｃから送信され／デバイス１０５−ｃによって受信され得る。ワイヤレスインターフェースの例は、セルラーインターフェース、ＷＬＡＮインターフェースなどを含むことができる。
【００４７】
アプリケーション接続性エンジン３１０は、モバイルデバイス１０５−ｃ上で実行しているアプリケーションからの、ネットワークアクセスについての要求をラッパーにインターセプトさせるように、ラッパー３１５を実行し得るソフトウェアを実行するハードウェアおよび／またはプロセッサを含むことができる。ラッパー３１５はまた、インターセプトされた要求がＯＳ  ２２０−ｂに到達することを遅延させることができる。ＯＳ  ２２０−ｂはＷＬＡＮインターフェースなど、第２のワイヤレスインターフェースをアクティブ化することができ、ラッパー３１５は、保持された要求をＯＳ  ２２０−ｂにリリースすることができる。
【００４８】
接続性エンジン３１０は、ラッパー３１５に、ネットワークアクセスについての要求を様々な方法でキャプチャおよび保持させることができる。エンジン３１０はまた、ＯＳ  ２２０−ｂに、要求をリリースすることを決定すると、第２のワイヤレスインターフェースをアクティブ化させることができる。一例では、エンジン３１０は、図２のアクティブ化モジュール２１０に、ＷＬＡＮなど、利用可能なワイヤレスネットワークに対するスキャンを実施させることができる。利用可能なＷＬＡＮを検出すると、アクティブ化モジュール２１０は、ＷＬＡＮとの無線接続を確立することができる。接続が確立されると、ＯＳ  ２２０−ｂは、ＷＬＡＮインターフェースをアクティブ化して、アプリケーションに提供することができる。インターセプトされた要求が、ＯＳ  ２２０−ｂにリリースされ得る。要求は、ＯＳ  ２２０−ｂのソケット層にリリースされ得る。ソケット層は、要求を発したアプリケーションと、サーバなど、ＷＬＡＮインターフェースを使用するリモートデバイスとの間で確立された無線接続を介して通信を実施するためのプロシージャを開始することができる。
【００４９】
メモリ４０５は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、またはデバイス１０５−ｃにおいて情報を記憶および検索することを可能にするように動作する任意の他のタイプのメモリデバイスを含むことができる。一実装形態では、メモリ４０５は、プロセッサ４１０によって実行されるコンピュータ可読命令を記憶することができる。メモリ４０５はまた、プロセッサ４１０、無線ユニット３２５、アプリケーション層３０５、ラッパー３１５、ＯＳ  ２２０−ｂ、および／またはアプリケーション接続性エンジン３１０のいずれかによって生成されるデータを含むいくつかの他のタイプのデータのいずれかを記憶することができる。メモリ４０５は、ランダムアクセスメモリ、バッテリバックアップメモリ、ハードディスク、磁気テープなどとして含む、いくつかの異なる構成を含むことができる。圧縮および自動バックアップなど、様々な特徴もまた、メモリ４０５上に実装され得る。
【００５０】
様々な実装形態では、デバイス１０５−ｃは、非一時的コンピュータ可読媒体上に記憶または一体化された、１つまたは複数のプログラム命令（「命令」）、または「コード」のセットを有するコンピュータプログラム製品を含むことができる。少なくとも１つのプロセッサ、たとえばプロセッサ３６０および／またはアプリケーション接続性エンジン３１０によってコードが実行されると、それらの実行によって、プロセッサ４１０および／または接続性エンジン３１０に、本明細書で説明するアクティブ化アーキテクチャの機能をもたらすようにデバイス１０５−ｃを制御させることができる。たとえば、非一時的コンピュータ可読媒体は、フロッピー（登録商標）ディスク、ＣＤＲＯＭ、メモリカード、ＦＬＡＳＨメモリデバイス、ＲＡＭ、ＲＯＭ、またはデバイス１０５−ｃとインターフェース接続する任意の他のタイプのメモリデバイスもしくはコンピュータ可読媒体であってよい。別の態様では、コードのセットが、外部デバイスまたは通信ネットワークリソースからデバイス１０５−ｃにダウンロードされ得る。コードのセットは、実行されると、本明細書で説明するシステムコールのインターセプトおよびワイヤレスインターフェースのアクティブ化アーキテクチャの態様をもたらすように動作する。
【００５１】
図５は、上記で説明したように、第１のワイヤレスインターフェースがアクティブである間にネットワークアクセスについての要求をインターセプトするため、および要求をＯＳ  ２２０にリリースすることを決定すると、第２のワイヤレスインターフェースをアクティブ化するために有用な、モバイルデバイス１０５−ｄ上のアーキテクチャ５００の例示的なブロック図を示す。モバイルデバイス１０５−ｄは、図１、図２、図３または図４のモバイルデバイス１０５の一例であってよい。
【００５２】
図示のように、ブロックは、アプリケーションプロセッサ５９０とモデムプロセッサ５９５との間で分割されているが、様々な機能は、図５の例とは異なって編成されてよい。アプリケーション層３０５は、アプリケーション接続エンジン（Ａｐｐ  ＣｎＥ）３１０およびソケット層３２０と対話することができる。アプリケーション接続エンジン３１０は、モデム接続エンジン（Ｍｏｄｅｍ  ＣｎＥ）５８５と通信することができる。モデム接続エンジン５８５は、無線ユニット３２５およびその中の無線３３０−ａのうちのいくつかなどの通信リソースを管理することができる。ラッパー３１５は、アプリケーションプロセッサ５９０の中で、アプリケーション層３０５とＯＳ  ２２０のソケット層３２０との間で実行され得る。ラッパー３１５は、アプリケーション層３０５とソケット層３２０との間で送られるデータをキャプチャすることができる。たとえば、ラッパー３１５は、アプリケーション層３０５からソケット層３２０宛てに送られたソケットコールをインターセプトするために、アプリケーション層３０５とソケット層３２０との間に設置されてよい。一構成では、ラッパー３１５は、セルラーインターフェースなどの第１のワイヤレスインターフェースがアクティブである間、デバイス１０５−ｄによって非アクティビティ期間（period of inactivity）中にアプリケーション層３０５からのソケットコールをインターセプトすることができる。ラッパー３１５は、ソケットコールをソケット層３２０にリリースする決定がなされるまで、インターセプトされたコールを保持することができる。コールをリリースすることを決定すると、ＷＬＡＮインターフェースなど、第２のワイヤレスインターフェースがアクティブ化され得る。ソケットコールは、無線ユニット３２５内の無線３３０を使用して通信チャネルを確立するための要求をトリガすることができる。
【００５３】
別の例では、ラッパー３１５は、セルラーインターフェースがアクティブである間、デバイス１０５−ｄによって非アクティビティ期間中にアプリケーション層３０５からインターセプトされたシステムコールをアグリゲートすることができる。ラッパー３１５は、インターセプトされ、アグリゲートされたコールをＷＬＡＮインターフェースがアクティブ化されるまで保持することができる。次いで、ラッパー３１５は、コールをソケット層３２０にリリースすることができる。データは、無線ユニット３２５によって確立されたＷＬＡＮ上の無線接続を使用して、デバイス１０５−ｄから送信され／デバイス１０５−ｄによって受信され得る。
【００５４】
一構成では、ラッパー３１５は、アプリケーション層３０５におけるアプリケーションに対して不可視であってよく、それにより、アプリケーションは、それらの要求がソケット層３２０に到達することを阻止されていることに気づかない。ラッパー３１５は、個別のソフトウェア構成要素であってよく、またはアプリケーション接続性エンジン３１０もしくはＯＳ  ２２０など、別の構成要素内に組み込まれてもよい。
【００５５】
図６は、ソケットコールの同期リリースおよびＷＬＡＮインターフェースのイネーブル化のタイミング図６００を示す。アプリケーションは、モバイルデバイス１０５のアプリケーション層３０５内に位置することができる。タイミング図６００は、図３、図４または図５のアプリケーション接続性エンジン３１０の実施の結果である。一構成では、いくつかのソケットコール６０５−ａが、いくつかのアプリケーションから出されることがある。ソケットコール６０５−ａは、第１のワイヤレスインターフェースがアクティブである間、時間ｔ0からキャプチャされ、遅延され得る。インターフェースは、セルラーインターフェースであってよい。ソケットコール６０５−ａは、ｃｏｎｎｅｃｔ（）ソケットコールであってよい。一実施形態では、ソケットコール６０５−ａは、モバイルデバイス上で実行しているＯＳ  ２２０に到達することを阻止されることがある。たとえば、ソケットコールは、ＯＳ  ２２０のＴＣＰ／ＩＰスタックに到達することを阻止されることがある。ソケットコール６０５−ａは、キュー内で保持されてよい。
【００５６】
一例では、時間ｔ1の前に、保持されたソケットコールがリリースされるという決定がなされ得る。時間ｔ1において、第２のワイヤレスインターフェースがイネーブルされ得る。第２のインターフェースは、ＷＬＡＮインターフェースであってよい。インターフェースは、ソケットコール６０５−ａをリリースすることを実質的に決定するとアクティブ化され得る。時間ｔ2において、ソケットコール６０５−ａはＯＳ  ２２０にリリースされ得るか、またはコール６０５−ａはＯＳ  ２２０内のソケット層にリリースされ得る。その結果、モバイルデバイス１０５は、ソケットコール動作を、セルラーインターフェースではなくＷＬＡＮインターフェース上で実施することができる。一例では、時間ｔ3において、第２のワイヤレスインターフェースが非アクティブ化され得る。その結果、ＷＬＡＮネットワークを有する無線接続が終了され得る。アクティブ化されたＷＬＡＮインターフェースを有し、アイドルモードにおける、図１、図２、図３、図４または図５のデバイス１０５などのモバイルデバイスは、アクティブ化されたセルラーインターフェースを有するアイドルデバイスより多くの電力を消費する。たとえば、ページングサイクルは、ＷＬＡＮインターフェースに対して約１００ｍｓであり、セルラーインターフェース上では約２．５秒である。しかしながら、データ伝送は、一般的には、セルラーインターフェース上よりＷＬＡＮインターフェース上において電力効率が高い。たとえば、ＷＬＡＮインターフェースは、大部分のタイプのコンテンツを転送するために使用されるセルラーインターフェースよりはるかに少ない電力を使用することができる。したがって、本システムおよび方法によれば、ＷＬＡＮインターフェースがデータのリリースを遂行するために起動され、次いで、デバイスのバッテリー電力を温存するためにオフラインにされてよい。ＷＬＡＮインターフェースは、ＴＣＰ接続が実質的に閉じられたときかまたは接続タイマーが終了したときにディセーブルされ得る。一実施形態では、セルラーインターフェースは、上記で説明したステップ全体を通して、アプリケーションに対して利用可能であるように見え続けることがある。
【００５７】
図７は、ネットワークアクセスについての要求をインターセプトして保持し、要求がリリースされるときにワイヤレスインターフェースをアクティブ化するための方法７００の一例を示すフローチャートである。明快のために、図１、図２、図３、図４および図５に示すモバイルデバイス１０５を参照しながら方法７００について以下で説明する。一実装形態では、プロセッサ４１０および／またはアプリケーション接続性エンジン３１０は、デバイス１０５の機能的要素を制御して以下で説明する機能を実施するために、１つまたは複数のコードのセットを実行することができる。たとえば、アプリケーション接続性エンジン３１０は、以下で説明する様々な機能を実施するために、インターセプトモジュール２０５と、アクティブ化モジュール２１０と、リリースモジュール２１５とを実行することができる。一構成では、方法７００は、デバイス１０５がアイドルモードにあるときに実施され得る。
【００５８】
ブロック７０５で、少なくとも１つのソケットコールが、第１のワイヤレスインターフェースがアクティブである間、ＯＳ  ２２０におけるソケット層に到達することからインターセプトされ得る。一例では、ラッパー３１５を含み得るインターセプトモジュール２０５が、ソケットコールをインターセプトすることができる。ソケットコールは、モバイルデバイス１０５に対する通信チャネルを確立するなど、モバイルデバイス１０５に対する通信を実施することの要求であってよい。要求は、モバイルデバイス１０５のアプリケーション層３０５において実行しているアプリケーションから送られることがある。一例では、ソケットコールは、アプリケーションが、ネットワーク１１５などの外部ネットワークとインターフェース接続することを可能にするために、データ接続セットアッププロシージャを開始することの要求であってよい。たとえば、ソケットコールは、モバイルデバイス１０５上のＯＳ  ２２０のソケット層３２０に対するシステムコールであってよい。アクティブな第１のワイヤレスインターフェースは、セルラーインターフェースであってよい。ＯＳ  ２２０によって受信される、ｃｏｎｎｅｃｔ（）ソケットコールなどのソケットコールは、セルラーネットワーク上で無線接続を確立するために、ＯＳ  ２２０にセットアッププロシージャを開始させることができる。
【００５９】
ブロック７１０で、少なくとも１つのインターセプトされたソケットコールをＯＳ  ２２０内のソケット層にリリースすることを決定することに実質的にもとづいて、第２のワイヤレスインターフェースがＯＳ  ２２０においてアクティブ化され得る。一構成では、ＯＳ  ２２０は、アクティブ化モジュール２１０を含むことができる。アクティブ化モジュール２１０は、少なくとも１つのソケットコールをリリースすることを決定し得、ソケットコールをリリースする前に第２のワイヤレスインターフェースをアクティブ化することができる。第２のインターフェースは、ＷＬＡＮインターフェースであってよい。第２のワイヤレスインターフェースをアクティブ化することは、ＷＬＡＮが利用可能であるかどうかを決定するために、アクティブ化モジュール２１０が信号をスキャンすることを含むことができる。利用可能なＷＬＡＮを検出すると、無線接続がＷＬＡＮ上で確立され得る。たとえば、モデム接続性エンジン５８５が、無線セットアッププロシージャを開始するために、無線ユニット３２５に対して１つまたは複数のコードのセットを実行することができる。プロシージャは、無線３３０がＷＬＡＮ上で無線接続を確立することを含むことができる。ＷＬＡＮ上で無線接続を確立すると、アクティブ化モジュール２１０は、ＷＬＡＮインターフェースをアクティブ化し、アプリケーション層３０５内のアプリケーションに対してＷＬＡＮインターフェースがアクティブ化されていることを示す通知を生成することができる。
【００６０】
ブロック７１５で、少なくとも１つのインターセプトされたソケットコールがリリースされ得る。一実施形態では、リリースモジュール２１５は、ＷＬＡＮインターフェースがアクティブ化されているとの通知を受信すると、ソケットコールをリリースすることができる。ソケットコールはソケット層にリリースされ得る。一構成では、リリースモジュール２１５は、前に説明したように、リリーストリガイベントが発生すると、ソケットコールをリリースすることができる。リリーストリガイベントがＷＬＡＮインターフェースがアクティブ化される前に発生する場合、リリースモジュール２１５がソケットコールをリリースし得、セットアッププロシージャが、セルラーネットワークに対する無線接続を確立するために開始され得る。一実施形態では、セルラーインターフェースは、アプリケーションに対してアクティブでかつ可視のままであり得る。
【００６１】
したがって、方法７００は、アイドルモードにあるモバイルデバイス１０５上で第１のワイヤレスインターフェースがアクティブである間、アプリケーションによって出されたソケットコールをインターセプトすることと保持することとをもたらすことができる。要求は、要求をリリースすることが決定されるまで保持され得る。第２のワイヤレスインターフェースは、要求をリリースすることを決定すると、アクティブ化され得る。その結果、要求がソケット層にリリースされ得、データは、以前にアクティブであった第１のワイヤレスインターフェースではなく、第２のワイヤレスインターフェースを介して送信／受信され得る。方法７００は一実装形態にすぎず、方法７００の動作は、他の実装形態が可能であるように再構成あるいは修正されてよいことに留意されたい。
【００６２】
図８は、ネットワークアクセスについての要求をインターセプトし、デバイス１０５がアイドルモードにあるときに第２のワイヤレスインターフェースを確立するための方法８００の一例を示すフローチャートである。明快のために、図１、図２、図３、図４または図５に示すデバイス１０５を参照しながら方法８００について以下で説明する。一実装形態では、プロセッサ３６０および／またはアプリケーション接続性エンジン３１０は、デバイス１０５の機能的要素を制御して以下で説明する機能を実施するために、１つまたは複数のコードのセットを実行することができる。たとえば、エンジン３１０および／またはプロセッサ３６０は、１つまたは複数のコードのセットを実行し、インターセプトモジュール２０５、アクティブ化モジュール２１０およびリリースモジュール２１５の機能を実行し制御することができる。
【００６３】
ブロック８０５で、ネットワークアクセスについての要求がインターセプトされる。要求は、モバイルデバイス１０５のアプリケーション層３０５において実行しているアプリケーションから送られ得る。一例では、要求は、ネットワーク１１５などの外部ネットワークと通信チャネルを確立するための要求であってよい。要求は、デバイス１０５上のＯＳ  ２２０のソケット層３２０へのシステムコールであってよい。要求を受信すると、ソケット層３２０は、通信チャネルを確立するためのプロシージャを開始し、チャネルが確立されるとアプリケーションにコールバック機能を与えることができる。要求は、セルラーインターフェースなどの第１のワイヤレスインターフェースがＯＳ  ２２０において利用可能である間にインターセプトされ得る。
【００６４】
ブロック８１０で、デバイス１０５がアイドルモードにあるかどうかについて、決定がなされ得る。たとえば、デバイス１０５が電源切りであるか、スリープモードにあるかなどについて決定がなされ得る。デバイス１０５はまた、たとえば、デバイス１０５のディスプレイが非アクティブである場合、オーディオ出力が非アクティブである場合、などの場合に、アイドルモードにあるものと決定され得る。デバイス１０５−ａがアクティブであるものと決定される場合、ブロック８１５で、要求が、ＯＳ  ２２０のソケット層３２０にリリースされ得る。ブロック８２０で、無線接続が、第１のワイヤレスネットワークと確立され得る。ブロック８２５で、デバイス１０５は、確立された無線接続とアクティブな第１のワイヤレスインターフェースとを使用して、第１のワイヤレスネットワークを介して通信に従事することができる。ブロック８３０で、第１のワイヤレスネットワークとの無線接続は、ネットワーク上の通信を実質的に完結すると終了され得る。第１のワイヤレスインターフェースはセルラーインターフェースであってよく、第１のワイヤレスネットワークはセルラーネットワークであってよい。
【００６５】
デバイス１０５がアイドルモードにあるものと決定される場合、第２のワイヤレスネットワークが利用可能であるかどうかを決定するために、スキャンが実施され得る。ブロック８３５で、無線接続が、利用可能な第２のワイヤレスネットワークと確立され得る。ブロック８４０で、第２のワイヤレスインターフェースが、第２のワイヤレスネットワークと、ＯＳ  ２２０においてアクティブ化され得る。たとえば、無線接続を確立すると、ＯＳ  ２２０は、アプリケーション層３０５内で実行しているアプリケーションが、第２のワイヤレスネットワーク上で通信することを可能にするために、インターフェースをアクティブ化することができる。一実施形態では、ブロック８４５で、要求が、ＯＳ  ２２０のソケット層３２０にリリースされ得る。ブロック８５０で、デバイス１０５は、第２のワイヤレスインターフェースを介して第２のワイヤレスネットワーク上で通信に従事することができる。通信は、確立された無線接続と第２のインターフェースとを使用して第２のネットワーク上でデータを送信／受信することを含むことができる。ブロック８５５で、第２のネットワークとの無線接続が終了され得、第２のワイヤレスインターフェースが非アクティブ化され得る。無線接続および第２のインターフェースは、第２のワイヤレスインターフェース上のアプリケーションから出されたソケットコールが実質的に完了すると、終了され得る。
【００６６】
したがって、方法８００は、ネットワークアクセスについての要求をインターセプトすることおよび保持することと、保持された要求をＯＳ  ２２０にリリースすることを決定すると、第２のインターフェースをアクティブ化することとをもたらすことができる。第２のインターフェースがアクティブであるときに要求をリリースすることによって、通信が、第２のインターフェースを介して第２のネットワーク上で作動することができる。多数のアプリケーションがセルラーインターフェースに対する要求をリリースし、多数のセットアッププロシージャがセルラーネットワーク上で開始されることを回避することによって、シグナリングが最小化され得る。方法８００は一実装形態にすぎず、方法８００の動作は、他の実装形態が可能であるように再構成あるいは修正されてよいことに留意されたい。
【００６７】
図９は、どのワイヤレスネットワークを通信に使用するかを決定するための方法９００の一構成を示すフローチャートである。明快のために、図１、図２、図３、図４または図５に示すデバイス１０５を参照しながら方法９００について以下で説明する。一実装形態では、プロセッサ４１０および／またはアプリケーション接続性エンジン３１０は、デバイス１０５の機能的要素を制御して以下で説明する機能を実施するために、１つまたは複数のコードのセットを実行することができる。
【００６８】
ブロック９０５で、モバイルデバイス１０５についての通信チャネルを確立するためのアプリケーションからの要求が、インターセプトされ得る。デバイス１０５は、アイドルモードにあってよい。一構成では、第１のワイヤレスインターフェースは、要求がインターセプトされた時点でＯＳ  ２２０においてアクティブであり得る。第１のワイヤレスインターフェースは、第１のワイヤレスネットワークと関連付けられ得る。ブロック９１０で、第１のワイヤレスネットワークとは異なる、利用可能な第２のワイヤレスネットワークを特定するために、スキャンが実施され得る。ブロック９１５において、第２のワイヤレスネットワークが利用可能であるかどうかについて、決定がなされ得る。たとえば、第２のワイヤレスネットワークは、ＷＬＡＮまたはＷｉＦｉネットワークであってよい。第２のワイヤレスネットワークが利用可能でないものと決定される場合、ブロック９２０で、インターセプトされた要求が、ＯＳ  ２２０のソケット層３２０にリリースされ得る。ブロック９２５で、無線接続が、第１のワイヤレスネットワークと確立され得る。ブロック９３０で、モバイルデバイス１０５は、確立された無線接続と第１のワイヤレスインターフェースとを使用して、第１のワイヤレスネットワークを介して通信に従事する。
【００６９】
ブロック９１５で、第２のワイヤレスネットワークが利用可能であるものと決定される場合、ブロック９３５で、無線接続が、第２のワイヤレスネットワークと確立され得る。たとえば、無線ユニット３２５内の無線３３０は、第２のワイヤレスネットワーク上で通信チャネルを確立するために、リモートデバイス（たとえば、サーバ、他のモバイルデバイスなど）の無線に対して通信を確立することができる。ブロック９４０で、第２のワイヤレスインターフェースが、第２のワイヤレスネットワークと、ＯＳ  ２２０によってアクティブ化され得る。インターフェースは、モバイルデバイス１０５上で実行しているアプリケーションが、第２のワイヤレスインターフェースを介して第２のワイヤレスネットワーク上でデータを送信／受信することを可能にすることができる。ブロック９４５で、要求が、ＯＳ  ２２０のソケット層３２０にリリースされ得る。要求は、ソケット層３２０にリリースされ得る。ブロック９５０で、モバイルデバイス１０５は、確立された無線接続と第２のワイヤレスインターフェースとを使用して、第２のワイヤレスネットワークを介して通信に従事することができる。ブロック９５５で、第２のワイヤレスネットワークとの無線接続が終了され得る。接続は、モバイルデバイス１０５がネットワーク上で通信を実質的に終了すると、終了され得る。たとえば、接続は、デバイス１０５上のアプリケーションから出されたソケットコールが実質的に完了または達成されると、終了され得る。第２のワイヤレスネットワークに対する無線接続を終了することに加えて、ＯＳ  ２２０は、第２のワイヤレスインターフェースを非アクティブ化することができる。その結果、デバイス１０５上にインストールされたアプリケーションは、第２のインターフェースが非アクティブ化されると、第２のワイヤレスネットワークがもはや利用可能でないことに気づく。
【００７０】
したがって、方法９００は、利用可能なＷＬＡＮをスキャンすることと、ＷＬＡＮが利用可能である場合に、ＷＬＡＮインターフェース上にソケットコールをリリースすることとをもたらすことができる。方法９００は一実装形態にすぎず、方法９００の動作は、他の実装形態が可能であるように再構成あるいは修正されてよいことに留意されたい。
【００７１】
図１０は、持続的なＴＣＰ接続を維持するための方法１０００の一構成を示すフローチャートである。明快のために、図１、図２、図３、図４または図５に示すデバイス１０５を参照しながら方法１０００について以下で説明する。一実装形態では、プロセッサ４１０および／またはアプリケーション接続性エンジン３１０は、デバイス１０５の機能的要素を制御して以下で説明する機能を実施するために、１つまたは複数のコードのセットを実行することができる。
【００７２】
方法は、ブロック１００５で、第１のアプリケーションからの要求をインターセプトすることによって開始する。要求は、モバイルデバイス１０５についての通信チャネルを確立するためのソケットコールであってよい。デバイス１０５はアイドルモードであってよく、要求は、デバイス１０５のＯＳ  ２２０がアプリケーションにアクティブな第１のワイヤレスインターフェースをもたらす間にインターセプトされ得る。ブロック１０１０で、第１のワイヤレスインターフェース上に持続的な（または長寿命の）ＴＣＰ接続を有する１つまたは複数の追加のアプリケーションが、識別され得る。たとえば、プレゼンスサービス（presence service）を提供するアプリケーションは、延長された期間の間、オープンのままであるＴＣＰ接続を有することができる。長寿命のＴＣＰ接続を有し得るそのようなアプリケーションの一例には、Ｓｋｙｐｅ（登録商標）が含まれ得る。
【００７３】
ブロック１０１５で、第２のワイヤレスネットワークとの無線接続が確立され得る。ブロック１０２０で、第２のワイヤレスネットワークとの無線接続が確立されると、第２のワイヤレスインターフェースがＯＳ  ２２０によってアクティブ化され得る。ブロック１０２５で、第２のワイヤレスインターフェースがアクティブ化されていることを示す通知が生成され得る。通知は、ＷＬＡＮインターフェースがアクティブである間にＷＬＡＮインターフェースを使用することを、アプリケーションに通知することができる。一例では、ＯＳ  ２２０は、通知を生成し、その通知を第１のアプリケーションに送信することができる。ブロック１０３０で、持続的なＴＣＰ接続を有する１つまたは複数の追加のアプリケーションが、通知を受信することを防止されることがある。これらのアプリケーションが、ＷＬＡＮが利用可能になるときに通知される場合、アプリケーションは、セルラーインターフェース上の長寿命のＴＣＰ接続を閉じて、ＷＬＡＮ  ＩＰアドレスをサーバに再登録することができる。ＷＬＡＮが終了すると、これらのアプリケーションは、次いで、セルラーインターフェース上で再登録することができる。その結果、セルラー無線に対して２つの接続が発生することがある。たとえば、１つは、ＴＣＰ接続を閉じるためのものであり、１つは、ＷＬＡＮが終了した後、アプリケーションを再登録するためのものである。このことで、セルラーネットワーク上のシグナリングのレベルが増加することがある。
【００７４】
一実施形態では、アプリケーション接続性エンジン３１０は、通知の生成を一斉にディセーブルすることによって、長寿命のＴＣＰ接続を有する１つまたは複数のアプリケーションが通知を受信することを防止することができる。別の実施形態では、モバイルデバイス１０５上にインストールされているアプリケーションは、インターフェースがアクティブ化されていることおよび非アクティブ化されていることに関する通知をＯＳ  ２２０に登録することができる。エンジン３１０は、ＷＬＡＮをアクティブ化する前に、セルラーインターフェース上に持続的なＴＣＰ接続を有するアプリケーションのリストを作成することができる。アプリケーション接続性エンジン３１０は、これらのアプリケーションを通知サービスから登録解除するか、またはこれらのアプリケーション宛ての通知をインターセプトして廃棄することができる。通知が、長寿命のＴＣＰ接続を有するアプリケーションによって受信されことを防止するための別の例として、アプリケーション接続性エンジン３１０が、ＷＬＡＮインターフェースがアクティブである間、これらのアプリケーションからのｃｏｎｎｅｃｔ（）または他のソケットコールを廃棄することができる。エンジン３１０はまた、ＷＬＡＮが非アクティブ化された後の一定期間の間、これらのアプリケーションからのシステムコールを廃棄することができる。一実施形態では、エンジン３１０は、これらのアプリケーションからのｗｒｉｔｅ（）ソケットコールを、ＴＣＰ接続が確立されているインターフェース（たとえば、セルラーインターフェース）にルーティングするために、ラッパー３１５を実行することができる。特別なハンドリングは必要とされない。その結果、アプリケーションは、持続的なＴＣＰ接続を終了せずに、ＷＬＡＮに登録することを試行することができる。ｂｉｎｄ（）を介して、またはルーティングテーブルに宛先ベースのルートを追加することによって、それらのソケットを一定のインターフェースにバインドしたアプリケーションは、ＷＬＡＮインターフェースのアクティブ化によって影響を受けることはない。
【００７５】
ブロック１０３５で、要求が、ＯＳ  ２２０のソケット層３２０にリリースされ得る。ブロック１０４０で、モバイルデバイス１０５は、確立された無線接続と第２のワイヤレスインターフェースとを使用して第２のワイヤレスネットワーク上で通信を行うことができる。
【００７６】
本明細で開示する技法および構造を使用すると、アプリケーションからのソケットコールがキャプチャされ、セルラーインターフェースであってよい第１のワイヤレスインターフェースがアクティブ化されている間にＯＳに到達することが阻止される。ＯＳは、第２のワイヤレスインターフェース、たとえばＷＬＡＮインターフェースをアクティブ化し、ＷＬＡＮがアクティブ化されていることをアプリケーションに通知することができる。保持されているシステムコールまたはソケットコールは、ＯＳに、またはＯＳ内のソケット層にリリースされ得る。第２のワイヤレスインターフェースをアクティブ化することで、アプリケーションが、第１のインターフェースを介して第１のワイヤレスネットワーク（たとえば、セルラーネットワーク）上の無線接続に非同期的に要求することによって発生するシグナリングのレベルが低減される。
【００７７】
情報および信号は様々な異なる技術および技法のいずれかを使用して表すことができることを、当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００７８】
さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを当業者なら諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本発明の例示的な実施形態の範囲からの逸脱を生じるものと解釈すべきではない。
【００７９】
本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェア構成要素、あるいは本明細書に記載の機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行できる。汎用プロセッサはマイクロプロセッサとすることができるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサは、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装することもできる。
【００８０】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアの中に、プロセッサで実行されるソフトウェアモジュールの中に、またはそれら２つの組合せの中に統合されてよい。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化することができる。プロセッサおよび記憶媒体はＡＳＩＣ中に常駐することができる。ＡＳＩＣは、ユーザ端末内に常駐することができる。代替として、プロセッサおよび記憶媒体は、ユーザ端末内に個別構成要素として常駐することもできる。
【００８１】
１つまたは複数の例示的な実施形態では、説明した機能はハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装できる。ソフトウェアで実装する場合、機能は、１つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体に記憶され得るか、あるいは非一時的コンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスできる任意の利用可能な媒体でよい。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用でき、コンピュータによってアクセスできる任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピーディスク（disk）およびブルーレイディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【００８２】
開示した例示的な実施形態の前述の説明は、当業者が本発明を実施または使用できるようにするために提供されるものである。これらの例示的な実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用できる。したがって、本発明は、本明細書に示す例示的な実施形態に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきある。
【図１】
0005694602.tif 000002
【図２】
0005694602.tif 000003
【図３】
0005694602.tif 000004
【図４】
0005694602.tif 000005
【図５】
0005694602.tif 000006
【図６】
0005694602.tif 000007
【図７】
0005694602.tif 000008
【図８】
0005694602.tif 000009
【図９】
0005694602.tif 000010
【図１０】
0005694602.tif 000011