(57)【特許請求の範囲】
【請求項１】
ワイヤレスデバイスであって、
通信ネットワークとデータを交換するように構成されるネットワークインターフェースと、
１つまたは複数の入力を受信するように構成される入力デバイスと、
前記ネットワークインターフェースに電気的に接続されたプロセッサと
を備え、前記プロセッサが、
１つまたは複数の入力の存在または不在に基づいて前記ワイヤレスデバイスがバックグラウンド状態にあるのかフォアグラウンド状態にあるのかを判断することと、
前記ネットワークインターフェースを介して前記通信ネットワークと通信するように構成される複数のアプリケーションを実行することと、
前記ワイヤレスデバイスが前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集することと、
前記ワイヤレスデバイスが前記フォアグラウンド状態にあるとき、
前記ワイヤレスデバイスが前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記１つまたは複数の通信統計値を収集すること、または
前記１つまたは複数の通信統計値を収集することを控えること
のいずれかを行うことと
を行うように構成される、ワイヤレスデバイス。
【請求項２】
サーバに前記通信統計値を送信するように構成される送信機をさらに備える、
請求項１に記載のワイヤレスデバイス。
【請求項３】
前記サーバから命令を受信するように構成される受信機をさらに備え、
前記プロセッサが、前記命令に従って前記１つまたは複数の通信統計値を収集するようにさらに構成される、
請求項２に記載のワイヤレスデバイス。
【請求項４】
前記サーバから命令を受信するように構成される受信機をさらに備え、
前記送信機が、前記命令に従って前記１つまたは複数の通信統計値をレポートするように構成される、
請求項２に記載のワイヤレスデバイス。
【請求項５】
前記プロセッサが、
アプリケーションからの通信をインターセプトすることと、
前記ワイヤレスデバイスがバックグラウンド状態にある間に、前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断することと、
フォアグラウンド状態に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集することと
を行うようにさらに構成される、請求項１に記載のワイヤレスデバイス。
【請求項６】
前記サーバから命令を受信するように構成される受信機をさらに備え、
前記プロセッサが、前記命令に従って１つまたは複数の通信を遅延させるようにさらに構成される、
請求項２に記載のワイヤレスデバイス。
【請求項７】
前記命令は、前記通信を遅延させるときに前記プロセッサが含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項６に記載のワイヤレスデバイス。
【請求項８】
前記命令は、前記通信を遅延させるときに前記プロセッサが含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
請求項７に記載のワイヤレスデバイス。
【請求項９】
前記命令は、前記通信統計値を収集するときに前記プロセッサが含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項３に記載のワイヤレスデバイス。
【請求項１０】
前記命令は、前記通信統計値を収集するときに前記プロセッサが含めるべきおよび／または除外すべきソケット動作のリストを備える、
請求項３に記載のワイヤレスデバイス。
【請求項１１】
前記命令は、前記送信機が前記通信統計値を送信すべき通信ネットワークのリストを備える、
請求項４に記載のワイヤレスデバイス。
【請求項１２】
前記命令は、前記送信機が前記通信統計値を送信すべきときを示す命令を備える、
請求項４に記載のワイヤレスデバイス。
【請求項１３】
前記通信統計値は、前記バックグランウンド状態中にアクティブであるアプリケーションのアプリケーション識別子、前記アプリケーションによって転送されるデータの量、前記アプリケーションが何個の接続を開始したか、前記アプリケーションによって行われた伝送制御プロトコル（ＴＣＰ）要求の数、送られたユーザデータグラムプロトコル（ＵＤＰ）パケットの数、送られたドメインネームサービス（ＤＮＳ）要求の数を含む、
請求項１に記載のワイヤレスデバイス。
【請求項１４】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
請求項１に記載のワイヤレスデバイス。
【請求項１５】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に転送されるデータの量を備え、前記通信統計値が、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
請求項１に記載のワイヤレスデバイス。
【請求項１６】
前記プロセッサが、アプリケーションおよびソケット動作タイプによって前記通信統計値を分類するように構成される、
請求項１に記載のワイヤレスデバイス。
【請求項１７】
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
請求項１６に記載のワイヤレスデバイス。
【請求項１８】
前記通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差の計算された統計値を含む、
請求項１に記載のワイヤレスデバイス。
【請求項１９】
前記通信統計値は、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイスのロケーションを含む追加情報をさらに含む、
請求項１８に記載のワイヤレスデバイス。
【請求項２０】
アプリケーション通信統計値を収集する方法であって、
１つまたは複数の入力の存在または不在に基づいてデバイスがフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断することと、
通信ネットワークと通信するように構成される複数のアプリケーションを実行することと、
前記デバイスが前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集することと、
前記デバイスが前記フォアグラウンド状態にあるとき、
前記デバイスが前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記１つまたは複数の通信統計値を収集すること、または
前記１つまたは複数の通信統計値を収集することを控えること
のいずれかを行うことと
を行うことを備える、方法。
【請求項２１】
サーバに前記通信統計値を送信することをさらに備える、
請求項２０に記載の方法。
【請求項２２】
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を収集することと
をさらに備える、請求項２１に記載の方法。
【請求項２３】
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を送信することと
をさらに備える、請求項２１に記載の方法。
【請求項２４】
アプリケーションからの通信をインターセプトすることと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断することと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集することと
をさらに備える、請求項２０に記載の方法。
【請求項２５】
前記サーバから命令を受信することと、
前記命令に従って１つまたは複数の通信を遅延させることと
をさらに備える、請求項２１に記載の方法。
【請求項２６】
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項２５に記載の方法。
【請求項２７】
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
請求項２６に記載の方法。
【請求項２８】
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項２２に記載の方法。
【請求項２９】
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきソケット動作のリストを備える、
請求項２２に記載の方法。
【請求項３０】
前記命令は、前記通信統計値が送信されるべき通信ネットワークのリストを備える、
請求項２３に記載の方法。
【請求項３１】
前記命令は、前記通信統計値が送信されるべきときを示す命令を備える、
請求項２３に記載の方法。
【請求項３２】
前記通信統計値は、前記バックグランウンド状態中にアクティブであるアプリケーションのアプリケーション識別子、前記アプリケーションによって転送されるデータの量、前記アプリケーションが何個の接続を開始したか、前記アプリケーションによって行われた伝送制御プロトコル（ＴＣＰ）要求の数、送られたユーザデータグラムプロトコル（ＵＤＰ）パケットの数、送られたドメインネームサービス（ＤＮＳ）要求の数を含む、
請求項２０に記載の方法。
【請求項３３】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
請求項２０に記載の方法。
【請求項３４】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に転送されるデータの量を備え、前記通信統計値が、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
請求項２０に記載の方法。
【請求項３５】
アプリケーションおよびソケット動作タイプによって前記通信統計値を分類することをさらに備える、
請求項２０に記載の方法。
【請求項３６】
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
請求項３５に記載の方法。
【請求項３７】
前記通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差の計算された統計値を含む、
請求項２０に記載の方法。
【請求項３８】
前記通信統計値は、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイスのロケーションを含む追加情報をさらに含む、
請求項２０に記載の方法。
【請求項３９】
アプリケーション通信統計値を収集するための装置であって、
１つまたは複数の入力の存在または不在に基づいて前記装置がフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断するための手段と、
通信ネットワークと通信するように構成される複数のアプリケーションを実行するための手段と、
前記装置が前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集するための手段と、
前記装置が前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記装置が前記フォアグラウンド状態にあるときに前記１つまたは複数の通信統計値を収集するための手段、または
前記装置が前記フォアグラウンド状態にあるときに前記１つまたは複数の通信統計値を収集することを控えるための手段
のいずれかと
を備える、装置。
【請求項４０】
サーバに前記通信統計値を送信するための手段をさらに備える、
請求項３９に記載の装置。
【請求項４１】
前記サーバから命令を受信するための手段と、
前記命令に従って前記１つまたは複数の通信統計値を収集するための手段と
をさらに備える、請求項４０に記載の装置。
【請求項４２】
前記サーバから命令を受信するための手段と、
前記命令に従って前記１つまたは複数の通信統計値を送信するための手段と
をさらに備える、請求項４０に記載の装置。
【請求項４３】
アプリケーションからの通信をインターセプトするための手段と、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断するための手段と、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集するための手段と
をさらに備える、請求項３９に記載の装置。
【請求項４４】
前記サーバから命令を受信するための手段と、
前記命令に従って１つまたは複数の通信を遅延させるための手段と
をさらに備える、請求項４０に記載の装置。
【請求項４５】
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項４４に記載の装置。
【請求項４６】
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
請求項４５に記載の装置。
【請求項４７】
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項４１に記載の装置。
【請求項４８】
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきソケット動作のリストを備える、
請求項４１に記載の装置。
【請求項４９】
前記命令は、前記通信統計値が送信されるべき通信ネットワークのリストを備える、
請求項４２に記載の装置。
【請求項５０】
前記命令は、前記通信統計値が送信されるべきときを示す命令を備える、
請求項４２に記載の装置。
【請求項５１】
前記通信統計値は、前記バックグランウンド状態中にアクティブであるアプリケーションのアプリケーション識別子、前記アプリケーションによって転送されるデータの量、前記アプリケーションが何個の接続を開始したか、前記アプリケーションによって行われた伝送制御プロトコル（ＴＣＰ）要求の数、送られたユーザデータグラムプロトコル（ＵＤＰ）パケットの数、送られたドメインネームサービス（ＤＮＳ）要求の数を含む、
請求項３９に記載の装置。
【請求項５２】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
請求項３９に記載の装置。
【請求項５３】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に転送されるデータの量を備え、前記通信統計値は、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
請求項３９に記載の装置。
【請求項５４】
アプリケーションおよびソケット動作タイプによって前記通信統計値を分類するための手段をさらに備える、
請求項３９に記載の装置。
【請求項５５】
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
請求項５４に記載の装置。
【請求項５６】
前記通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差の計算された統計値を含む、
請求項３９に記載の装置。
【請求項５７】
前記通信統計値は、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイスのロケーションを含む追加情報をさらに含む、
請求項３９に記載の装置。
【請求項５８】
実行されたとき、装置に、
１つまたは複数の入力の存在または不在に基づいて前記装置がフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断することと、
通信ネットワークと通信するように構成される複数のアプリケーションを実行することと、
前記装置が前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集することと、
前記装置が前記フォアグラウンド状態にあるとき、
前記装置が前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記１つまたは複数の通信統計値を収集すること、または
前記通信統計値を収集することを控えること
のいずれかを行うことと
を行わせるコードを備える、非一時的コンピュータ可読媒体。
【請求項５９】
実行されたとき、前記装置に、サーバに前記通信統計値を送信させるコードをさらに備える、
請求項５８に記載の媒体。
【請求項６０】
実行されたとき、前記装置に、
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を収集することと
を行わせるコードをさらに備える、請求項５９に記載の媒体。
【請求項６１】
実行されたとき、前記装置に、
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を送信することと
を行わせるコードをさらに備える、請求項５９に記載の媒体。
【請求項６２】
実行されたとき、前記装置に、
アプリケーションからの通信をインターセプトすることと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断することと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集することと
を行わせるコードをさらに備える、請求項５８に記載の媒体。
【請求項６３】
実行されたとき、前記装置に、
前記サーバから命令を受信することと、
前記命令に従って１つまたは複数の通信を遅延させることと
を行わせるコードをさらに備える、請求項５９に記載の媒体。
【請求項６４】
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項６３に記載の媒体。
【請求項６５】
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
請求項６４に記載の媒体。
【請求項６６】
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
請求項６０に記載の媒体。
【請求項６７】
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきソケット動作のリストを備える、
請求項６０に記載の媒体。
【請求項６８】
前記命令は、前記通信統計値が送信されるべき通信ネットワークのリストを備える、
請求項６１に記載の媒体。
【請求項６９】
前記命令は、前記通信統計値が送信されるべきときを示す命令を備える、
請求項６１に記載の媒体。
【請求項７０】
前記通信統計値は、前記バックグランウンド状態中にアクティブであるアプリケーションのアプリケーション識別子、前記アプリケーションによって転送されるデータの量、前記アプリケーションが何個の接続を開始したか、前記アプリケーションによって行われた伝送制御プロトコル（ＴＣＰ）要求の数、送られたユーザデータグラムプロトコル（ＵＤＰ）パケットの数、送られたドメインネームサービス（ＤＮＳ）要求の数を含む、
請求項５８に記載の媒体。
【請求項７１】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
請求項５８に記載の媒体。
【請求項７２】
前記通信統計値は、アプリケーションごとに、前記バックグラウンド状態中に転送されるデータの量を備え、前記通信統計値は、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
請求項５８に記載の媒体。
【請求項７３】
アプリケーションおよびソケット動作タイプによって前記通信統計値を分類するための手段をさらに備える、
請求項３９に記載の装置。
【請求項７４】
前記ソケット動作タイプが、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
請求項７３に記載の装置。
【請求項７５】
前記通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差の計算された統計値を含む、
請求項３９に記載の装置。
【請求項７６】
前記通信統計値は、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイスのロケーションを含む追加情報をさらに含む、
請求項３９に記載の装置。
【請求項７７】
実行されたとき、前記装置に、アプリケーションおよびソケット動作タイプによって前記通信統計値を分類させるコードをさらに備える、
請求項５８に記載の媒体。
【請求項７８】
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
請求項７７に記載の媒体。
【請求項７９】
前記通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差の計算された統計値を含む、
請求項５８に記載の媒体。
【請求項８０】
前記通信統計値は、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイスのロケーションを含む追加情報をさらに含む、
請求項５８に記載の媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
関連出願の相互参照
本出願は、それぞれの全体がともに参照により本明細書に組み込まれる、２０１１年１０月５日に出願された米国仮出願第６１／５４３，７０１号、および２０１１年８月２９日に出願された米国仮出願第６１／５２８，６２８号の米国特許法第１１９条（ｅ）項に基づく優先権を主張する。
【技術分野】
【０００２】
本出願は、一般にワイヤレス通信に関し、より詳細には、バックグラウンドアプリケーションイベントをモニタするためのシステム、方法、およびデバイスに関する。
【背景技術】
【０００３】
ワイヤレスデバイスに広範囲のアドオンサービスおよび特徴を与えるように動作するアプリケーション（「ａｐｐ」）またはデバイスアプレットが現在利用可能である。たとえば、ワイヤレスデバイスは、ショッピング、検索、位置特定、運転ナビゲーション、および一連の他の機能など、付加価値機能を実行するために、デバイスアプレットをダウンロードし、起動することが現在可能である。ネットワークおよびアプリケーションプロバイダは、概して、追加料金でデバイスユーザにこれらのデバイスアプレットを提供する。したがって、デバイスアプレットの使用は、ワイヤレスデバイスの機能性およびユーザビリティを高め、デバイス自体では元来利用可能でない特徴および利便性をデバイスユーザに提供する。
【０００４】
ワイヤレスデバイスは、複数の無線のいずれかを使用して、１つまたは複数の通信ネットワークとインターフェースする。たとえば、ワイヤレスデバイスは、セルラー、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または他のタイプの無線アクセス技術を使用して通信を行う様々な無線を含み得る。したがって、ワイヤレスデバイス上で実行されるアプリケーションは、適切なネットワークと通信するためにアプリケーションが使用することになる無線と関連する無線チャネルとを判断するデフォルトルーティングを備える。
【０００５】
しかしながら、アプリケーション通信をインテリジェントに管理することに対する関心が高まっている。これは、一部は、マルチ無線デバイス（たとえば、３Ｇ／Ｗｉ−Ｆｉデバイス）の数の増加、および事業者の容量問題を生じ得るネットワークトラフィックの増加によるものである。したがって、そのような容量問題に関して、トラフィックを代替無線にオフロードするか、またはある期間中に通信を遅延させることが望ましいことがある。
【０００６】
したがって、ワイヤレスデバイス上のアプリケーションの通信管理を行うための効率的でコスト効果的な機構が必要である。詳細には、どのアプリケーションがネットワークを使用し、アプリケーションがネットワークをどのように使用するのかを発見する効率的な方法が必要である。さらに、発見されたアプリケーションがデバイスの様々な状態においてどのくらい緊急に無線にアクセスすべきかに従って、発見されたアプリケーションを分類する必要がある。そのような情報は、通信の送信を遅延させるために使用され得る。さらに、通信の遅延した送信に関するポリシーを通信するシステムおよび方法が必要である。
【発明の概要】
【０００７】
本発明のシステム、方法、およびデバイスはそれぞれいくつかの態様を有し、それらのうちの単一の態様が単独で本発明の望ましい属性を担当するとは限らない。次に、以下の特許請求の範囲によって表される本発明の範囲を限定することなしに、いくつかの特徴について手短に説明する。この説明を考察すれば、特に「発明を実施するための形態」と題するセクションを読めば、本発明の特徴が、どのアプリケーションが遅延トレラント（delay-tolerant）であるかを知ることを含む利点をどのように提供するかが理解されよう。
【０００８】
本開示の一態様は、ワイヤレスデバイスを提供する。本ワイヤレスデバイスは、通信ネットワークとデータを交換するように構成されるネットワークインターフェースを含む。本ワイヤレスデバイスは、１つまたは複数の入力を受信するように構成された入力デバイスをさらに含む。本ワイヤレスデバイスは、ネットワークインターフェースに電気的に接続されたプロセッサをさらに含む。プロセッサは、１つまたは複数の入力の存在または不在に基づいてデバイスがバックグラウンド状態にあるのかフォアグラウンド状態にあるのかを判断するように構成される。プロセッサは、ネットワークインターフェースを介して通信ネットワークと通信するように構成された複数のアプリケーションを実行するようにさらに構成される。プロセッサは、デバイスがバックグラウンド状態にあるとき、複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集するようにさらに構成される。プロセッサは、デバイスがフォアグラウンド状態にあるとき、デバイスがバックグラウンド状態にあるときに収集した通信統計値とは別個に、１つまたは複数の通信統計値を収集すること、または１つまたは複数の通信統計値を収集することを控えることのいずれかを行うようにさらに構成される。
【０００９】
本開示の別の態様は、アプリケーション通信統計値を収集する方法を提供する。本方法は、１つまたは複数の入力の存在または不在に基づいてデバイスがフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断することを含む。本方法は、通信ネットワークと通信するように構成された複数のアプリケーションを実行することをさらに含む。本方法は、デバイスがバックグラウンド状態にあるとき、複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集することをさらに含む。本方法は、デバイスがフォアグラウンド状態にあるとき、デバイスがバックグラウンド状態にあるときに収集した通信統計値とは別個に、１つまたは複数の通信統計値を収集すること、または１つまたは複数の通信統計値を収集することを控えることのいずれかを行うことをさらに含む。
【００１０】
本開示の別の態様は、アプリケーション通信統計値を収集するための装置を提供する。本装置は、１つまたは複数の入力の存在または不在に基づいて装置がフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断するための手段を含む。本装置は、通信ネットワークと通信するように構成された複数のアプリケーションを実行するための手段をさらに含む。本装置は、本装置がバックグラウンド状態にあるとき、複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集するための手段をさらに含む。本装置は、デバイスがバックグラウンド状態にあるときに収集した通信統計値とは別個に、デバイスがフォアグラウンド状態にあるときに１つまたは複数の通信統計値を収集するための手段、またはデバイスがフォアグラウンド状態にあるときに１つまたは複数の通信統計値を収集することを控えるための手段のいずれかをさらに含む。
【００１１】
本開示の別の態様は、非一時的コンピュータ可読媒体を提供する。本媒体は、実行されたとき、装置に、１つまたは複数の入力の存在または不在に基づいて装置がフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断させるコードを含む。本媒体は、実行されたとき、装置に、通信ネットワークと通信するように構成された複数のアプリケーションを実行させるコードをさらに含む。本媒体は、実行されたとき、装置に、装置がバックグラウンド状態にあるとき、複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集させるコードをさらに含む。本媒体は、実行されたとき、装置に、装置がフォアグラウンド状態にあるとき、装置がバックグラウンド状態にあるときに収集した通信統計値とは別個に、１つまたは複数の通信統計値を収集すること、または通信統計値を収集することを控えることのいずれかを行わせるコードをさらに含む。
【００１２】
本開示の別の態様は、複数のアプリケーションを実行し、通信ネットワークと通信するように構成されたワイヤレスデバイスを提供する。ワイヤレスデバイスは、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを受信するように構成された受信機を含む。本ワイヤレスデバイスは、１つまたは複数の入力を受信するように構成された入力デバイスをさらに含む。本ワイヤレスデバイスは、１つまたは複数の入力の存在または不在に基づいてデバイスがフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断するように構成されるプロセッサをさらに含む。プロセッサは、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信を変更するようにさらに構成される。プロセッサは、デバイスがフォアグラウンド状態にあるとき、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信の送信を許可するようにさらに構成される。
【００１３】
本開示の別の態様は、通信ネットワークと通信する方法を提供する。本方法は、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを受信することを含む。本方法は、１つまたは複数の入力の存在または不在に基づいてデバイスがフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断することをさらに含む。本方法は、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信を変更することをさらに含む。本方法は、ユーザインターフェースがフォアグラウンド状態にあるとき、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信の送信を許可することをさらに含む。
【００１４】
本開示の別の態様は、通信ネットワークと通信するための装置を提供する。本装置は、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを受信するための手段を含む。本装置は、１つまたは複数の入力の存在または不在に基づいてデバイスがフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断するための手段をさらに含む。本装置は、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信を変更するための手段をさらに含む。本装置は、ユーザインターフェースがフォアグラウンド状態にあるとき、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信の送信を許可するための手段をさらに含む。
【００１５】
本開示の別の態様は、非一時的コンピュータ可読媒体を提供する。本媒体は、実行されたとき、装置に、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを受信させるコードを含む。本媒体は、実行されたとき、装置に、１つまたは複数の入力の存在または不在に基づいてデバイスがフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断させるコードをさらに含む。本媒体は、実行されたとき、装置に、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信を変更させるコードをさらに含む。本媒体は、実行されたとき、装置に、ユーザインターフェースがフォアグラウンド状態にあるとき、ルールに従って複数のアプリケーションのうちの１つまたは複数による通信の送信を許可させるコードをさらに含む。
【００１６】
本開示の別の態様は、通信ネットワークと通信するように構成される装置を提供する。本デバイスは、ワイヤレスデバイス上で実行される、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを生成するように構成されるプロセッサを含む。本デバイスは、通信ネットワークを介してワイヤレスデバイスに複数のルールを送信するように構成される送信機をさらに含む。
【００１７】
本開示の別の態様は、通信ネットワークと通信する方法を提供する。本方法は、ワイヤレスデバイス上で実行される、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを生成することを含む。本方法は、ワイヤレスデバイスに通信ネットワークを介して複数のルールを送信することをさらに含む。
【００１８】
本開示の別の態様は、通信ネットワークと通信するための装置を提供する。本装置は、ワイヤレスデバイス上で実行される、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを生成するための手段を含む。本装置は、ワイヤレスデバイスに通信ネットワークを介して複数のルールを送信するための手段をさらに含む。
【００１９】
本開示の別の態様は、非一時的コンピュータ可読媒体を提供する。本媒体は、実行されたとき、装置に、ワイヤレスデバイス上で実行される、複数のアプリケーションのうちの１つまたは複数が通信ネットワークとどのように通信すべきかを指定する複数のルールを生成させるコードを含む。本媒体は、実行されたとき、装置に、ワイヤレスデバイスに通信ネットワークを介して複数のルールを送信させるコードをさらに含む。
【図面の簡単な説明】
【００２０】
本明細書で説明する上記の態様は、添付の図面とともに以下の説明を参照することによって、より容易に明らかになろう。
【図１】通信管理システムの態様を示す例示的なネットワーク環境を示す図。
【図２】通信管理を行うように構成される例示的なワイヤレスデバイスを示す図。
【図３】通信管理を行う例示的な方法のフローチャート。
【図４】例示的なデバイスのアプリケーションネットワークアクティビティのグラフ。
【図５】アプリケーション通信をアグリゲートするように構成されるハードウェア／ソフトウェアシステムの例示的なブロック図。
【図６】図５のハードウェア／ソフトウェアシステムによって実装されるアプリケーション通信アグリゲーションの例示的なタイムラインを示す図。
【図７】別の実施形態による、アプリケーション通信アグリゲーションのタイムラインを示す図。
【図８】通信アクセスポリシーを実装するように構成される例示的なデバイスを示す図。
【図９】通信統計値を収集する例示的な方法のフローチャート。
【図１０】通信統計値を分析する例示的な方法のフローチャート。
【図１１】通信統計値を収集する別の例示的な方法のフローチャート。
【図１２】通信アクセスポリシーを実装する例示的な方法のフローチャート。
【図１３】通信アクセスポリシーを実装するように構成される別の例示的なデバイスを示す図。
【発明を実施するための形態】
【００２１】
添付の図面を参照しながら新規のシステム、装置、および方法の様々な態様について以下でより十分に説明する。ただし、本開示の教示は、多くの異なる形態で実施され得るものであり、本開示全体にわたって提示する任意の特定の構造または機能に限定されるものと解釈すべきではない。むしろ、これらの態様は、本開示が周到で完全になり、本開示の範囲を当業者に十分に伝えるように与えるものである。本明細書の教示に基づいて、本開示の範囲は、本発明の他の態様とは無関係に実装されるにせよ、本開示の他の態様と組み合わせて実装されるにせよ、本明細書で開示する新規のシステム、装置、および方法のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、本明細書に記載の態様をいくつ使用しても、装置は実装され得、または方法は実施され得る。さらに、本発明の範囲は、本明細書に記載の本発明の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。本明細書で開示する任意の態様が請求項の１つまたは複数の要素によって実施され得ることを理解されたい。
【００２２】
本明細書では特定の態様について説明するが、これらの態様の多くの変形および置換は本開示の範囲内に入る。好適な態様のいくつかの利益および利点について説明するが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々なワイヤレス技術、システム構成、ネットワーク、および伝送プロトコルに広く適用可能であるものとし、それらのいくつかを例として、図および好適な態様についての以下の説明において示す。発明を実施するための形態および図面は、本開示を限定するものではなく説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびそれの均等物によって定義される。
【００２３】
本明細書で説明する技法は、符号分割多元接続（ＣＤＭＡ）ネットワーク、時分割多元接続（ＴＤＭＡ）ネットワーク、周波数分割多元接続（ＦＤＭＡ）ネットワーク、直交ＦＤＭＡ（ＯＦＤＭＡ）ネットワーク、シングルキャリアＦＤＭＡ（ＳＣ−ＦＤＭＡ）ネットワークなど、様々なワイヤレス通信ネットワークに対して使用され得る。「ネットワーク」および「システム」という用語は、しばしば互換的に使用される。ＣＤＭＡネットワークは、ユニバーサルテレストリアルラジオアクセス（ＵＴＲＡ）、ＣＤＭＡ２０００などの無線技術を実装し得る。ＵＴＲＡは、ワイドバンド−ＣＤＭＡ（Ｗ−ＣＤＭＡ）（登録商標）と低チップレート（ＬＣＲ）とを含む。ＣＤＭＡ２０００は、ＩＳ−２０００、ＩＳ−９５およびＩＳ−８５６規格をカバーする。ＴＤＭＡネットワークは、グローバルシステムフォーモバイルコミュニケーション（ＧＳＭ（登録商標））などの無線技術を実装し得る。ＯＦＤＭＡネットワークは、Ｅｖｏｌｖｅｄ  ＵＴＲＡ（Ｅ−ＵＴＲＡ）、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１５、ＩＥＥＥ８０２．１６、ＩＥＥＥ８０２．２０、Ｆｌａｓｈ−ＯＦＤＭＡ（登録商標）などの無線技術を実装し得る。ＵＴＲＡ、Ｅ−ＵＴＲＡ、およびＧＳＭは、ユニバーサルテレストリアルラジオアクセス（ＵＭＴＳ）の一部である。ロングタームエボリューション（ＬＴＥ）は、Ｅ−ＵＴＲＡを使用するＵＭＴＳの今度のリリースである。ＵＴＲＡ、Ｅ−ＵＴＲＡ、ＧＳＭ、ＵＭＴＳおよびＬＴＥは、「第３世代パートナーシッププロジェクト」（３ＧＰＰ）と称する団体からの文書に記載されている。ＣＤＭＡ２０００は、「第３世代パートナーシッププロジェクト２」（３ＧＰＰ２）と称する団体からの文書に記載されている。これらの様々な無線技術および規格は当技術分野で知られている。
【００２４】
図１に、通信管理システム１０８の態様を示す例示的なネットワーク環境１００を示す。ネットワーク環境１００は、ワイヤレスデバイス１０２と、通信ネットワーク１０４と、１つまたは複数のサーバ１１０および１１１とを含む。デバイス１０２は、対応する無線チャネル１０６を使用してネットワーク１０４と通信するための複数の無線（図示せず）を含む。デバイス１０２はまた、たとえば、特定のアプリケーションによる複数の無線へのアクセスを制御するように動作する通信管理システム１０８を含む。
【００２５】
ワイヤレスデバイス１０２は、通信ネットワーク１０４を介してサーバ１１０および１１１と通信し得る。サーバ１１０および１１１は、それぞれ通信チャネル１１２および１１３を介して通信ネットワーク１０４に接続する。通信チャネル１１２および１１３は、ワイヤードチャネルとワイヤレスチャネルのいずれかであり得る。
【００２６】
動作中、ワイヤレスデバイス１０２は、複数の無線のいずれかを使用してネットワーク１０４とインターフェースし得るアプリケーションを実行する。たとえば、実行アプリケーションは、ネットワーク１０４と通信するためのネットワークリソースを要求するために、ソケットレイヤ呼出しなどのネットワーキング関数呼出しを発し得る。一実施形態では、通信管理システム１０８は、アプリケーションに所定の無線リソースをバインドするために、デフォルトルーティング構成に基づいてソケットレイヤ呼出しを処理し得る。
【００２７】
一実施形態では、サーバ１１０は、通信アクセスポリシーを取得し得る。様々な実施形態では、サーバ１１０は、コンパイルされたネットワーク統計値に基づいて通信アクセスポリシーを生成し得るか、前にコンパイルされた通信アクセスポリシーを取り出し得るか、または別のソースから通信アクセスポリシーを受信し得る。一実施形態では、ワイヤレスデバイス１０２は、通信管理システム１０８を介して通信統計値を収集し得る。通信統計値は、たとえば、無線チャネル１０６にアクセスしようと試みるアプリケーション、アプリケーションが無線チャネル１０６にアクセスしようと試みるとき、どのようなアクセスが試みられているかなどに関する情報を含み得る。ワイヤレスデバイス１０２は、サーバ１１１に通信統計値を与え得る。サーバ１１０および１１１の一方または両方は、ワイヤレスデバイス１０２から受信した通信統計値を処理し得、単独またはタンデムのいずれかで通信アクセスポリシーをコンパイルし得る。いくつかの実施形態では、サーバ１１０およびサーバ１１１はコロケートされ得るか、またはそれらの機能は、単一のサーバ上で組み合わされ得る。
【００２８】
通信アクセスポリシーは、どのアプリケーションが無線チャネル１０６にアクセスすることを許可されるのか、アプリケーションが無線チャネル１０６にアクセスすることをいつ許可されるのか、どのようなアクセスが許可されるのかなどに関するルールを含み得る。サーバ１１０は、通信ネットワーク１０４を介してワイヤレスデバイス１０２に通信アクセスポリシーを与え得る。様々な実施形態では、サーバ１１０は、アクセスネットワークディスカバリーアンドセレクションファンクション（ＡＮＤＳＦ）、オープンモバイルアライアンスデバイス管理（ＯＭＡ−ＤＭ：Open Mobile Alliance Device Management）、および／または任意の他の好適な方法、オーバージエアなどを介してワイヤレスデバイス１０２に通信アクセスポリシーを与え得る。
【００２９】
様々な実装形態では、通信管理システム１０８は、アプリケーションからのネットワーキング関数呼出しをインターセプトするように動作する。通信管理システム１０８は、通信アクセスポリシーに従ってアプリケーションが使用するための適切な無線を選択し得る。通信管理システム１０８はまた、通信アクセスポリシーに従ってアプリケーションの通信を変更し得る。本明細書で使用する、通信の変更形態は、限定はしないが、通信を遅延させることか、またはさもなければ通信に影響を及ぼすかまたは作用することを含むことができる。インテリジェント無線選択システム１０８はまた、ネットワークリソース（すなわち、選択されている無線）にアプリケーションをバインドし得る。通信管理システム１０８は、アプリケーションが無線リソースを使用するときのアプリケーションの通常動作に応答して動作するので、システムは、アプリケーションの変更またはアップグレードなしに、レガシーアプリケーションと非レガシーアプリケーションの両方で動作し得る。通信管理システム１０８のより詳細な説明を以下に与える。
【００３０】
図２に、通信管理を行うように構成される例示的なワイヤレスデバイス２００を示す。デバイス２００は、通信バス２１４を使用して通信するようにすべて結合されたプロセッサ２０２と、メモリ２０４と、ＴＸ／ＲＸ無線機２１２とを含む。ワイヤレスデバイス２００は、図１に関して上記で説明したワイヤレスデバイス１０２であり得る。デバイス２００は一実装形態にすぎず、他の実装形態が可能であることに留意されたい。
【００３１】
一態様では、プロセッサ２０２は、アプリケーションレイヤモジュール２０６と、接続性エンジン２０８と、ネットワーキングモジュール２１０とを含む。プロセッサ２０２はまた、ＣＰＵ、マイクロプロセッサ、ゲートアレイ、ハードウェア論理、メモリ要素、および／またはソフトウェアを実行するハードウェア（図示せず）のうちの少なくとも１つを含み得る。プロセッサ２０２は、デバイス２００上で実行されるアプリケーションの通信が、選択的に変更され、影響を及ぼされ、遅延され、および／または所望の無線にバインドされ得るように、デバイス２００の動作を制御するように構成される。一実装形態では、プロセッサ２０２は、複数の機能のうちのいずれかを実行することに関係するコンピュータ可読命令を実行するように構成される。たとえば、プロセッサ２０２は、通信管理を実現するためにデバイス２００から受信されるか、または通信される情報を分析するように動作する。別の態様では、プロセッサ２０２は、通信管理を実現するためにメモリ２０４、アプリケーションレイヤモジュール２０６、ＴＸ／ＲＸ無線機２１２、および／または接続性エンジン２０８によって利用され得る情報を生成するように動作する。
【００３２】
ＴＸ／ＲＸ無線機２１２は、複数の無線チャネル２１６を使用する外部通信ネットワーク１０４（図１）などの複数の外部エンティティとデバイス２００をインターフェースするために使用され得る複数の無線／インターフェースを与えるように構成されるソフトウェアを実行するハードウェアおよび／またはプロセッサを含む。無線チャネル２１６は、たとえば、図１に関して上記で説明した無線チャネル１０６であり得る。ＴＸ／ＲＸ無線機２１２は、セルラー、Ｗｉ−Ｆｉ、ブルートゥース、または無線チャネル２１６を使用して通信ネットワークと通信するための他の技術を使用して通信するための無線／インターフェースを与え得る。
【００３３】
アプリケーションレイヤモジュール２０６は、デバイス２００上で１つまたは複数のアプリケーションを実行し、メモリ２０４にアプリケーションを記憶するように構成されるソフトウェアを実行するハードウェアおよび／またはプロセッサを含む。一実装形態では、アプリケーションレイヤモジュール２０６は、アプリケーションが、ネットワーキングサービスを要求するためにネットワーキングモジュール２１０へのネットワーキング関数呼出しを開始することを許可するように構成される。ネットワーキング関数呼出しは、無線チャネル２１６を介して外部ネットワークまたはシステムと通信するための、ＴＸ／ＲＸ無線機２１２における無線／インターフェースへの接続要求を含み得る。
【００３４】
ネットワーキングモジュール２１０は、ネットワーキング関数を実行するように構成されるソフトウェアを実行するハードウェアおよび／またはプロセッサを含む。一実装形態では、ネットワーキング関数は、Ｃｏｎｎｅｃｔ（）、Ｂｉｎｄ（）、Ｗｒｉｔｅ（）、およびＳｅｔｓｏｃｋｏｐｔ（）などの関数を含む。ｃｏｎｎｅｃｔ（）関数は、アプリケーションと特定の無線／インターフェースとの間の接続を確立するように動作する。ｗｒｉｔｅ（）関数は、接続を介してデータを送るように動作する。たとえば、特定の無線／インターフェースは、ＴＸ／ＲＸ無線機２１２によって与えられた複数の候補無線から選択され得る。一態様では、ネットワーキングモジュール２１０は、様々なネットワーキング関数またはコマンドを実行するように構成される。一態様では、ネットワーキングモジュール２１０は、デバイスがバックグラウンドモードにある間（図８）、いくつかの機能が続行することを許可し得、他の機能が続行することを許可しないことがある。一実施形態では、たとえば、ユーザインターフェースが使用中でないとき、デバイスはバックグラウンドモードにあり得る。
【００３５】
接続性エンジン２０８は、アプリケーションからの通信を管理するためにシステムリソースを評価するように構成されるソフトウェアを実行するハードウェアおよび／またはプロセッサを含む。様々な実装形態では、接続性エンジン２０８は、以下の選択基準うちの１つまたは複数に基づいて、アプリケーション通信をインターセプトすること、通信を選択的に変更し、影響を及ぼし、および／または遅延させること、ならびに／あるいは特定の無線を選択することを行うように構成される。
【００３６】
１．ユーザポリシー−デバイスにおいて実行されるアプリケーションによる無線アクセスに関する、デバイスユーザによって設定されるポリシー。
【００３７】
２．事業者ポリシー−デバイスまたはアプリケーションによるネットワークアクセスに関する、ネットワーク事業者によって設定されるポリシー。
【００３８】
３．無線メトリック−特定のアプリケーションまたは動作環境のために最も好適な無線を選択するために使用される、無線パフォーマンスの測定値または他のタイプの測定値。
【００３９】
４．アプリケーション要件−帯域幅要件またはレイテンシ／パフォーマンス要件など、要求アプリケーションに関連する要件。
【００４０】
５．ネットワークユーザビリティ−特定の無線インターフェース上での特定のネットワークの利用可能性に関する情報。
【００４１】
６．ベンダー供給メトリック−受信信号強度インジケータおよびパケットロス率などの無線メトリックから、特定の無線インターフェースのために利用可能なスループットおよびレイテンシに変換するための情報。
【００４２】
７．アクセスポイント利用可能性−他のデバイスからのトラフィックによって輻輳されるアクセスポイント、または無線リンクを構成し得るが、ネットワークにパケットを転送しないアクセスポイントの一意の識別子を指定する情報。
【００４３】
プロセッサ２０２は、ＴＸ／ＲＸ無線機２１２を介して上述の選択基準のうちの１つまたは複数をダウンロードし得る。選択基準はメモリ２０４に記憶され得る。たとえば、プロセッサ２０２は事業者ポリシーを取り出し得、接続性エンジン２０８はその事業者ポリシーを適用し得る。事業者ポリシーは、ワイヤレスデバイス２００上のアプリケーションによるネットワークアクセスを規制する複数のルールを含み得る。
【００４４】
メモリ２０４は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、あるいはアプリケーションおよび／または選択基準をデバイス２００に記憶し、取り出すことを可能にするように動作する他のタイプのメモリデバイスを含む。一実装形態では、メモリ２０４は、プロセッサ２０２によって実行されるコンピュータ可読命令を記憶するように構成される。メモリ２０４はまた、プロセッサ２０２、ＴＸ／ＲＸ無線機２１２、アプリケーションレイヤモジュール２０６、ネットワーキングモジュール２１０、および／または接続性エンジン２０８のいずれかによって生成されるデータを含む複数の他のタイプのデータのいずれかを記憶するように構成され得る。メモリ２０４は、ランダムアクセスメモリ、バッテリバックアップメモリ、ハードディスク、磁気テープなどを含むいくつかの異なる構成で構成され得る。また、圧縮および自動バックアップなど、様々な特徴がメモリ２０４上に実装され得る。
【００４５】
メモリ２０４は、プリロードライブラリ２１８とネットワーキングライブラリ２２０とを記憶するように構成される。プリロードライブラリ２１８は、アプリケーションからのソケット呼出しをインターセプトする。ネットワーキングライブラリ２２０は、アプリケーションによって、ネットワーク通信を確立するためにソケットを作成し、接続するために使用されるネットワーキングＡＰＩを与える。
【００４６】
接続性エンジン２０８は、様々な方法でアプリケーション通信を選択的に変更し、影響を及ぼし、および／または遅延させるように構成される。たとえば、接続性エンジン２０８は、上記の選択基準のうちの１つまたは複数を使用して通信を遅延させるように構成され得る。たとえば、接続性エンジン２０８は、遅延トレラントアプリケーションからの通信のみを遅延させ得る。さらに、接続性エンジン２０８は、ワイヤレスデバイス２００がバックグラウンド状態にあるときのみ、通信を遅延させ得る。一実施形態では、接続性エンジン２０８は、ワイヤレスデバイス２００がフォアグラウンド状態に入るまで、遅延トレラントアプリケーションのための通信を遅延させる。別の実施形態では、接続性エンジン２０８は、遅延イントレラント（delay-intolerant）アプリケーションが通信を開始するまで、遅延トレラントアプリケーションのための通信を遅延させる。
【００４７】
接続性エンジン２０８はまた、様々な方法で複数の候補無線から無線を選択するように構成され得る。たとえば、接続性エンジン２０８は、上記の選択基準のうちの１つまたは複数を使用して無線を選択するように構成され得る。無線が選択されると、接続性エンジン２０８は、その無線を表すインターフェースにアプリケーションをバインドする。たとえば、一実装形態では、接続性エンジン２０８は、元のネットワーキングライブラリ２２０への呼出しを行うことによって無線のインターフェースにアプリケーションをバインドする。したがって、接続性エンジン２０８における関数とプリロードライブラリ２１８とは、アプリケーションのために選択されている無線にバインドするために、ネットワーキングライブラリ２２０中のｂｉｎｄ（）関数などの関数に容易にアクセスし得る。
【００４８】
様々な実装形態では、通信管理システムは、コンピュータ可読媒体上に記憶されるかまたはコンピュータ可読媒体上で実施される１つまたは複数のプログラム命令（「命令」）または「コード」のセットを有するコンピュータプログラム製品を含む。コードが少なくとも１つのプロセッサ、たとえば、プロセッサ２０２によって実行されると、それらの実行により、プロセッサ２０２は、本明細書で説明するインテリジェントインターフェース選択システムの機能を行うようにデバイス２００を制御する。たとえば、コンピュータ可読媒体は、フロッピー（登録商標）ディスク、ＣＤＲＯＭ、メモリカード、フラッシュメモリデバイス、ＲＡＭ、ＲＯＭ、あるいはデバイス２００とインターフェースする他のタイプのメモリデバイスまたはコンピュータ可読媒体を含む。別の態様では、コードのセットは、外部デバイスまたは通信ネットワークリソースからデバイス２００にダウンロードされ得る。コードのセットは、実行されたとき、本明細書で説明するインテリジェントインターフェース選択システムの態様を与えるように動作する。
【００４９】
図３に、通信管理を行う例示的な方法のフローチャート３００を示す。明確のために、フローチャート３００について、図２に示したデバイス２００に関して以下に説明する。しかしながら、図示された方法が任意の好適なデバイスを用いて実装され得ることを、当業者は諒解されよう。一実装形態では、プロセッサ２０２は、以下で説明する機能を実行するためにデバイス２００の機能要素を制御するためのコードの１つまたは複数のセットを実行する。
【００５０】
ブロック３０２において、プロセッサ２０２はアプリケーションを開始する。アプリケーションは、アプリケーションレイヤモジュール２０６の一部であるレガシーアプリケーションまたは非レガシーアプリケーションであり得る。たとえば、アプリケーションは、ＴＸ／ＲＸ無線機２１２で利用可能な無線を使用してワイヤレスネットワークに接続するためにネットワーキング関数呼出しを生成するネットワークブラウザであり得る。
【００５１】
ブロック３０４において、プロセッサ２０２は、プリロードライブラリを構成し、ロードする。たとえば、プリロードライブラリ２１８は、アプリケーションによって通信ネットワークを評価するために使用されるネットワーキングライブラリ２２０中に与えられるネットワーキング関数のサブセットを含む。プリロードライブラリ２１８中のネットワーキング関数は、デバイスにおいて実行されるアプリケーションからのネットワーキング関数呼出しをインターセプトするように構成される。たとえば、プリロードライブラリ２１８は、デバイス２００において実行されるアプリケーションによるソケット呼出しをインターセプトするために使用され得るＰＯＳＩＸソケット関数を含む。一実装形態では、プリロードライブラリ２１８はメモリ２０４に記憶される。
【００５２】
一実装形態では、プリロードライブラリ２１８関数は、呼出しアプリケーションからパスされた引数を受信し、アプリケーションの目的に最も適した無線を選択するように接続性エンジン２０８に求める要求を生成するためにこれらの引数を使用するように構成される。
【００５３】
ブロック３０６において、プロセッサ２０２は、プリロードライブラリを実行環境にリンクする。たとえば、プロセッサ２０２は、ネットワーキングライブラリ２２０よりも高い優先順位でプリロードライブラリ２１８を実行環境にリンクする。したがって、アプリケーションによるネットワーキング関数呼出しは、インターセプトされ、プリロードライブラリ２１８中の関数によって処理され、ネットワーキングライブラリ２２０中の同様の関数によって処理されないことになる。
【００５４】
ブロック３０８において、プロセッサ２０２は、アプリケーションからのネットワーキング関数呼出しをインターセプトする。たとえば、ネットワーキング関数呼出しは、ｃｏｎｎｅｃｔ関数（）またはｗｒｉｔｅ（）関数など、ＰＯＳＩＸソケット関数呼出しであり得る。アプリケーションは、外部ネットワークとの通信を可能にするために無線に接続するために、ネットワーキング関数呼出しを生成する。ネットワーキングライブラリ２２０よりも高い優先順位でプリロードライブラリ２１８を実行環境にリンクすることにより、プロセッサ２０２は、プリロードライブラリ２１８中の関数を介してネットワーキング関数呼出しをインターセプトする（または処理する）。一実施形態では、プロセッサ２０２は、図１２に関して以下で説明するように、受信した事業者ポリシーに従ってネットワーキング関数呼出しを遅延させることができる。
【００５５】
ブロック３１０において、プリロードライブラリ２１８中の呼び出された関数は、アプリケーションが使用するのに適切な無線を選択するように接続性エンジン２０８に求める選択要求を生成する。要求には、接続性エンジン２０８によってアプリケーションが使用するのに適切な無線を選択するために使用される選択基準の一部である情報が含まれる。別の実施形態では、プリロードライブラリ２１８中の呼び出された関数は、通信を遅延すべきであるかどうかを判断するように接続性エンジン２０８に求める選択要求を生成する。
【００５６】
ブロック３１２において、選択基準を評価する。一実装形態では、接続性エンジン２０８は、上記で説明した選択基準を評価するように動作する。たとえば、接続性エンジン２０８は、選択基準の一部である事業者ポリシーを評価するためにプロセッサ２０２と通信し得る。
【００５７】
ブロック３１４において、接続性エンジン２０８は、選択基準の評価に基づいて無線を選択する。たとえば、接続性エンジン２０８は、選択基準に最も良く一致する無線を選択するように動作する。
【００５８】
ブロック３１６において、接続性エンジン２０８は、アプリケーションのために選択されている無線のインターフェースにバインドする。たとえば、一実装形態では、接続性エンジン２０８は、アプリケーションのために選択されている無線にバインドするために、ネットワーキングライブラリ２２０のｂｉｎｄ（）関数を呼び出す。たとえば、接続性エンジン２０８は、ネットワーキングライブラリ２２０に気づいており、プリロードライブラリ２１８によってインターセプトされることなしにそれの関数にどのように直接アクセスするかに気づいている。一実施形態では、接続性エンジン２０８は、アプリケーションを無線にバインドするより前にまたはその後に通信を遅延させる。
【００５９】
ブロック３１８において、アプリケーションは、次いで、ネットワーク通信のために選択されている無線を利用する。
【００６０】
オプションの動作では、本方法は、ブロック３１２に進み、接続性エンジン２０８は、現在の無線が選択基準に最も良く一致するかどうかを判断するために、選択基準の周期的評価を実行するように動作する。接続性エンジン２０８が、選択基準の別の評価の後に、現在の無線以外の無線が選択基準に最も良く一致すると判断した場合、接続性エンジン２０８は、新しい接続のために異なる無線を選択するために接続を再開するようにアプリケーションをトリガするための手段として、接続を無効化し得る。したがって、オプションの動作により、所望の通信を行うために最も適切な無線が選択されることを保証するために、選択基準を周期的に評価することが可能になる。
【００６１】
したがって、フローチャート３００は、レガシーアプリケーションおよび非レガシーアプリケーションとともに使用する通信管理を行う。フローチャート３００は一実装形態にすぎないこと、およびフローチャート３００の動作は、他の実装形態が可能であるように並べ替えられるかまたは場合によっては変更され得ることに留意されたい。
【００６２】
ワイヤレスデバイスアプリケーションのための接続性管理  
スマートフォン、携帯情報端末などのワイヤレスデバイスでは、ソフトウェアアプリケーションは、デバイスがバックグラウンド状態にあるとしても（たとえば、ユーザがデバイスをアクティブに使用していないとき）動作し続け得る。ソーシャルネットワーキングアプリケーション、電子メールまたは他の通信アプリケーション、データフィードなどのアプリケーション（普及している例としては、Ｆａｃｅｂｏｏｋ（登録商標）、Ｇｍａｉｌ（登録商標）、Ｔｗｉｔｔｅｒ（登録商標）などがある）は、ユーザがデバイスを使用していなくても、データを送信および受信し続け得る。
【００６３】
モバイルデバイスは、デバイスのいくつかの入力が使用可能でないときまたはスリープ状態にあるとき、バックグラウンドモードにあり得る。言い換えれば、デバイスは、ユーザがデバイスを使用していないとき、バックグラウンドモードにあり得る。たとえば、（マイクロフォンなどの）オーディオ入力がオフであるとき、デバイスはバックグラウンドモードにあると見なされ得る。さらに、（デバイスのディスプレイなどの）ビジュアル入力がオフであるとき、デバイスはバックグラウンドモードにあると判断され得る。以下で説明するように、モバイルデバイスがバックグラウンドモードにあるか否かを判断するために追加の入力が使用され得る。
【００６４】
図４に、例示的なデバイスのアプリケーションネットワークアクティビティのグラフ４００を示す。グラフ４００のｘ軸は時間を示し、ｙ軸は、それぞれの時間に転送されるデータの量をバイト単位で示す。グラフ４００に、デバイスがアイドルモードにある約２時間の期間中のネットワークアクティビティを示す。一実施形態では、ユーザがデバイスと対話しないとき、および／またはディスプレイがオフであるとき、デバイスはアイドルモードにある。デバイスはバックグラウンドモードにあるが、動作し続けるアプリケーションは、アクティビティのスパイク、たとえば、スパイク４１０ａ〜ｉを生じる。そのようなアプリケーションは「バックグラウンド」アプリケーションと呼ばれることがある。これらのアプリケーションによるアクティビティは、無線機２１２における無線など、通信リソースを利用し得る。一実施形態では、バックグラウンドモードは「アイドル」モードであり得る。
【００６５】
スパイク４１０ａ〜ｉなどのネットワークアクティビティスパイクにより、ワイヤレスデバイスはアイドルモードから接続モードに遷移され得る。接続モードでは、デバイスは、無線機を起動し得、シグナリングトラフィックを生成し得、アイドルモードにあるときよりも大きい電力量を消費し得る。場合によっては、スパイクは、ワイヤレスデバイスが、接続モードからアイドルモード、または不連続受信（ＤＲＸ：discontinuous reception）モードなどの代替接続モードに遷移するのを防げ得る。ユーザがデバイスをアクティブに操作していないときのアプリケーションによる無線アクティビティのレベルのそのような上昇は、バッテリー寿命の短縮、無線ネットワークの負荷の増加、または他の望ましくない影響をもたらし得る。
【００６６】
本明細書で開示する技法および構造を採用して、デバイスは、バックグラウンドアプリケーションからデータをキャプチャし、無線リソースがアクティブ化され、アプリケーションデータが転送され、タスクが同期方式で実行され得る所望の時点までそれらのデータを保持するためのアプリケーションプログラムインターフェース（ＡＰＩ：application program interface）を与えるソフトウェアレイヤ（「ラッパー」とも呼ばれる）を採用し得る。そのようなタスク／データ要求をアグリゲートすることによって、ユーザがワイヤレスデバイスをアクティブに使用していない期間中に、ワイヤレスデバイスの頻繁な起動が低減され、他の通信リソースが温存され得る。
【００６７】
図５に、アプリケーション通信をアグリゲートするように構成されるハードウェア／ソフトウェアシステム５００の例示的なブロック図を示す。図示のように、ソフトウェア構成要素は、アプリケーションプロセッサ５５０とモデムプロセッサ５６０との間で分割されるが、様々な機能は、図５の例とは別様に編成され得る。たとえば、ソフトウェアとして説明する機能はハードウェアで実装され得、その逆も同様であり、機能は構成要素間で別様に分散されるなどがあり得る。一実施形態では、ハードウェア／ソフトウェアシステム５００は、図１に関して上記で説明した通信管理システム１０８であり得る。別の実施形態では、ハードウェア／ソフトウェアシステム５００は、図２に関して上記で説明したワイヤレスデバイス２００上に実装され得る。たとえば、アプリケーションプロセッサ５５０の機能は、プロセッサ２０２、アプリケーションレイヤモジュール２０６、および／または接続性エンジン２０８のうちの１つまたは複数によって実装され得る。モデムプロセッサ５６０の機能は、ＴＸ／ＲＸ無線機２１２、ネットワーキングモジュール２１０、および／または接続性エンジン２０８のうちの１つまたは複数によって実装され得る。
【００６８】
図示の実施形態では、アプリケーション５０２は、アプリケーション接続エンジン５０８と、高レベルオペレーティングシステム（ＨＬＯＳ：high level operating system）５０６と対話する。ＨＬＯＳ５０６は、たとえば、カリフォルニア州マウンテンビューのＧｏｏｇｌｅ社によって生成されたＡｎｄｒｏｉｄオペレーティングシステムであり得る。アプリケーション接続エンジン５０８はモデム接続エンジン５１０と通信し得る。モデム接続エンジンは、無線機２１２およびその中の無線など、通信リソースを管理し得る。ラッパー５０４は、アプリケーション５０２とＨＬＯＳ５０６との間のデータをキャプチャすることが可能である。ラッパー５０４は、ユーザ非アクティビティ期間中にアプリケーション５０２からのデータをアグリゲートし、それらのデータをＨＬＯＳ５０６にリリースし、動作／送信のために最終的に無線機２１２にリリースする前の判断された時間まで、それらのデータを保持し得る。ラッパー５０４は、アプリケーション５０２に不可視であり得、したがって、アプリケーション５０２は、それらのデータ／要求が保持／アグリゲートされていることに気づかない。一実施形態では、ラッパー５０４は、ＨＬＯＳ５０６の機能をエミュレートし得る。ラッパー５０４は、別個の構成要素であり得るか、またはアプリケーション接続エンジン５０８などの別の構成要素に組み込まれ得る。たとえば、ラッパー５０４は、図２に関して上記で説明した接続性エンジン２０８によって実装され得る。
【００６９】
図６に、図５のハードウェア／ソフトウェアシステム５００によって実装されるアプリケーション通信アグリゲーションの例示的なタイムライン６００を示す。図示のように、アプリケーションＡＰＰ１〜４はそれぞれ、アグリゲーション期間６１０中に連続した無線リソースの使用についての要求を開始する。一実施形態では、アプリケーション通信は、アグリゲーション期間６１０中に遅延され得る。一実施形態では、アグリゲーション期間６１０は、デバイス２００がアイドルモードにある期間を含むことができる。アプリケーションＡＰＰ１〜４は遅延トレラントアプリケーションであり得る。遅延トレラントアプリケーションは、たとえば、電子メールまたはバルクファイル転送など、比較的時間に鈍感なデータを搬送し得る。
【００７０】
図示の実施形態では、アプリケーションＡＰＰ１はｃｏｎｎｅｃｔ（）要求を行う。次いで、アプリケーションＡＰＰ２はｗｒｉｔｅ（）要求を行う。次に、アプリケーションＡＰＰ３はｃｏｎｎｅｃｔ（）要求を行う。最後に、アプリケーションＡＰＰ４はｃｏｎｎｅｃｔ（）要求を行う。ラッパー５０４は、ｃｏｎｎｅｃｔ（）ソケット呼出しとｗｒｉｔｅ（）ソケット呼出しとを受信する。ソケット呼出しに基づいて直ちに作動するのではなく、ラッパー５０４は、アグリゲーション期間６１０中に通信を遅延させる。判断された時間に、ラッパー５０４は、アグリゲートデータ要求６２０としてソケット呼出しを一緒にリリースする。
【００７１】
一実施形態では、ラッパー５０４は、送信ウィンドウ６３０中にアグリゲートデータ要求６２０をリリースし得る。様々な実施形態では、送信ウィンドウ６３０は、デバイス２００がアイドルモードにある期間を含み得、デバイス２００がアクティブモードにある期間を含み得る。送信ウィンドウ６３０中に、ラッパー５０４は、ＡＰＰ１〜４からのアグリゲートデータ要求６２０をリリースし得る。ラッパー５０４はまた、送信ウィンドウ６３０中に行ったアプリケーション通信要求を遅滞なく続行することを許可し得る。言い換えれば、送信ウィンドウ６３０中に、ラッパー５０４はさらなる通信を遅延させないことがある。たとえば、図示の実施形態では、ＡＰＰ５は、送信ウィンドウ６３０中にｃｏｎｎｅｃｔ（）要求を開始する。ラッパー５０４は、ＡＰＰ５のｃｏｎｎｅｃｔ（）要求を遅滞なく続行することを許可する。
【００７２】
一実施形態では、ラッパー５０４は、規則的または不規則な間隔で送信ウィンドウ６３０を開き得る。たとえば、ラッパー５０４は、５分、１０分、１５分、３０分、６０分などの時間ごとに一回送信ウィンドウ６３０を開き得る。別の例では、ラッパー５０４は、ランダムまたは擬似ランダム時間に遅延アプリケーション通信をリリースし得る。ラッパー５０４が送信ウィンドウ６３０を開く間隔は、デバイス２００によって判断されるか、またはサーバ１１０（図１）などの別のデバイスから受信され得る。
【００７３】
一実施形態では、ラッパー５０４は、アグリゲートデータ要求６２０に基づいて、送信ウィンドウ６３０を動的にいつ開くべきかを判断することができる。たとえば、ラッパー５０４は、アグリゲートデータ要求６２０の数がしきい値を上回ったときに送信ウィンドウ６３０を開くことができる。しきい値は、デバイス２００によって判断されるか、またはサーバ１１０などの別のデバイスから受信され得る。
【００７４】
ラッパー５０４は、所定のまたは動的な時間期間の間、送信ウィンドウ６３０を開いたままにしておくことができる。たとえば、ラッパー５０４は、送信ウィンドウ６３０が開かれた後、１５秒、３０秒、１分、５分などの時間の間、送信ウィンドウ６３０を開いたままにしておくことができる。別の例として、ラッパー５０４は、最後のアプリケーション通信が送信された後、１５秒、３０秒、１分、５分などの時間の間、送信ウィンドウ６３０を開いたままにしておくことができる。ラッパー５０４が送信ウィンドウ６３０を開いたままにしておく時間量は、デバイス２００によって判断されるか、またはサーバ１１０などの別のデバイスから受信され得る。
【００７５】
一実施形態では、ラッパー５０４は、遅延イントレラントアプリケーションが通信を開始するとき送信ウィンドウ６３０を開き得る。たとえば、ＡＰＰ５は遅延イントレラントアプリケーションであり得る。したがって、ラッパー５０４は、ｃｏｎｎｅｃｔ（）要求がＡＰＰ４から受信されたとき、送信ウィンドウ６３０を開き得る。ラッパー５０４は、ＡＰＰ４からのｃｏｎｎｅｃｔ（）要求を続行することを許可し得、また、ＡＰＰ１〜４からのアグリゲートデータ要求６２０をリリースし得る。
【００７６】
図７に、別の実施形態による、アプリケーション通信アグリゲーションのタイムライン７００を示す。図示のように、アプリケーションＡＰＰ１〜２はそれぞれ、連続した無線リソースの使用についての要求を開始する。アプリケーションＡＰＰ１〜２は、接続エンジンＡＰＩを介してそれらの遅延トレランスを示し得る。たとえば、アプリケーションＡＰＰ１〜２は、特定の遅延に対してのみ耐性がある動作のバックグラウンドアクティビティおよび／または要件を含み得る。たとえば、アプリケーションＡＰＰ１〜２は、１０秒ごとになど周期的にデバイス２００のロケーションをレポートするロケーショントラッキングアプリケーションであり得る。
【００７７】
図示のように、アプリケーションＡＰＰ１は、通信要求を開始し、ラッパー５０４に、アプリケーションＡＰＰ１がＸ秒の遅延にのみ耐えることを示す。次に、アプリケーションＡＰＰ２は、通信要求を開始し、ラッパー５０４に、アプリケーションＡＰＰ２がＹ秒の遅延にのみ耐えることを示す。ラッパー５０４は、通信が許可されたことをアプリケーションに示し得るコールバック関数（たとえば、ＡＰＩ．Ｇｏ）を与え得る。コールバックを受信した後に、アプリケーションは通信を続行し得る。
【００７８】
図示のように、ラッパー５０４は、Ｘ秒の遅延が経過する前に、アプリケーションＡＰＰ１にＡＰＩ．Ｇｏコールバックを与える。アプリケーションＡＰＰ１は、次いで、さらなる遅延なしにラッパー５０４を通して通信する。同様に、ラッパー５０４は、Ｙ秒の遅延が経過する前に、アプリケーションＡＰＰ２にＡＰＩ．Ｇｏコールバックを与える。アプリケーションＡＰＰ２は、次いで、さらなる遅延なしにラッパー５０４を通して通信する。
【００７９】
代替実施形態では、アプリケーションは、ＡＰＩを介してラッパー５０４に特定の送信デッドラインを与え得る。ラッパー５０４は、与えられたデッドラインの制約内で、アプリケーションからの通信を透過的に遅延させ得る。したがって、ラッパー５０４は、デッドラインより前にアプリケーション通信を続行することを許可することになる。
【００８０】
さらに別の態様では、ＡＰＩはまた、アプリケーションが遅延イントレラントアプリケーションとして登録することを可能にし得る。即時アクセスを要求し得るアプリケーションは、子供追跡アプリケーション、緊急通知アプリケーションなどを含む。一実施形態では、ラッパー５０４は、アプリケーション通信をモニタすることによって、様々なアプリケーションの遅延トレランスを知り得る。別の実施形態では、ラッパー５０４は、デバイス１０２にローカルに記憶されているか、またはサーバ１１０から受信されたリストまたはデータベースからアプリケーション遅延トレランスのリストを受信し得る。リストまたはデータベースは、事業者ポリシーなどの通信アクセスポリシーとともに受信され得る。
【００８１】
ラッパー５０４は、ユーザ中断を低減する形でアプリケーション通信をアグリゲートするか、または遅延させ得る。ラッパー５０４は、アプリケーション通信をいつ遅延させるべきか、またはアプリケーション通信をいつアグリゲートすべきかを判断するために、様々なファクタを分析し得る。たとえば、ラッパー５０４は、ディスプレイ状態（オンまたはオフ）、オーディオ状態（オンまたはオフ）など、ワイヤレスデバイス１０２の特性に基づいてアプリケーション通信を遅延させ得る。ラッパー５０４は、遅延に対して耐性があることが知られているアプリケーション通信のみを遅延させ得る。ラッパー５０４は、無線がロードされていないとき、さもなければワイヤレスデバイスが使用中でない（たとえば、通話、オーディオストリーミングなどがない）ときにアプリケーション通信を遅延させ得る。ラッパー５０４が他の好適なファクタに加えて上記のファクタの任意の組合せに基づいてアプリケーション通信をいつ遅延させるべきかを判断し得ることを、当業者は諒解されよう。
【００８２】
さらに、ラッパー５０４は、遅延またはアグリゲート通信をいつリリースすべきか、および無制限アプリケーション通信をいつ許可すべきかを判断するために、様々なファクタを分析し得る。たとえば、遅延イントレラントアプリケーション（たとえば、緊急通知アプリケーションなど）は無制限アプリケーション通信を開始し得る。無制限アプリケーション通信は、前に遅延またはアグリゲートしたアプリケーション通信をリリースするようにラッパー５０４をトリガし得る。したがって、前に遅延されたアプリケーション通信は、緊急アプリケーションに関連して無線リソースを使用し得る。言い換えれば、ラッパー５０４は、遅延イントレラントアプリケーション通信が開始されたとき、すべてのアプリケーションに対して送信ウィンドウを開き得る。
【００８３】
一実施形態では、ラッパー５０４は、特定の無線がアクティブ化されたか、またはデフォルトとして選択されたとき、遅延またはアグリゲートアプリケーション通信をリリースし得る。特定の無線は、たとえば、Ｗｉ−Ｆｉ無線、セルラー無線、セルラー無線の特定のモード（たとえば、２Ｇまたは３Ｇ通信モード）、ブルートゥース無線などを含み得る。たとえば、ラッパー５０４は、セルラー無線のみが使用可能であるとき、アプリケーション通信を遅延させ得、Ｗｉ−Ｆｉ無線が使用可能であるとき、遅延アプリケーション通信をリリースし得る。
【００８４】
別の実施形態では、ラッパー５０４は、無線チャネル品質がしきい値を上回ったとき、遅延またはアグリゲートアプリケーション通信をリリースし得る。無線チャネル品質は、信号強度、信号対雑音比（ＳＮＲ）などのメトリクスを含み得る。たとえば、ラッパー５０４は、セルラー無線のＳＮＲがしきい値を下回ったとき、アプリケーション通信を遅延させ得、セルラー無線のＳＮＲがしきい値まで上昇したか、それを上回ったとき、遅延アプリケーション通信をリリースし得る。
【００８５】
別の実施形態では、ラッパー５０４は、周期的に、または非連続ウィンドウで遅延またはアグリゲートアプリケーション通信をリリースし得る。たとえば、ラッパー５０４は、１５分ごとに遅延アプリケーション通信をリリースし得る。別の例では、ラッパー５０４は、１５〜２０分ごとのランダムまたは擬似ランダム時間に遅延アプリケーション通信をリリースし得る。
【００８６】
一実施形態では、ラッパー５０４は、ユーザ対話が受信されたとき、遅延またはアグリゲートアプリケーション通信をリリースする。たとえば、ラッパー５０４は、ディスプレイがアクティブ化された、ボタン押下が検出されたなどのとき、遅延アプリケーション通信をリリースし得る。別の実施形態では、ワイヤレスデバイス１０２はユーザ対話を予期し得る。たとえば、ワイヤレスデバイス１０２は、ワイヤレスデバイス１０２の移動を検出し得る加速度計を含み得る。ラッパー５０４は、加速度計出力が緊急のユーザ対話の可能性を示すとき、遅延アプリケーション通信をリリースし得る。別の例では、ワイヤレスデバイス１０２は、近傍検出器を介したユーザ対話を予期し得る。ラッパー５０４が上記の任意の組合せに応答して、さらに任意の他の好適なイベントに応答して遅延アプリケーション通信をリリースし得ることを、当業者は諒解されよう。
【００８７】
上記の説明は、ＡＰＩに関するアプリケーション通信アグリゲーションおよび遅延について説明するが、概念は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの任意の組合せにおいて等しく適用される。
【００８８】
同期ポリシー  
一実施形態では、通信管理システム１０８（図１）は、サーバ１１０から通信アクセスポリシーを受信し得る。アグリゲーション期間６１０（図６）および送信ウィンドウ６３０中にアプリケーション通信をそれぞれ遅延およびリリースするとき、通信アクセスポリシーは、接続性エンジン２０８（図２）によって使用される事業者ポリシーを含み得る。様々な実施形態では、通信アクセスポリシーは、アグリゲーション期間６１０中にアプリケーション通信がどのくらい長く遅延され得るかを示すタイミング情報、通信が遅延され得るアプリケーションのリスト（「包含リスト」）、通信が遅延されないことがあるアプリケーションのリスト（「除外リスト」）、通信が遅延され得るか、または遅延されないことがある通信タイプのリスト、通信が遅延され得るか、または遅延されないことがあるネットワーク状態のリスト、ラッパー５０４が送信ウィンドウ６３０を開くべきであるか、または閉じるべきであるイベントまたはトリガのリスト、通信が遅延され得るか、または遅延されないことがある時間の指示、通信が遅延され得るか、または遅延されないことがあるロケーションの指示、デバイス２００がサーバ１１０に更新通信アクセスポリシーをどのくらいの頻度で要求すべきか、通信が遅延され得る無線アクセス技術（ＲＡＴ）のリストなどのうちの１つのまたは複数を含むことができる。
【００８９】
一実施形態では、通信タイプは、たとえば、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）など、１つまたは複数のソケット動作を含むことができる。通信タイプは、たとえば、会話トラフィック、ベストエフォートトラフィック、および緊急トラフィックなど、トラフィックタイプの分類をさらに含むことができる。会話トラフィックは、間欠一方向または双方向通信を表す通信、および／または、たとえば、テキストチャットトラフィック、ボイスチャットトラフィック、ビデオチャットトラフィック、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂトラフィック（たとえば、マッピングおよびナビゲーション機能）などの対話型コンテンツを含むことができる。ベストエフォートトラフィックは、たとえば、バルクデータ転送（たとえば、ファイル転送プロトコル（ＦＴＰ）トラフィック）、電子メール、ビデオプリローディングなど、比較的低優先度のおよび／または非対話型のトラフィックを含むことができる。緊急通信は、たとえば、子供追跡位置データ、時間的制約のある警報トラフィック、緊急ボイストラフィックなど、比較的高優先度のトラフィックを含むことができる。さらに、通信タイプは、たとえば、ソースＩＰアドレス、宛先ＩＰアドレス、ソースポート、宛先ポートなど、ＩＰヘッダ中に一般に含まれている情報に基づき得る。
【００９０】
一実施形態では、通信アクセスポリシーは、送信トリガまたはイベントがない場合にラッパー５４０が送信ウィンドウ６３０をどのくらいの頻度で開くべきかを示す同期周波数を含むことができる。たとえば、通信アクセスポリシーは、ラッパー５４０が、少なくとも５分、１０分、１５分、３０分、６０分などの時間ごとに送信ウィンドウ６３０を開くべきであることを示し得る。一実施形態では、通信アクセスポリシーは、ラッパー５０４が送信ウィンドウ６３０を開くべきである、アグリゲートデータ要求のしきい値量を含むことができる。たとえば、通信アクセスポリシーは、しきい値時間量の間にアグリゲートデータ要求６２０の量が無線２１２を占有するのに十分であるとき、ラッパー５４０が送信ウィンドウ６３０を開くべきであることを示し得る。別の例として、ラッパーは、通信が遅延されるアプリケーションの数がしきい値よりも多い場合、ゲートを開くことができる。一実施形態では、通信アクセスポリシーはしきい値を含むことができる。別の例として、ラッパーは、通信が遅延されるソケット呼出しの数がしきい値よりも大きい場合、ゲートを開くことができる。一実施形態では、通信アクセスポリシーはしきい値を含むことができる。
【００９１】
一実施形態では、通信アクセスポリシーは、サーバ１１０からのアプリケーション遅延トレランスのリストを含むことができる。アプリケーション遅延トレランスのリストは、「除外リスト」と呼ばれることがある、遅延イントレラントアプリケーションのリストを含み得る。ラッパー５０４（図５）は、アグリゲーションから、除外リスト中で識別されたアプリケーションを除外し得る。同様に、アプリケーション遅延トレランスのリストは、「包含リスト」と呼ばれることがある、遅延トレラントアプリケーションのリストを含み得る。ラッパー５０４は、アプリケーション通信をアグリゲートするとき、包含リスト中で識別されたアプリケーションを含め得る
一実施形態では、ラッパー５０４は、デフォルトでアプリケーションを除外し得、特に包含リスト中で識別されたアプリケーションのためのアプリケーション通信のみを遅延させ得る。包含リストは、たとえば、アプリケーション名を表す文字列、数値識別子、バージョン番号、著者識別情報、またはそれらの任意の組合せなど、アプリケーション識別子を含み得る。一実施形態では、包含リストおよび／または除外リストは、個々のソケット動作によって表される通信タイプを含む精度（granularity）上でのアプリケーション通信を識別することができる。たとえば、包含リストは、アプリケーション「アプリケーションＡ」からのｃｏｎｎｅｃｔ（）動作を遅延トレラントソケット動作として識別し得る。したがって、ラッパー５０４は、「アプリケーションＡ」からのｃｏｎｎｅｃｔ（）動作をアグリゲートし得るが、「アプリケーションＡ」からの、たとえば、ｗｒｉｔｅ（）動作をアグリゲートしないことがある。一方、ラッパー５０４は、「アプリケーションＢ」からのｃｏｎｎｅｃｔ（）動作をアグリゲートしないことがあるが、「アプリケーションＢ」からの、たとえば、ｗｒｉｔｅ（）動作をアグリゲートし得る。リストは、アプリケーション識別子、ソケット動作などの他の組合せを含むことができることを、当業者は諒解されよう。
【００９２】
一実施形態では、通信アクセスポリシーは、通信が遅延され得るか、または遅延されないことがあるネットワーク状態の指示を含む。たとえば、通信アクセスポリシーは、ラッパー５０４がアグリゲーション期間６１０および／または送信ウィンドウ６３０を調整することになることに基づいて、無線トラフィックのしきい値量を含むことができる。一実施形態では、ラッパー５０４は、ネットワークトラフィックの量が通信アクセスポリシーにおいて指定されているしきい値を下回るとき、送信ウィンドウ６３０を開くことができる。
【００９３】
一実施形態では、通信アクセスポリシーは、ラッパー５０４が送信ウィンドウ６３０を開くべきであるか、または閉じるべきであるイベントまたはトリガのリストを含む。たとえば、通信アクセスポリシーは、包含リスト上にないアプリケーションおよび／またはソケット呼出しがデータを転送しようと試みるとき、ラッパー５０４が送信ウィンドウ６３０を開くべきであることを示し得る。別の例として、通信アクセスポリシーは、除外リスト上のアプリケーションおよび／またはソケット呼出しがデータを転送しようと試みるとき、ラッパー５０４が送信ウィンドウ６３０を開くべきであることを示し得る。別の例として、通信アクセスポリシーは、包含リスト上のアプリケーションおよび／またはソケット呼出しのみがデータを転送しようと試みるとき、ラッパー５０４が送信ウィンドウ６３０を閉じるべきであることを示し得る。
【００９４】
一実施形態では、通信アクセスポリシーは、デバイス２００がアクティブモードに入るとき、ラッパー５０４が送信ウィンドウ６３０を開くべきであることを示し得る。たとえば、通信アクセスポリシーは、ユーザインターフェース８２２（図８）が入力を受信するとき、ラッパー５０４が送信ウィンドウ６３０を開くべきであることを示し得る。別の実施形態では、ラッパー５０４は、デバイス２００がアクティブモードに入るとき、送信ウィンドウ６３０を開かないことがあるが、さもなければ、デバイス２００がアクティブモードにあるとき、ラッパー５０４を無効化するか、および／または通信を遅延させるのを停止し得る。
【００９５】
一実施形態では、通信アクセスポリシーは、ラッパー５０４がアプリケーション通信を遅延させるべきか、または遅延させるべきでない時間、日付、および／またはロケーションのリストを含む。たとえば、通信アクセスポリシーは、ある時間または日の間、ある曜日の間、デバイス２００がある都市または国にあるときなどに、ラッパー５０４が通信を遅延させるべきであることか、または遅延させるべきでないことを示し得る。様々な実施形態では、時間、日付、および／またはロケーションポリシーは、１つまたは複数の特定のアプリケーションおよび／またはソケット動作に固有の精度で指定され得る。
【００９６】
一実施形態では、サーバ１１０は、通信ネットワーク１０４の状態に関する情報を受信することができる。たとえば、サーバ１１０は、通信ネットワーク１０４中のネットワークアドレス変換（ＮＡＴ：Network Address Translation）テーブルがそれらの記録をどのくらい長く維持するかを判断することができる。サーバ１１０は、アプリケーションがそれらのＮＡＴエントリをリフレッシュすること、それらの接続を有効に保つことなどを行うのに十分な周波数をもつ送信ウィンドウ６３０をラッパー５０４が開くべきであることを示すように通信アクセスポリシーを調整することができる。
【００９７】
様々な実施形態では、通信アクセスポリシーは、上述のタイミング情報、アプリケーションリスト、通信タイプ、ネットワーク状態などの２つ以上のアクセス基準を組み合わせることができる。たとえば、通信アクセスポリシーは、デバイス８０２が待機状態にあるとき、ポート８０へのすべてのトラフィックが最長５分だけ遅延され得ることを示すことができる。別の例として、通信アクセスポリシーは、デバイス８０２が待機状態にあるとき、ＷＬＡＮインターフェースのみが使用され得ることを示すことができる。別の例として、通信アクセスポリシーは、デバイス８０２が待機状態にある間、「アプリケーションＸ」からの「ｃｏｎｎｅｃｔ（）」ソケット呼出しが遅延なしに完了し得ることを示すことができる。同時に、通信アクセスポリシーは、デバイス８０２が待機状態にある間、「アプリケーションＹ」からの「ｃｏｎｎｅｃｔ（）」ソケット呼出しと「ｗｒｉｔｅ（）」ソケット呼出しとが遅延され得ることを示すことができる。同様に、通信アクセスポリシーは、たとえば、どのソケット動作が試みられているのか、試みられている通信のソースポートおよび／または宛先ポート、宛先ＩＰアドレスなど、他の遅延基準を組み込むことができる。別の例として、通信アクセスポリシーは、無線アクセス技術が高速パケットアクセス（ＨＳＰＡ：High Speed Packet Access）であるとき、通信が遅延され得るが、無線アクセス技術がＬＴＥであるとき、通信が遅延されないことがあることを示すことができる。通信アクセスポリシーの上述の態様が様々な方法で組み合わされ得ることを当業者は理解されよう。
【００９８】
図８に、通信アクセスポリシーを実装するように構成される例示的なデバイス８０２を示す。デバイスは、図１に関して上記で説明したネットワーク環境１００内に採用され得る。デバイス８０２は、本明細書で説明する様々な方法を実装するように構成され得るデバイスの一例である。たとえば、デバイス８０２は、ワイヤレスデバイス１０２の１つまたは複数の機能を実装し得る。別の実施形態では、デバイス８０２は、サーバ１１０の１つまたは複数の機能を実装し得る。
【００９９】
デバイス８０２は、デバイス８０２の動作を制御するプロセッサ８０４を含み得る。プロセッサ８０４は中央処理ユニット（ＣＰＵ）と呼ばれることもある。読取り専用メモリ（ＲＯＭ）とランダムアクセスメモリ（ＲＡＭ）の両方を含み得るメモリ８０６は、命令とデータとをプロセッサ８０４に与える。メモリ８０６の一部分は不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）をも含み得る。プロセッサ８０４は、メモリ８０６内に記憶されたプログラム命令に基づいて、論理および演算動作を実行し得る。メモリ８０６中の命令は、本明細書で説明する方法を実装するように実行可能であり得る。
【０１００】
デバイス８０２がワイヤレスデバイス１０２として実装されるか、または使用されるとき、プロセッサ８０４は、メモリ８０６に記憶され得る１つまたは複数のアプリケーションを実行するように構成され得る。実行中に、アプリケーションは、トランシーバ８１４、送信機８１０、および／または受信機８１２を介した通信を開始し得る。プロセッサ８０４は、図５に関して上記で説明したハードウェア／ソフトウェアシステム５００を実装し得る。したがって、プロセッサ８０４は、実行されたアプリケーションの通信をモニタし、通信統計値を記録し、受信機８１２を介して通信アクセスポリシーを受信し得、メモリ８０６に通信アクセスポリシーを記憶し得る。プロセッサ８０４は、図６〜図７に関して上記で説明したように通信アクセスポリシーを実装し得る。
【０１０１】
プロセッサ８０４は、１つまたは複数のプロセッサとともに実装された処理システムを備えるか、またはそれの構成要素であり得る。１つまたは複数のプロセッサは、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理デバイス（ＰＬＤ）、コントローラ、状態機械、ゲート論理、個別ハードウェア構成要素、専用ハードウェア有限状態機械、あるいは情報の計算または他の操作を実行し得る任意の他の好適なエンティティの任意の組合せを用いて実装され得る。
【０１０２】
処理システムは、ソフトウェアを記憶するための機械可読媒体をも含み得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、任意のタイプの命令を意味すると広く解釈されたい。命令は、（たとえば、ソースコード形式、バイナリコード形式、実行可能コード形式、または任意の他の好適なコード形式の）コードを含み得る。命令は、１つまたは複数のプロセッサによって実行されたとき、本明細書で説明する様々な機能を処理システムに実行させる。
【０１０３】
デバイス８０２はまた、デバイス８０２と遠隔ロケーションとの間のデータの送信および受信を可能にするために送信機８１０および／または受信機８１２を含み得るハウジング８０８を含み得る。送信機８１０と受信機８１２とは組み合わされてトランシーバ８１４になり得る。アンテナ８１６は、ハウジング８０８に取り付けられ、トランシーバ８１４に電気的に結合され得る。いくつかの実施形態では、アンテナ８１６は省略され得、デバイス８０２はワイヤード通信のために構成され得る。デバイス８０２は、複数の送信機、複数の受信機、複数のトランシーバ、および／または複数のアンテナをも含み得る（図示せず）。
【０１０４】
デバイス８０２はまた、トランシーバ８１４によって受信された信号のレベルを検出し、定量化するために使用され得る信号検出器８１８を含み得る。信号検出器８１８は、総エネルギー、シンボルごとのサブキャリア当たりのエネルギー、電力スペクトル密度および他の信号などの信号を検出し得る。デバイス８０２は、信号を処理する際に使用するデジタル信号プロセッサ（ＤＳＰ）８２０をも含み得る。ＤＳＰ８２０は、送信のためのパケットを生成するように構成され得る。いくつかの態様では、パケットは物理レイヤデータユニット（ＰＰＤＵ：physical layer data unit）を備え得る。
【０１０５】
デバイス８０２は、いくつかの態様ではユーザインターフェース８２２をさらに備え得る。ユーザインターフェース８２２は、近傍検出器、１つまたは複数の入力ボタン、キーパッド、マイクロフォン、スピーカー、インターフェースポート（たとえば、ユニバーサルシリアルバス（ＵＳＢ）ポート、高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））ポートなど）、タッチスクリーン、ネットワークインターフェース、および／またはディスプレイを備え得る。ユーザインターフェース８２２は、デバイス８０２のユーザに情報を伝達し、および／またはユーザからの入力を受信する、任意の要素または構成要素を含み得る。一実施形態では、ユーザインターフェース８２２は、それが（たとえば、ＵＳＢポート、ネットワークインターフェースから、ディスプレイに、マイクロフォンからなど）入力を受信しているか、または出力を送信しているとき、アクティブであると見なされ得る。ユーザインターフェース８２２はまた、それがしきい値時間期間（たとえば、１秒、１分、５分など）の内に入力を受信したか、または出力を送信したとき、アクティブであると見なされ得る。ユーザインターフェース８２２は、それがアクティブでないとき、非アクティブまたはアイドルであると見なされ得る。
【０１０６】
ユーザインターフェース８２２が入力を受信しないとき、デバイス８０２は、バックグラウンド状態またはアイドルモードにあると言われ得る。バックグラウンド状態では、ディスプレイはオフであり得、デバイス８０２の１つまたは複数の機能は無効にされ得る。一実施形態では、ユーザインターフェース８２２入力に応答して開始されない、デバイス８０２のプロセスおよび通信は、バックグラウンドまたはアイドルプロセスまたは通信と呼ばれることがある。
【０１０７】
ユーザインターフェース８２２が入力を受信するとき、デバイス８０２は、フォアグラウンド状態またはアクティブモードにあると言われ得る。フォアグラウンド状態では、ディスプレイはオンであり得、入力は入力アイドル期間内に受信されていることがある。入力アイドル期間は、構成可能であり得、たとえば、１分であり得る。一実施形態では、バックグラウンドプロセスおよび通信は、アクティブモードで行われ得るが、ユーザインターフェース８２２入力に直接応答して開始されないことがある。
【０１０８】
デバイス８０２の様々な構成要素は、バスシステム８２６によって互いに結合され得る。バスシステム８２６は、データバスを含み、ならびに、たとえば、データバスに加えて、電力バス、制御信号バス、およびステータス信号バスを含み得る。デバイス８０２の構成要素は、何らかの他の機構を使用して、互いに結合されるかあるいは互いに入力を受け付けるかまたは与え得ることを、当業者は諒解されよう。
【０１０９】
図８には、いくつかの別個の構成要素が示されているが、構成要素のうちの１つまたは複数が組み合わせられ得るかまたは共通に実装され得ることを当業者は認識されよう。たとえば、プロセッサ８０４は、プロセッサ８０４に関して上記で説明した機能を実装するためだけでなく、信号検出器８１８および／またはＤＳＰ８２０に関して上記で説明した機能を実装するためにも使用され得る。さらに、図８に示す構成要素の各々は、複数の別個の要素を使用して実装され得る。
【０１１０】
図９に、通信統計値を収集する例示的な方法のフローチャート９００を示す。本明細書では、図８に関して上記で説明したデバイス８０２に関してフローチャート９００の方法について説明するが、フローチャート９００の方法は、図１に関して上記で説明したワイヤレスデバイス１０２、図２に関して上記で説明したワイヤレスデバイス２０２、および／または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート９００内のステップは、送信機８１０、受信機８１２、メモリ８０６、およびユーザインターフェース８２２とともに、プロセッサ８０５によって実行され得る。本明細書では、フローチャート９００の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
【０１１１】
最初に、ブロック９０５において、デバイス８０２は、受信機８１２を介して無視リストを受信する。プロセッサ８０４は、メモリ８０６に無視リストを記憶し得る。一実施形態では、デバイス８０２は、サーバ１１０から無視リストを受信する。一実施形態では、無視リストは、デバイス８０２上に事前プロビジョニングされ得る。図８に関して上記で説明したように、無視リストは、デバイス８０２が通信統計値をモニタまたは記録すべきでない１つまたは複数のアプリケーションを指定し得る。様々な実施形態では、デバイス８０２はまた、包含リストおよび／または除外リストなど、サーバ１１０から他の情報を受信し得る。
【０１１２】
次に、ブロック９１０において、プロセッサ８０４は、プロセッサ８０４上で実行されるアプリケーションからの１つまたは複数の通信をインターセプトする。プロセッサ８０４は、通信管理システム１０８および／または接続性エンジン２０８に関して上記で説明した機能を介して通信をインターセプトし得る。一実施形態では、ＤＳＰ８２０、信号検出器８１８、送信機８１０、および／またはトランシーバ８１４は通信をインターセプトし得る。
【０１１３】
次いで、ブロック９１５において、プロセッサ８０４はデバイス状態を判断する。デバイスは、バックグラウンド状態とフォアグラウンド状態とを含み得る少なくとも２つの状態のうちの１つにあり得る。プロセッサ８０４は、ユーザインターフェース８２２を介してデバイスの状態を判断し得る。
【０１１４】
その後、ブロック９２０において、プロセッサ８０４は、デバイスがバックグラウンド状態にあるかどうかを判断する。デバイスがフォアグラウンド状態にある場合、プロセッサ８０４は、通信統計値を記録せず、ブロック９２５においてさらなる通信を待つ。デバイスがバックグラウンド状態にある場合、プロセッサ８０４はブロック９３０に進む。
【０１１５】
一実施形態では、ブロック９２０において、プロセッサ８０４は、インターセプトされた通信がバックグラウンド通信であるかどうかを判断する。インターセプトされた通信がバックグラウンド通信でない場合、プロセッサ８０４は、通信統計値を記録せず、ブロック９２５においてさらなる通信を待つ。インターセプトされた通信がバックグラウンド通信である場合、プロセッサ８０４はブロック９３０に進む。
【０１１６】
その後、ブロック９３０において、プロセッサ８０４は、インターセプトされた通信に関連するアプリケーションが、サーバ１１０から受信された無視リスト上にあるかどうかを判断する。インターセプトされた通信を生成したアプリケーションが無視リスト上にある場合、プロセッサ８０４は、通信統計値を記録せず、ブロック９２５においてさらなる通信を待つ。インターセプトされた通信を生成したアプリケーションが無視リスト上にない場合、プロセッサ８０４はブロック９３５に進む。
【０１１７】
その後、ブロック９３５において、プロセッサ８０４は、インターセプトされたアプリケーション通信に基づいて１つまたは複数の通信統計値を記録する。通信統計値は、たとえば、アイドルモード中にアクティブであるアプリケーションのアプリケーション識別子（たとえば、完全または部分名、あるいは数値識別子）、アプリケーションによって転送されるデータの量、アプリケーションが何個の接続を開始したか、アプリケーションによって行われた伝送制御プロトコル（ＴＣＰ）要求の数、送られたユーザデータグラムプロトコル（ＵＤＰ）パケットの数、送られたドメインネームサービス（ＤＮＳ）要求の数などを含み得る。ＴＣＰ要求統計値は、「ｃｏｎｎｅｃｔ」「ｗｒｉｔｅ」、「ＦＩＮ」、「ＲＳＴ」などの特定の要求に関する統計値を含み得る。通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差などの計算された統計値を含み得る。通信統計値はまた、たとえば、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイス８０２のロケーションなど、追加情報を含み得る。プロセッサ８０４は、メモリ８０６に、記録された通信統計値を記憶し得、ＤＳＰ８２０を介して、記録された通信統計値を圧縮するか、暗号化するか、またはさもなければ符号化し得る。
【０１１８】
次に、ブロック９４０において、プロセッサ８０４は、累積通信統計値をレポートすべきかどうかを判断する。プロセッサ８０４は、サーバ１１０に通信統計値をレポートすることをプロセッサ８０４に行わせることになる、記録された統計値のしきい値数などのレポート基準を判断し得る。一実施形態では、プロセッサ８０４は、１時間ごと、１日ごと、１週間ごと、１月ごとなど周期的に、記録された通信統計値をレポートし得る。一実施形態では、プロセッサ８０４は、記録された統計値の数がしきい値に達したとき、および／または記録された統計値のサイズがしきい値に達したとき、記録された通信統計値をレポートし得る。一実施形態では、プロセッサ８０４は、指定された無線、たとえば、Ｗｉ−Ｆｉまたはセルラー無線が使用可能であるときにのみ、統計値をレポートし得る。プロセッサ８０４は、上述のレポート基準のうちの１つまたは複数を組み合わせるか、または追加の基準を使用し得る。一実施形態では、プロセッサ８０４は、サーバ１１０から通信統計値をどのようにおよびいつレポートすべきかに関する命令を受信し得る。プロセッサ８０４は、レポート基準が満たされていないと判断した場合、プロセッサは、記録された通信統計値をレポートせず、ブロック９２５において待つ。プロセッサ８０４は、レポート基準が満たされたと判断した場合、プロセッサはブロック９４５に進む。
【０１１９】
最後に、ブロック９４５において、プロセッサ８０４は、送信機８１０および／またはトランシーバ８１４を介して、記録された通信統計値をサーバ１１０に送る。プロセッサ８０４は、ＨＴＴＰ  ＰＯＳＴ方法を介して、ファイル転送プロトコル（ＦＴＰ）転送を介して、電子メールとして、または任意の他の通信手段を介して、記録された通信統計値を送り得る。プロセッサ８０４が、記録された通信統計値をサーバ１１０に送った後、プロセッサ８０４は、メモリ８０６から記録された通信統計値を削除し得るか、または後で使用するために、記録された通信統計値を保持し得る。記録された通信統計値をサーバ１１０に送ると、プロセッサ８０４はサーバ１１０から応答を受信し得、その応答は、無視リストと、除外リストと、包含リストと、通信統計値をいつレポートすべきかに関する命令のリストと、通信統計値をどのように記録すべきかに関する命令のリストとのうちの１つまたは複数を含み得る。
【０１２０】
図１０に、通信統計値を分析する例示的な方法のフローチャート１０００を示す。本明細書では、図８に関して上記で説明したデバイス８０２に関してフローチャート１００の方法について説明するが、フローチャート１００の方法は、図１に関して上記で説明したサーバ１１０または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート１０００内のステップは、送信機８１０、受信機８１２、およびメモリ８０６とともに、プロセッサ８０５によって実行され得る。本明細書では、フローチャート１０００の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
【０１２１】
最初に、ブロック１００５において、プロセッサ８０４は、ワイヤレスデバイス１０２から通信統計値を受信する。通信統計値は、たとえば、アプリケーション識別子（たとえば、完全または部分名、あるいは数値識別子）、アプリケーションによって行われた伝送制御プロトコル（ＴＣＰ）要求の数、送られたユーザデータグラムプロトコル（ＵＤＰ）パケットの数、送られたドメインネームサービス（ＤＮＳ）要求の数などを含み得る。ＴＣＰ要求統計値は、「ｃｏｎｎｅｃｔ」「ｗｒｉｔｅ」、「ＦＩＮ」、「ＲＳＴ」などの特定の要求に関する統計値を含み得る。通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差などの計算された統計値を含み得る。通信統計値はまた、たとえば、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイス８０２のロケーションなど、追加情報を含み得る。プロセッサ８０４は、メモリ８０６に、受信された通信統計値を記憶し得、ＤＳＰ８２０を介して、受信された通信統計値を圧縮するか、暗号化するか、またはさもなければ符号化し得る。
【０１２２】
次に、ブロック１０１０において、プロセッサ８０４は無視リストを生成する。プロセッサ８０４は、デバイス１０２からの受信された通信統計値ならびに／あるいは他の時間におよび／または他のデバイスから受信された通信統計値に基づいて無視リストを生成し得る。たとえば、プロセッサ８０４は、アプリケーションのための通信統計値のしきい値数を受信すると、無視リストにそのアプリケーション識別子を追加し得る。一実施形態では、無視リストには、すでに分析されているアプリケーションが最初にシードされ得る。プロセッサ８０４は、時々、アプリケーション通信ビヘイビアが時間とともに変化したかどうかを知るために、無視リストから１つまたは複数のアプリケーション識別子を除去し得る。
【０１２３】
次いで、ブロック１０１５において、プロセッサ８０４は包含リストを生成する。プロセッサ８０４は、デバイス１０２からの受信された通信統計値ならびに／あるいは他の時間におよび／または他のデバイスから受信された通信統計値に基づいて包含リストを生成し得る。たとえば、アプリケーションによる通信試みの記録数がしきい値を下回ると、プロセッサ８０４は、包含リストにアプリケーション識別子を追加し得る。一実施形態では、包含リストには、遅延トレラントであると判断されているアプリケーションが最初にシードされ得る。たとえば、受信された通信統計値は、アプリケーションが遅延イントレラントであることを示した場合、プロセッサ８０４は、包含リストから１つまたは複数のアプリケーション識別子を除去し得る。
【０１２４】
その後、ブロック１０２０において、プロセッサ８０４は除外リストを生成する。プロセッサ８０４は、デバイス１０２からの受信された通信統計値ならびに／あるいは他の時間におよび／または他のデバイスから受信された通信統計値に基づいて除外リストを生成し得る。たとえば、アプリケーションによる通信試みの記録数がしきい値を上回ると、プロセッサ８０４は、除外リストにアプリケーション識別子を追加し得る。一実施形態では、除外リストには、すでに遅延イントレラントであると判断されているアプリケーションが最初にシードされ得る。たとえば、受信された通信統計値は、アプリケーションが遅延トレラントであることを示した場合、プロセッサ８０４は、除外リストから１つまたは複数のアプリケーション識別子を除去し得る。
【０１２５】
その後、ブロック１０２５において、プロセッサ８０４は検討リストを生成する。プロセッサ８０４は、デバイス１０２からの受信された通信統計値ならびに／あるいは他の時間におよび／または他のデバイスから受信された通信統計値に基づいて検討リストを生成し得る。たとえば、アプリケーションによる通信試みの記録数がしきい値を下回ると、プロセッサ８０４は、検討リストにアプリケーション識別子を追加し得る。一実施形態では、検討リストは、包含リストのプリカーサー（precursor）であり得る。たとえば、プロセッサ８０４は、さらなる分析のために検討リストに候補アプリケーションを追加し得る。さらなる分析は、プロセッサ８０４によって、および／またはユーザインターフェース８２２を介して手動で実行され得る。一実施形態では、プロセッサ８０４は、ユーザインターフェース８２２からの信号に従って検討リストから包含リストにアプリケーションを移動し得る。
【０１２６】
最後に、ブロック１０３５において、プロセッサ８０４は、送信機８１０および／またはトランシーバ８１４を介して、ワイヤレスデバイス１０２に上述のリストのうちの１つまたは複数を送信する。プロセッサ８０４は、たとえば、ＨＴＴＰ  ＰＯＳＴ応答を介して受信された通信統計値に応答してリストを送信し得る。一実施形態では、プロセッサ８０４は、ワイヤレスデバイス１０２にリストをプッシュし得る。上述のリストに加えて、プロセッサ８０４は、通信統計値をいつレポートすべきかに関する命令のリストおよび／または通信統計値をどのように記録すべきかに関する命令のリストを送信し得る。
【０１２７】
図１１に、通信統計値を収集する例示的な方法のフローチャート１１００を示す。本明細書では、図８に関して上記で説明したデバイス８０２に関してフローチャート１１００の方法について説明するが、フローチャート１１００の方法は、図１に関して上記で説明したワイヤレスデバイス１０２、図２に関して上記で説明したワイヤレスデバイス２０２、および／または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート１１００内のステップは、送信機８１０、受信機８１２、メモリ８０６、およびユーザインターフェース８２２とともに、プロセッサ８０５によって実行され得る。本明細書では、フローチャート１１００の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
【０１２８】
最初に、ブロック１１０５において、デバイス８０２は、受信機８１２を介して無視リストを受信する。プロセッサ８０４は、メモリ８０６に無視リストを記憶し得る。一実施形態では、デバイス８０２は、サーバ１１０から無視リストを受信する。図８に関して上記で説明したように、無視リストは、デバイス８０２が通信統計値をモニタまたは記録すべきでない１つまたは複数のアプリケーションを指定し得る。様々な実施形態では、デバイス８０２はまた、包含リストおよび／または除外リストなど、サーバ１１０から他の情報を受信し得る。
【０１２９】
次に、ブロック１１１０において、プロセッサ８０４は、プロセッサ８０４上で実行されるアプリケーションからの１つまたは複数の通信をインターセプトする。プロセッサ８０４は、通信管理システム１０８および／または接続性エンジン２０８に関して上記で説明した機能を介して通信をインターセプトし得る。一実施形態では、ＤＳＰ８２０、信号検出器８１８、送信機８１０、および／またはトランシーバ８１４は通信をインターセプトし得る。
【０１３０】
その後、ブロック１１１５において、プロセッサ８０４は、インターセプトされた通信に関連するアプリケーションが、サーバ１１０から受信された無視リスト上にあるかどうかを判断する。インターセプトされた通信を生成したアプリケーションが無視リスト上にある場合、プロセッサ８０４は、通信統計値を記録せず、ブロック１１２０においてさらなる通信を待つ。インターセプトされた通信を生成したアプリケーションが無視リスト上にない場合、プロセッサ８０４はブロック１１２５に進む。
【０１３１】
次いで、ブロック１１２５において、プロセッサ８０４はデバイス８０２の状態を判断する。ユーザインターフェース８２６は、バックグラウンド状態とフォアグラウンド状態とを含み得る少なくとも２つの状態のうちの１つにあり得る。プロセッサ８０４は、ユーザインターフェース８２６への１つまたは複数の入力の存在または不在に基づいてユーザインターフェース８２２の状態を判断し得る。一実施形態では、プロセッサ８０４は、インターセプトされたものが、ユーザインターフェース８２２を介した入力に応答して生成されたものではなく、アプリケーションによって自動的に生成されたバックグラウンド通信であるかどうかを判断し得る。
【０１３２】
その後、ブロック１１３０において、プロセッサ８０４はネットワークインターフェースの状態を判断する。一実施形態では、ネットワークインターフェースは、トランシーバ８１４、送信機８１０、および／または受信機８１２を含むことができる。ネットワークインターフェースは、バックグラウンド状態とフォアグラウンド状態とを含み得る少なくとも２つの状態のうちの１つにあり得る。プロセッサ８０４は、トランシーバ８１４の無線電力および／または接続状態に基づいてユーザインターフェース８２２の状態を判断し得る。一実施形態では、プロセッサ８０４は、複数のネットワークインターフェース状態を判断し得る。
【０１３３】
その後、ブロック１１３５において、プロセッサ８０４は、インターセプトされたアプリケーション通信に基づいて１つまたは複数の通信統計値を記録する。通信統計値は、たとえば、バックグラウンドモード中にアクティブであるアプリケーションのアプリケーション識別子（たとえば、完全または部分名、あるいは数値識別子）、アプリケーションによって転送されるデータの量、アプリケーションが何個の接続を開始したか、アプリケーションによって行われた伝送制御プロトコル（ＴＣＰ）要求の数、送られたユーザデータグラムプロトコル（ＵＤＰ）パケットの数、送られたドメインネームサービス（ＤＮＳ）要求の数などを含み得る。ＴＣＰ要求統計値は、「ｃｏｎｎｅｃｔ」「ｗｒｉｔｅ」、「ＦＩＮ」、「ＲＳＴ」などの特定の要求に関する統計値を含み得る。通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差などの計算された統計値を含み得る。通信統計値はまた、たとえば、デバイス識別子、ＳＩＭカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイス８０２のロケーションなど、追加情報を含み得る。
【０１３４】
プロセッサ８０４は、メモリ８０６に、記録された通信統計値を記憶し得、ＤＳＰ８２０を介して、記録された通信統計値を圧縮するか、暗号化するか、またはさもなければ符号化し得る。プロセッサ８０４は、ユーザインターフェース８２６および／またはネットワークインターフェースの状態に基づいて、通信統計値を別個に記憶し得る。たとえば、プロセッサ８０４は、アクティブなユーザインターフェース８２６およびアクティブなネットワークインターフェース、アクティブなユーザインターフェース８２６および非アクティブなネットワークインターフェース、非アクティブなユーザインターフェース８２６およびアクティブなネットワークインターフェース、ならびに／または非アクティブなユーザインターフェース８２６および非アクティブなネットワークインターフェースといったワイヤレスデバイス８０２の状態ごとに別個に通信統計値を記憶し得る。本明細書で使用するプロセッサ８０４は、複数の異なるデータベースを維持すること、各通信統計値をユーザインターフェース８２６および／またはネットワークインターフェースの状態にタグ付けすることなどによって、通信統計値を「別個に」記憶し得る。通信統計値の別個の記憶は、ワイヤレスデバイス８０２の異なる状態中に記録された通信統計値間の区別を可能にする任意の方法で達成され得ることを、当業者は諒解されよう。様々な実施形態では、プロセッサ８０４は、たとえば、電力状態、時間および／または日付を示すクロック状態、ネットワークアクセス状態など、ワイヤレスデバイス８０２の他の状態に基づいて通信統計値を別個に記憶し得る。
【０１３５】
次に、ブロック１１４０において、プロセッサ８０４は、累積通信統計値をレポートすべきかどうかを判断する。プロセッサ８０４は、サーバ１１０に通信統計値をレポートすることをプロセッサ８０４に行わせることになる、記録された統計値のしきい値数などのレポート基準を判断し得る。一実施形態では、プロセッサ８０４は、１時間ごと、１日ごと、１週間ごと、１月ごとなど周期的に、記録された通信統計値をレポートし得る。一実施形態では、プロセッサ８０４は、記録された統計値の数がしきい値に達したとき、および／または記録された統計値のサイズがしきい値に達したとき、記録された通信統計値をレポートし得る。一実施形態では、プロセッサ８０４は、指定された無線、たとえば、Ｗｉ−Ｆｉまたはセルラー無線が使用可能であるときにのみ、統計値をレポートし得る。プロセッサ８０４は、上述のレポート基準のうちの１つまたは複数を組み合わせるか、または追加の基準を使用し得る。一実施形態では、プロセッサ８０４は、サーバ１１０から通信統計値をどのようにおよびいつレポートすべきかに関する命令を受信し得る。プロセッサ８０４は、レポート基準が満たされていないと判断した場合、プロセッサは、記録された通信統計値をレポートせず、ブロック１１２５において待つ。プロセッサ８０４は、レポート基準が満たされたと判断した場合、プロセッサはブロック１１４５に進む。
【０１３６】
最後に、ブロック１１４５において、プロセッサ８０４は、送信機８１０および／またはトランシーバ８１４を介して記録された通信統計値をサーバ１１０に送る。プロセッサ８０４は、ＨＴＴＰ  ＰＯＳＴ方法を介して、ファイル転送プロトコル（ＦＴＰ）転送を介して、電子メールとして、または任意の他の通信手段を介して、記録された通信統計値を送り得る。プロセッサ８０４が、記録された通信統計値をサーバ１１０に送った後、プロセッサ８０４は、メモリ８０６から記録された通信統計値を削除し得るか、または後で使用するために、記録された通信統計値を保持し得る。記録された通信統計値をサーバ１１０に送ると、プロセッサ８０４はサーバ１１０から応答を受信し得、その応答は、無視リストと、除外リストと、包含リストと、通信統計値をいつレポートすべきかに関する命令のリストと、通信統計値をどのように記録すべきかに関する命令のリストとのうちの１つまたは複数を含み得る。
【０１３７】
図１２に、通信アクセスポリシーを適用する例示的な方法のフローチャート１２００を示す。一実施形態では、フローチャート１２００の１つまたは複数の態様は、図３のブロック３０８に対応することができる。本明細書では、図８に関して上記で説明したデバイス８０２に関してフローチャート１２００の方法について説明するが、フローチャート１２００の方法は、図１に関して上記で説明したワイヤレスデバイス１３２、図２に関して上記で説明したワイヤレスデバイス２０２、および／または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート１２００内のステップは、送信機８１０、受信機８１２、メモリ８０６、およびユーザインターフェース８２２とともに、プロセッサ８０５によって実行され得る。本明細書では、フローチャート１２００の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
【０１３８】
最初に、ブロック１２０５において、デバイス８０２は、受信機８１２を介して通信アクセスポリシーを受信する。プロセッサ８０４は、メモリ８０６に通信アクセスポリシーを記憶し得る。一実施形態では、デバイス８０２は、サーバ１１０から通信アクセスポリシーを受信する。図７〜図８に関して上記で説明したように、通信アクセスポリシーは、デバイス８０２がアプリケーション通信をどのように遅延させるべきかを指定し得る。
【０１３９】
次に、ブロック１２１０において、プロセッサ８０４は、プロセッサ８０４上で実行されるアプリケーションからの１つまたは複数の通信をインターセプトする。プロセッサ８０４は、通信管理システム１３８および／または接続性エンジン２０８に関して上記で説明した機能を介して通信をインターセプトし得る。一実施形態では、ＤＳＰ８２０、信号検出器８１８、送信機８１０、および／またはトランシーバ８１４は通信をインターセプトし得る。
【０１４０】
次いで、ブロック１２１５において、プロセッサ８０４はデバイス状態を判断する。デバイスは、フォアグラウンド状態とバックグラウンド状態とを含み得る少なくとも２つの状態のうちの１つにあり得る。一実施形態では、フォアグラウンド状態はフォアグラウンド状態であり得、バックグラウンド状態はバックグラウンド状態であり得る。プロセッサ８０４は、ユーザインターフェース８２２を介してデバイスの状態を判断し得る。一実施形態では、プロセッサ８０４は、インターセプトされたものが、ユーザインターフェース８２２を介した入力に応答して生成されたものではなく、アプリケーションによって自動的に生成されたバックグラウンド通信であるかどうかを判断し得る。
【０１４１】
その後、ブロック１２２０において、プロセッサ８０４は、デバイス８０２がバックグラウンド状態にあるかどうかを判断する。デバイスがバックグラウンド状態にない場合、プロセッサ８０４は、アプリケーション通信を遅延させず、ブロック１２２５において通信を続行することを許可する。デバイスがバックグラウンド状態にある場合、プロセッサ８０４はブロック１２３０に進む。一実施形態では、ブロック１２１５および１２２０は省略され得、アプリケーション通信は、デバイス８０２がバックグラウンド状態にあるかどうかにかかわらず遅延され得る。
【０１４２】
その後、ブロック１２３０において、プロセッサ８０４は、送信ウィンドウ６３０が開いているかどうかを判断する。図６〜図７に関して上記で説明したように、プロセッサ８０４は、通信アクセスポリシーに基づいて送信ウィンドウ６３０を開くべきかどうかを判断することができる。たとえば、インターセプトされたアプリケーション通信が包含リスト中にない場合、プロセッサ８０４は送信ウィンドウ６３０を開き得る。一実施形態では、送信ウィンドウ６３０が開いているかどうかを判断することは、アプリケーション通信、イベント、または他のトリガに応答して送信ウィンドウ６３０を開くことを含むことができる。送信ウィンドウ６３０が開いている場合、プロセッサ８０４は、アプリケーション通信を遅延させず、ブロック１２２５において通信を続行することを許可する。送信ウィンドウ６３０が閉じられている場合、プロセッサ８０４はブロック１２３５に進む。
【０１４３】
ブロック１２３５において、プロセッサ８０４は、通信アクセスポリシーに従って、インターセプトされた通信を遅延させる。たとえば、プロセッサ８０４は、通信が遅延され得るアプリケーションのリスト（「包含リスト」）、通信が遅延されないことがあるアプリケーションのリスト（「除外リスト」）、通信が遅延され得るか、または遅延されないことがある通信タイプのリスト、通信が遅延され得るか、または遅延されないことがあるネットワーク状態のリスト、通信が遅延され得るか、または遅延されないことがある時間の指示、および通信が遅延され得るか、または遅延されないことがあるロケーションの指示のうちの１つまたは複数の遅延基準を判断し得る。プロセッサ８０４は、判断された遅延基準に基づいてアプリケーション通信を許可するか、または遅延させることになる。いくつかの実施形態では、プロセッサ８０４は、追加の遅延基準を判断し得る。プロセッサ８０４は、アプリケーション通信が許可されるべきであると判断した場合、プロセッサ８０４はブロック１２２５に進む。プロセッサ８０４は、アプリケーション通信が遅延されるべきであると判断した場合、プロセッサ８０４はブロック１２１０に進む。
【０１４４】
図１３に、通信アクセスポリシーを実装するように構成される別の例示的なデバイス１３００を示す。デバイス１３００は、受信モジュール１３１０と、遅延モジュール１３２０と、許可モジュール１３３０とを備える。受信モジュール１３１０は、図１２に示したブロック１２０５に関して上記で説明した機能のうちの１つまたは複数を実行するように構成され得る。受信モジュール１３１０は、図８に関して上記で説明した、受信機８１２、プロセッサ８０４、トランシーバ８１４、およびメモリ８０６のうちの１つまたは複数に対応し得る。受信モジュール１３１０はまた、図２に関して上記で説明した、ＴＸ／ＲＸ無線機２１２およびプロセッサ２０２のうちの１つまたは複数に対応し得る。
【０１４５】
遅延モジュール１３２０は、図１２に示したブロック１２３５に関して上記で説明した機能のうちの１つまたは複数を実行するように構成され得る。遅延モジュール１３２０は、図８に関して上記で説明した、プロセッサ８０４および送信機８１０のうちの１つまたは複数に対応し得る。遅延モジュール１３２０はまた、図２に関して上記で説明した、ＴＸ／ＲＸ無線機２１２、接続性エンジン２０８、ネットワーキングモジュール２１０、およびプロセッサ２０２のうちの１つまたは複数に対応し得る。
【０１４６】
許可モジュール１３３０は、図１２に示したブロック１２２５に関して上記で説明した機能のうちの１つまたは複数を実行するように構成され得る。許可モジュール１３３０は、図８に関して上記で説明した、プロセッサ８０４および送信機８１０のうちの１つまたは複数に対応し得る。許可モジュール１３３０はまた、図２に関して上記で説明した、ＴＸ／ＲＸ無線機２１２、接続性エンジン２０８、ネットワーキングモジュール２１０、およびプロセッサ２０２のうちの１つまたは複数に対応し得る。
【０１４７】
情報および信号は多種多様な技術および技法のいずれかを使用して表され得ることを、当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【０１４８】
さらに、本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課せられた設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の例示的な実施形態の範囲からの逸脱を生じるものと解釈すべきではない。
【０１４９】
本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行し得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【０１５０】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで実施され得るか、プロセッサによって実行されるソフトウェアモジュールで実施され得るか、またはその２つの組合せで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込み得るように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体はＡＳＩＣ中に常駐し得る。ＡＳＩＣはユーザ端末内に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末内に個別構成要素として常駐することもできる。
【０１５１】
１つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装する場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく、例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスクストレージデバイスまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望のプログラムコードを担持または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を含み得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１５２】
開示した例示的な実施形態の前述の説明は、当業者が本発明を実施または使用することができるように与えたものである。これらの例示的な実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書で示した例示的な実施形態に限定されるものではなく、本明細書で開示した原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
【０１５３】
特許請求の範囲は、上記に示した厳密な構成および構成要素に限定されないことを理解されたい。上記で説明した方法および装置の構成、動作および詳細において、特許請求の範囲から逸脱することなく、様々な改変、変更および変形が行われ得る。
【０１５４】
上記は本開示の態様を対象とするが、本開示の他の態様およびさらなる態様は、それの基本的範囲から逸脱することなく考案され得、それの範囲は以下の特許請求の範囲によって判断される。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
通信ネットワークとデータを交換するように構成されるネットワークインターフェースと、
１つまたは複数の入力を受信するように構成される入力デバイスと、
前記ネットワークインターフェースに電気的に接続されたプロセッサと
を備え、前記プロセッサが、
１つまたは複数の入力の存在または不在に基づいて前記デバイスがバックグラウンド状態にあるのかフォアグラウンド状態にあるのかを判断することと、
前記ネットワークインターフェースを介して前記通信ネットワークと通信するように構成される複数のアプリケーションを実行することと、
前記デバイスが前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集することと、
前記デバイスが前記フォアグラウンド状態にあるとき、
前記デバイスが前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記１つまたは複数の通信統計値を収集すること、または
前記１つまたは複数の通信統計値を収集することを控えること
のいずれかを行うことと
を行うように構成される、ワイヤレスデバイス。
［Ｃ２］
サーバに前記通信統計値を送信するように構成される送信機をさらに備える、
［Ｃ１］に記載のワイヤレスデバイス。
［Ｃ３］
前記サーバから命令を受信するように構成される受信機をさらに備え、
前記プロセッサが、前記命令に従って前記１つまたは複数の通信統計値を収集するようにさらに構成される、
［Ｃ２］に記載のワイヤレスデバイス。
［Ｃ４］
前記サーバから命令を受信するように構成される受信機をさらに備え、
前記送信機が、前記命令に従って前記１つまたは複数の通信統計値をレポートするように構成される、
［Ｃ２］に記載のワイヤレスデバイス。
［Ｃ５］
前記プロセッサが、
アプリケーションからの通信をインターセプトすることと、
前記デバイスがバックグラウンド状態にある間に、前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断することと、
フォアグラウンド状態に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集することと
を行うようにさらに構成される、［Ｃ１］に記載のワイヤレスデバイス。
［Ｃ６］
前記サーバから命令を受信するように構成される受信機をさらに備え、
前記プロセッサが、前記命令に従って１つまたは複数の通信を遅延させるようにさらに構成される、
［Ｃ２］に記載のワイヤレスデバイス。
［Ｃ７］
前記命令は、前記通信を遅延させるときに前記プロセッサが含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ６］に記載のワイヤレスデバイス。
［Ｃ８］
前記命令は、前記通信を遅延させるときに前記プロセッサが含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
［Ｃ７］に記載のワイヤレスデバイス。
［Ｃ９］
前記命令は、前記通信統計値を収集するときに前記プロセッサが含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ３］に記載のワイヤレスデバイス。
［Ｃ１０］
前記命令は、前記通信統計値を収集するときに前記プロセッサが含めるべきおよび／または除外すべきソケット動作のリストを備える、
［Ｃ３］に記載のワイヤレスデバイス。
［Ｃ１１］
前記命令は、前記送信機が前記通信統計値を送信すべき通信ネットワークのリストを備える、
［Ｃ４］に記載のワイヤレスデバイス。
［Ｃ１２］
前記命令は、前記送信機が前記通信統計値を送信すべきときを示す命令を備える、
［Ｃ４］に記載のワイヤレスデバイス。
［Ｃ１３］
前記通信統計値は、前記バックグラウンドモード中にフォアグラウンドのアプリケーションのリストを備える、
［Ｃ１］に記載のワイヤレスデバイス。
［Ｃ１４］
前記通信統計値は、アプリケーションごとに、バックグラウンドモード中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
［Ｃ１］に記載のワイヤレスデバイス。
［Ｃ１５］
前記通信統計値は、アプリケーションごとに、前記バックグラウンドモード中に転送されるデータの量を備え、前記通信統計値が、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
［Ｃ１］に記載のワイヤレスデバイス。
［Ｃ１６］
前記プロセッサが、アプリケーションおよびソケット動作タイプによって前記通信統計値を分類するように構成される、
［Ｃ１］に記載のワイヤレスデバイス。
［Ｃ１７］
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
［Ｃ１６］に記載のワイヤレスデバイス。
［Ｃ１８］
前記通信統計値は、前記プロセッサが前記通信統計値を収集し始めた時間と、前記プロセッサが前記通信統計値を収集するのを中止した時間とを備える、
［Ｃ１］に記載のワイヤレスデバイス。
［Ｃ１９］
前記通信統計値が、１つまたは複数のソケット動作のために使用される通信インターフェースを識別する情報を備える、
［Ｃ１］に記載の装置。
［Ｃ２０］
アプリケーション通信統計値を収集する方法であって、
１つまたは複数の入力の存在または不在に基づいてデバイスがフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断することと、
通信ネットワークと通信するように構成される複数のアプリケーションを実行することと、
前記デバイスが前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集することと、
前記デバイスが前記フォアグラウンド状態にあるとき、
前記デバイスが前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記１つまたは複数の通信統計値を収集すること、または
前記１つまたは複数の通信統計値を収集することを控えること
のいずれかを行うことと
を行うことを備える、方法。
［Ｃ２１］
サーバに前記通信統計値を送信することをさらに備える、
［Ｃ２０］に記載の方法。
［Ｃ２２］
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を収集することと
をさらに備える、［Ｃ２１］に記載の方法。
［Ｃ２３］
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を送信することと
をさらに備える、［Ｃ２１］に記載の方法。
［Ｃ２４］
アプリケーションからの通信をインターセプトすることと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断することと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集することと
をさらに備える、［Ｃ２０］に記載の方法。
［Ｃ２５］
前記サーバから命令を受信することと、
前記命令に従って１つまたは複数の通信を遅延させることと
をさらに備える、［Ｃ２１］に記載の方法。
［Ｃ２６］
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ２５］に記載の方法。
［Ｃ２７］
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
［Ｃ２６］に記載の方法。
［Ｃ２８］
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ２２］に記載の方法。
［Ｃ２９］
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきソケット動作のリストを備える、
［Ｃ２２］に記載の方法。
［Ｃ３０］
前記命令は、前記通信統計値が送信されるべき通信ネットワークのリストを備える、
［Ｃ２３］に記載の方法。
［Ｃ３１］
前記命令は、前記通信統計値が送信されるべきときを示す命令を備える、
［Ｃ２３］に記載の方法。
［Ｃ３２］
前記通信統計値は、前記バックグラウンドモード中にフォアグラウンドのアプリケーションのリストを備える、
［Ｃ２０］に記載の方法。
［Ｃ３３］
前記通信統計値は、アプリケーションごとに、前記バックグラウンドモード中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
［Ｃ２０］に記載の方法。
［Ｃ３４］
前記通信統計値は、アプリケーションごとに、前記バックグラウンドモード中に転送されるデータの量を備え、前記通信統計値が、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
［Ｃ２０］に記載の方法。
［Ｃ３５］
アプリケーションおよびソケット動作タイプによって前記通信統計値を分類することをさらに備える、
［Ｃ２０］に記載の方法。
［Ｃ３６］
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
［Ｃ３５］に記載の方法。
［Ｃ３７］
前記通信統計値は、前記通信統計値の収集の時間と、前記通信統計値の収集の時間とを備える、
［Ｃ２０］に記載の方法。
［Ｃ３８］
前記通信統計値は、１つまたは複数のソケット動作のために使用される通信インターフェースを識別する情報を備える、
［Ｃ２０］に記載の方法。
［Ｃ３９］
アプリケーション通信統計値を収集するための装置であって、
１つまたは複数の入力の存在または不在に基づいて前記装置がフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断するための手段と、
通信ネットワークと通信するように構成される複数のアプリケーションを実行するための手段と、
前記装置が前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集するめの手段と、
前記デバイスが前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記デバイスが前記フォアグラウンド状態にあるときに前記１つまたは複数の通信統計値を収集するための手段、または
前記デバイスが前記フォアグラウンド状態にあるときに前記１つまたは複数の通信統計値を収集することを控えるための手段
のいずれかと
を備える、装置。
［Ｃ４０］
サーバに前記通信統計値を送信するための手段をさらに備える、
［Ｃ３９］に記載の装置。
［Ｃ４１］
前記サーバから命令を受信するための手段と、
前記命令に従って前記１つまたは複数の通信統計値を収集するための手段と
をさらに備える、［Ｃ４０］に記載の装置。
［Ｃ４２］
前記サーバから命令を受信するための手段と、
前記命令に従って前記１つまたは複数の通信統計値を送信するための手段と
をさらに備える、［Ｃ４０］に記載の装置。
［Ｃ４３］
アプリケーションからの通信をインターセプトするための手段と、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断するための手段と、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集するための手段と
をさらに備える、［Ｃ３９］に記載の装置。
［Ｃ４４］
前記サーバから命令を受信するための手段と、
前記命令に従って１つまたは複数の通信を遅延させるための手段と
をさらに備える、［Ｃ４０］に記載の装置。
［Ｃ４５］
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ４４］に記載の装置。
［Ｃ４６］
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
［Ｃ４５］に記載の装置。
［Ｃ４７］
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ４１］に記載の装置。
［Ｃ４８］
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきソケット動作のリストを備える、
［Ｃ４１］に記載の装置。
［Ｃ４９］
前記命令は、前記通信統計値が送信されるべき通信ネットワークのリストを備える、
［Ｃ４２］に記載の装置。
［Ｃ５０］
前記命令は、前記通信統計値が送信されるべきときを示す命令を備える、
［Ｃ４２］に記載の装置。
［Ｃ５１］
前記通信統計値は、前記バックグラウンドモード中にフォアグラウンドのアプリケーションのリストを備える、
［Ｃ３９］に記載の装置。
［Ｃ５２］
前記通信統計値は、アプリケーションごとに、前記バックグラウンドモード中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
［Ｃ３９］に記載の装置。
［Ｃ５３］
前記通信統計値は、アプリケーションごとに、前記バックグラウンドモード中に転送されるデータの量を備え、前記通信統計値は、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
［Ｃ３９］に記載の装置。
［Ｃ５４］
アプリケーションおよびソケット動作タイプによって前記通信統計値を分類するための手段をさらに備える、
［Ｃ３９］に記載の装置。
［Ｃ５５］
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
［Ｃ５４］に記載の装置。
［Ｃ５６］
前記通信統計値は、収集するための前記手段が前記通信統計値を収集し始めた時間と、収集するための前記手段が前記通信統計値を収集するのを中止した時間とを備える、
［Ｃ３９］に記載の装置。
［Ｃ５７］
前記通信統計値は、１つまたは複数のソケット動作のために使用される通信インターフェースを識別する情報を備える、
［Ｃ３９］に記載の装置。
［Ｃ５８］
実行されたとき、装置に、
１つまたは複数の入力の存在または不在に基づいて前記装置がフォアグラウンド状態にあるのかバックグラウンド状態にあるのかを判断することと、
通信ネットワークと通信するように構成される複数のアプリケーションを実行することと、
前記装置が前記バックグラウンド状態にあるとき、前記複数のアプリケーションのうちの１つまたは複数について、１つまたは複数の通信統計値を収集することと、
前記装置が前記フォアグラウンド状態にあるとき、
前記装置が前記バックグラウンド状態にあるときに収集した前記通信統計値とは別個に、前記１つまたは複数の通信統計値を収集すること、または
前記通信統計値を収集することを控えること
のいずれかを行うことと
を行わせるコードを備える、非一時的コンピュータ可読媒体。
［Ｃ５９］
実行されたとき、前記装置に、サーバに前記通信統計値を送信させるコードをさらに備える、
［Ｃ５８］に記載の媒体。
［Ｃ６０］
実行されたとき、前記装置に、
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を収集することと
を行わせるコードをさらに備える、［Ｃ５９］に記載の媒体。
［Ｃ６１］
実行されたとき、前記装置に、
前記サーバから命令を受信することと、
前記命令に従って前記１つまたは複数の通信統計値を送信することと
を行わせるコードをさらに備える、［Ｃ５９］に記載の媒体。
［Ｃ６２］
実行されたとき、前記装置に、
アプリケーションからの通信をインターセプトすることと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したかどうかを判断することと、
ユーザインターフェース入力に応答して前記アプリケーションが前記インターセプトされた通信を生成したとき、前記インターセプトされた通信について前記１つまたは複数の通信統計値を別個に収集することと
を行わせるコードをさらに備える、［Ｃ５８］に記載の媒体。
［Ｃ６３］
実行されたとき、前記装置に、
前記サーバから命令を受信することと、
前記命令に従って１つまたは複数の通信を遅延させることと
を行わせるコードをさらに備える、［Ｃ５９］に記載の媒体。
［Ｃ６４］
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ６３］に記載の媒体。
［Ｃ６５］
前記命令は、前記通信を遅延させるときに含めるべきおよび／または除外すべきアプリケーションソケット動作のリストを備える、
［Ｃ６４］に記載の媒体。
［Ｃ６６］
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきアプリケーションのリストを備える、
［Ｃ６０］に記載の媒体。
［Ｃ６７］
前記命令は、前記通信統計値を収集するときに含めるべきおよび／または除外すべきソケット動作のリストを備える、
［Ｃ６０］に記載の媒体。
［Ｃ６８］
前記命令は、前記通信統計値が送信されるべき通信ネットワークのリストを備える、
［Ｃ６１］に記載の媒体。
［Ｃ６９］
前記命令は、前記通信統計値が送信されるべきときを示す命令を備える、
［Ｃ６１］に記載の媒体。
［Ｃ７０］
前記通信統計値は、前記バックグラウンドモード中にフォアグラウンドのアプリケーションのリストを備える、
［Ｃ５８］に記載の媒体。
［Ｃ７１］
前記通信統計値は、アプリケーションごとに、前記バックグラウンドモード中に１つまたは複数のアプリケーションによって開始される接続の数を備える、
［Ｃ５８］に記載の媒体。
［Ｃ７２］
前記通信統計値は、アプリケーションごとに、前記バックグラウンドモード中に転送されるデータの量を備え、前記通信統計値は、１つまたは複数のソケット動作と、実行されたソケット動作の数のカウントとを備える、
［Ｃ５８］に記載の媒体。
［Ｃ７３］
アプリケーションおよびソケット動作タイプによって前記通信統計値を分類するための手段をさらに備える、
［Ｃ３９］に記載の装置。
［Ｃ７４］
前記ソケット動作タイプが、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
［Ｃ７３］に記載の装置。
［Ｃ７５］
前記通信統計値は、収集するための前記手段が前記通信統計値を収集し始めた時間と、収集するための前記手段が前記通信統計値を収集するのを中止した時間とを備える、
［Ｃ３９］に記載の装置。
［Ｃ７６］
前記通信統計値は、１つまたは複数のソケット動作のために使用される通信インターフェースを識別する情報を備える、
［Ｃ３９］に記載の装置。
［Ｃ７７］
実行されたとき、前記装置に、アプリケーションおよびソケット動作タイプによって前記通信統計値を分類させるコードをさらに備える、
［Ｃ５８］に記載の媒体。
［Ｃ７８］
前記ソケット動作タイプは、ｂｉｎｄ（）、ｃｏｎｎｅｃｔ（）、ａｃｃｅｐｔ（）、ｓｅｎｄ（）、ｒｅｃｖ（）、ｗｒｉｔｅ（）、ｒｅａｄ（）、ｓｅｎｄｔｏ（）、ｒｅｃｖｆｒｏｍ（）、ｃｌｏｓｅ（）、ｇｅｔｈｏｓｔｂｙｎａｍｅ（）、およびｇｅｔｈｏｓｔｂｙａｄｄｒ（）のリストからの少なくとも１つの動作を備える、
［Ｃ７７］に記載の媒体。
［Ｃ７９］
前記通信統計値は、前記通信統計値の収集の時間と、前記通信統計値の収集の時間とを備える、
［Ｃ５８］に記載の媒体。
［Ｃ８０］
前記通信統計値は、１つまたは複数のソケット動作のために使用される通信インターフェースを識別する情報を備える、
［Ｃ５８］に記載の媒体。
【図１】
0005905578.tif 000002
【図２】
0005905578.tif 000003
【図３】
0005905578.tif 000004
【図４】
0005905578.tif 000005
【図５】
0005905578.tif 000006
【図６】
0005905578.tif 000007
【図７】
0005905578.tif 000008
【図８】
0005905578.tif 000009
【図９】
0005905578.tif 000010
【図１０】
0005905578.tif 000011
【図１１】
0005905578.tif 000012
【図１２】
0005905578.tif 000013
【図１３】
0005905578.tif 000014