(57)【要約】【課題】クロスデバイスアプリケーションの発見および／または制御のためのシステムおよび方法を提供する。【解決手段】クロスデバイスアプリケーションの発見および制御は、１つまたは複数のリモートデバイスの上のアプリケーションの発見および制御を可能にする。発見は、特定のタスクを実行することができる少なくとも１つのアプリケーションを有するデバイスを見つけることを含むことができる。タスクは、デバイスの上のアプリケーションを通して、映画を見ること、ニュース記事を読むこと、ドキュメントを書くことなど、特定のユーザのアクティビティをサポートすることができる。【選択図】図１
2017532651.tif 000002
【特許請求の範囲】
【請求項１】
ソースデバイスにより、ターゲットデバイスを識別するステップと、
前記ソースデバイスにおいて、前記ターゲットデバイスの信頼性レベルを決定するステップと、
前記ターゲットデバイスに対して、タスクを実行する能力に関連する情報を要求するアプリケーション発見クエリを送信するステップと、
前記ターゲットデバイスにおいて、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定するステップと、
前記ターゲットデバイスにおいて、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定するステップと、
前記ソースデバイスにおいて、前記ターゲットデバイスから発見応答メッセージを受信するステップであって、前記発見応答メッセージは、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定する前記ステップと、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定する前記ステップとに関連する結果に基づいており、また前記発見応答メッセージは、少なくともデバイス能力とアプリケーション能力とを含む、受信するステップと
を含む方法。
【請求項２】
前記ターゲットデバイスにおいて、アプリケーション起動メッセージを受信するステップと、
前記アプリケーション起動メッセージを受信するステップに応じて、前記ターゲットデバイスの上のアプリケーションをアクティブにするステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記ターゲットデバイスの上で前記アプリケーションの前記タスクを実行するステップであって、前記タスクは、関連するタスクコンテキストデータを有する、実行するステップと、
前記ソースデバイスに対してアプリケーション応答メッセージを送信するステップとをさらに含み、前記アプリケーション応答メッセージは、
前記アプリケーションに関連する前記タスクが前記デバイスの上で実行されることについての通知、および
前記ソースデバイスによるプレゼンテーションのための前記タスクコンテキストデータ
のうちの少なくとも一方を含む、請求項２に記載の方法。
【請求項４】
コンピュータ実行可能命令を有するコンピュータ読取り可能媒体であって、前記コンピュータ実行可能命令は、実行に応答して、
１つまたは複数のリモートデバイスを識別するステップと、
前記１つまたは複数のリモートデバイスのそれぞれの信頼性を決定するステップと、
前記１つまたは複数のリモートデバイスのそれぞれの前記信頼性に少なくとも部分的に基づいて、前記１つまたは複数のリモートデバイスのうちの少なくとも１つに対してアプリケーション発見クエリを送信するステップであって、前記アプリケーション発見クエリは、前記１つまたは複数のリモートデバイスのうちの前記少なくとも１つからの情報についての要求である、送信するステップと、
前記１つまたは複数のリモートデバイスのうちの前記少なくとも１つからアプリケーション発見応答メッセージを受信するステップであって、前記アプリケーション発見応答メッセージは、
デバイス能力と、
アプリケーション能力と
を示す情報を含む、受信するステップと
を含むオペレーションを実行するようにデバイスを構成する、コンピュータ読取り可能媒体。
【請求項５】
前記デバイス能力は、
リモートデバイスメモリ、
リモートデバイス速度、または
リモートデバイスプレゼンテーション能力
のうちの少なくとも１つを含む、請求項４に記載のコンピュータ読取り可能媒体。
【請求項６】
前記オペレーションは、
前記１つまたは複数のリモートデバイスから特定のリモートデバイスを選択するステップであって、特定のリモートデバイスを選択する前記ステップは、前記発見応答メッセージに少なくとも部分的に基づいている、選択するステップと、
前記特定のリモートデバイスに対してアプリケーション起動メッセージを送信するステップであって、前記アプリケーション起動メッセージは、アプリケーションをアクティブにするように前記特定のリモートデバイスに指示する、送信するステップと、
アプリケーションの起動応答メッセージを受信するステップであって、前記起動応答メッセージは、前記アプリケーションが、前記特定のリモートデバイスの上でアクティブにされてきていることについての通知から構成されている、受信するステップと、
前記特定のリモートデバイスの上の前記アプリケーションを前記デバイスから制御するステップと
をさらに含む、請求項４または５に記載のコンピュータ読取り可能媒体。
【請求項７】
プロセッサと、
メモリと、
前記メモリに記憶され、また前記プロセッサにより、少なくとも部分的に、実行される１つまたは複数のアプリケーションと、
前記メモリに記憶されるクロスデバイスリモート制御モジュールと
を備えており、前記クロスデバイスリモート制御モジュールは、１つまたは複数のターゲットデバイスの上でリモートアプリケーションを発見するように構成されており、また
ネットワークを経由してメッセージを送信し、また受信するように構成されたクロスデバイスアプリケーションモデルクライアントと
少なくともアプリケーション能力を含むリモートアプリケーション情報を処理するように構成されたリモートアプリケーション発見クライアントと
を備えている、システム。
【請求項８】
前記クロスデバイスアプリケーションモデルクライアントは、さらに、
前記ネットワークを経由して前記１つまたは複数のターゲットデバイスに接続し、
前記１つまたは複数のターゲットデバイスの信頼性を決定し、
前記信頼性に少なくとも部分的に基づいて、前記１つまたは複数のターゲットデバイスに対してアプリケーション発見クエリを送信し、また
前記１つまたは複数のターゲットデバイスから１つまたは複数のアプリケーション発見応答を受信する
ように構成されている、請求項７に記載のシステム。
【請求項９】
前記１つまたは複数のアプリケーション発見応答は、
特定のタスクを遂行する少なくともアプリケーション能力から構成されるアプリケーション情報と、
前記特定のタスクを遂行する少なくともデバイス能力から構成されるデバイス情報と
から構成される、請求項８に記載のシステム。
【請求項１０】
前記リモートアプリケーション発見クライアントは、さらに、
１つまたは複数のアプリケーション発見応答を受信し、
前記特定のタスクを遂行することができる１つまたは複数のアプリケーションに関連する１つまたは複数のリモートアプリケーションファイルを決定し、また
１つまたは複数のリモートアプリケーションファイルをリミッタに対して送信する
ように構成されている、請求項７、８、または９のいずれか１項に記載のシステム。
【請求項１１】
前記クロスデバイスモデルリモート制御は、さらに、
１つまたは複数のリモートアプリケーションファイルを受信し、また
特定のリモートアプリケーションファイルを選択する
ように構成されたリミッタをさらに備えている、請求項７、８、９または１０のいずれか１項に記載のシステム。
【請求項１２】
前記クロスデバイスアプリケーションモデルクライアントは、
リモートアプリケーションファイルを受信し、
前記１つまたは複数のターゲットデバイスの上のアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを前記１つまたは複数のターゲットデバイスに対して送信し、また
前記１つまたは複数のターゲットデバイスから起動応答メッセージを受信する
ように構成されており、前記起動応答メッセージは、
タスクが前記アプリケーションの上で実行されることについての通知と、
ディスプレイの上のプレゼンテーションのためのタスクコンテキストデータと
から少なくとも構成される、請求項７、８、９または１０のいずれか１項に記載のシステム。
【請求項１３】
前記クロスデバイスアプリケーションモデルクライアントは、
リミッタからリモートアプリケーションファイルを受信し、
ターゲットデバイスに対して、前記ターゲットデバイスの上のアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを送信し、また
前記ターゲットデバイスから起動応答メッセージを受信する
ように構成されており、前記起動応答メッセージは、
タスクが前記アプリケーションの上で実行されることについての通知と、
タスクコンテキストデータが、前記ターゲットデバイスのディスプレイの上で提示されることについての通知と
から構成される、請求項７、８、９、または１０のいずれか１項に記載のシステム。
【請求項１４】
前記クロスデバイスモデルリモート制御モジュールは、さらに、マスタスレーブ構成で１つまたは複数のターゲットデバイスの上の前記リモートアプリケーションを制御するように構成されている、請求項７に記載のシステム。
【請求項１５】
前記特定のリモートアプリケーションファイルの前記選択は、発見クエリに少なくとも部分的に基づいて、ユーザ入力を経由して、またはアプリケーションによって遂行される、請求項１１に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  スマートフォン、パーソナルコンピュータ、タブレット、１つで２つの機能を有するデバイスなどのデバイスは、社会の中にどこにでもある。人々は、各タスクが、デバイスの上でアプリケーションによって実行され得る、複数の異なるタスクのために、これらのデバイスを使用する。多くの場合、デバイスの上の複数のアプリケーションが、特定のタスクを実行することができる。さらに、多数の人々は、それぞれが、タスクを実行することができる複数のアプリケーションを十分に備えている複数のデバイスを所有している。
【０００２】
[0002]  アプリケーションは、しかしながら、一般に、１つのデバイスの上だけで、動作し、またデバイスの間で、情報を通信し、または情報をシームレスに共有する能力を欠いている。したがって、アプリケーションは、処理速度、メモリ、および／またはディスプレイサイズなどのデバイス能力に基づいて、制限される。例えば、スマートフォンの上でビデオを再生するアプリケーションは、スマートフォンデバイスディスプレイだけに限定される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]  本開示は、クロスデバイスアプリケーションの発見および制御のためのシステムおよび方法について説明している。クロスデバイスアプリケーションの発見および制御は、ターゲットデバイスの上でアプリケーションの検出、起動、および制御を提供することができる。いくつかの例においては、クロスデバイスアプリケーションの発見および制御は、ターゲットデバイスの上でバックグラウンドタスクの起動および制御を提供することができる。クロスデバイスアプリケーションの発見および制御は、ネットワークを経由して接続された信頼されたターゲットデバイスを発見するソースデバイスを提供することができ、またタスクを実行することができる。クロスデバイスアプリケーションの発見および制御はまた、タスクを実行することができる１つまたは複数のアプリケーションを発見するソースデバイスを提供することもできる。ソースデバイスがアプリケーション発見クエリを送信することに応じて、１つまたは複数のターゲットデバイスは、それぞれのデバイスおよび／またはアプリケーションの能力で応答することができる。デバイスおよびアプリケーションの能力を受信することに応じて、ソースデバイスは、１つまたは複数のターゲットデバイスの上のアプリケーションを選択して、タスクを実行することができる。
【課題を解決するための手段】
【０００４】
[0004]  クロスデバイスアプリケーションの発見および制御は、マスタスレーブ構成の形の１つまたは複数のリモートデバイスの上でアプリケーションを制御するソースデバイスを提供することができる。それゆえに、ソースデバイスが、１つまたは複数のターゲットデバイスの上でアプリケーションを選択した後に、ソースデバイスは、アプリケーションをアクティブにし、またアプリケーションの中で特定のタスクを実行するように、１つまたは複数のターゲットデバイスに指示する起動メッセージを送信することができる。いくつかの例においては、アプリケーションは、１つまたは複数のターゲットデバイスの上でタスクを実行し、またターゲットデバイスの上のディスプレイに対してタスクに関連するタスクコンテキストデータを送信することができる。いくつかの例においては、アプリケーションは、１つまたは複数のターゲットデバイスの上でタスクを実行し、またタスクに関連するタスクコンテキストデータをソースデバイスに対してストリーミングして、ディスプレイの上に提示されるようにすることができる。クロスデバイスアプリケーションの発見および起動は、単一のオペレーティングシステムの上で、または複数のオペレーティングシステムを通して可能にされることもある。
【０００５】
[0005]  この概要は、詳細な説明において以下でさらに説明される簡略化された形態で概念の選択を導入するように提供される。この概要は、特許請求の範囲の主題の重要な特徴または絶対不可欠な特徴を識別することも意図してはおらず、また特許請求の範囲の主題の範囲を決定する際における助けとして使用されることも意図してはいない。
【０００６】
[0006]  詳細な説明は、添付図面を参照して説明される。それらの図面において、参照番号の最も左側の桁（単数または複数）は、その参照番号が最初に現れる図面を示している。異なる図面における同じ参照番号の使用は、類似した項目または同一の項目を示している。
【図面の簡単な説明】
【０００７】
【図１】[0007]クロスデバイスアプリケーション発見および制御システムの例示の環境を示す図である。
【図２】[0008]図１と整合したクロスデバイスアプリケーション発見および制御システムを含む例示のデバイスの選択コンポーネントを示すブロック図である。
【図３】[0009]クロスデバイスアプリケーション発見および制御システムを含む例示のソースデバイスと例示のターゲットデバイスとの選択コンポーネントを示すブロック図である。
【図４】[0010]クロスデバイスアプリケーション発見および制御システムについてのクロスデバイスアプリケーションの制御モジュールを示すブロック図である。
【図５】[0011]クロスデバイスアプリケーション発見および制御システムについてのクロスデバイスアプリケーション発見および制御マネージャモジュールを示すブロック図である。
【図６】[0012]クロスデバイスアプリケーション発見および起動システムを使用した、ソースデバイスからのアプリケーション発見と、起動と、制御とについてのプロセスフローを示す流れ図である。
【図７】[0013]クロスデバイスアプリケーション発見および起動システムを使用した、ターゲットデバイスからのアプリケーション発見と、起動と、制御とについてのプロセスフローを示すフロー図である。
【発明を実施するための形態】
【０００８】
[0014]  本開示は、デバイスおよび／またはオペレーティングシステムを通して、アプリケーションの発見および／または制御を可能にする方法およびシステムを説明するものである。クロスデバイスアプリケーションの発見および制御は、リモートデバイスの上のアプリケーションの検出および／または制御を提供することができる。アプリケーションの発見および／または制御は、ユーザによって信頼される複数のアクティブデバイスの上で起こることができる。いくつかの例示の実装形態においては、デバイスが、ユーザプロファイル、グループプロファイルの上で構成されており、かつ／またはそれ以外の方法でユーザによって認証される場合に、そのデバイスを信頼することができる。
【０００９】
[0015]  デバイスの発見可能性は、デバイスが、電源が投入されており、スリープモードがオフであり、航空機内モードがオフであり、またはネットワークの上でデバイスを使用可能になるようにさせる任意の他のアクションにあることに基づくことができる。ネットワークの上の使用可能性は、例えば、Ｗｉ−Ｆｉセンサ、ブルートゥース（登録商標）センサ、近接センサ、有線接続、またはネットワークインターフェースを検出することができる任意の他のセンサによって決定することができる。
【００１０】
[0016]  クロスデバイスアプリケーションの発見および制御は、ソースデバイスが、ネットワークの上でアクティブな信頼されたリモートデバイスを発見するためのやり方を提供することができる。ネットワークは、少なくとも２つのデバイスを接続することができる任意の有線ネットワークまたはワイヤレスネットワークを含むことができる。クロスデバイスアプリケーションの発見および制御は、ソースデバイスが、アクティブな信頼されたリモートデバイスの上に位置しているアプリケーションを発見するためのやり方を提供することもできる。
【００１１】
[0017]  クロスデバイスアプリケーションの発見および制御は、特定のタスクを実行することができる１つまたは複数のアプリケーションについて１つまたは複数のリモートデバイスにクエリを行うやり方を提供することができる。そのクエリに応じて、１つまたは複数のリモートデバイスは、タスクを実行することができるアプリケーションについてのアプリケーション能力情報で応答することができる。いくつかの例においては、１つまたは複数のリモートデバイスは、１つまたは複数のリモートデバイスのデバイス能力情報で応答することもできる。
【００１２】
[0018]  クロスデバイスアプリケーションの発見および制御は、ソースデバイスが、タスクの実行のために１つまたは複数のリモートデバイスの上のアプリケーションを選択するためのやり方を提供することができる。その選択に応じて、ソースデバイスは、１つまたは複数のリモートデバイスの上のアプリケーションを制御することができる。本明細書において使用されるように、制御の例は、それだけには限定されないが、再生し、一時停止させ、再開し、停止させ、リフレッシュし、キャンセルし、かつ／またはアプリケーションの任意の他のタスクの寿命管理機能を実行する命令を含むことができる。クロスデバイスアプリケーション発見および制御システムの中のソースデバイスと、１つまたは複数のターゲットデバイスとは、このようにして、マスタスレーブ構成で接続することができる。
【００１３】
[0019]  いくつかの例においては、クロスデバイスアプリケーションの発見および制御は、１つまたは複数のターゲットデバイスの上の表示を提供することができる。様々な例においては、クロスデバイスアプリケーションの発見および制御は、ソースデバイスの上の表示を提供することができる。
【００１４】
[0020]  クロスデバイスアプリケーションの発見および制御は、異なるオペレーティングシステムを有するデバイスを通して可能にされる可能性もある。例えば、第１のデバイスは、ＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムの上で実行するように構成されていることもあり、また第１のデバイスは、ＬＩＮＵＸオペレーティングシステム、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステム、ｉＯＳ（商標）オペレーティングシステム、または別のオペレーティングシステムの上で実行するように構成された第２のデバイスとのクロスデバイスアプリケーションの発見および制御の通信を実行することができる。
【００１５】
例示的な環境
[0021]  以下で説明される環境は、１つの例を構成するにすぎず、またどのような１つの特定の動作環境だけに特許請求の範囲を限定することも意図してはいない。他の環境が、特許請求の範囲の主題についての精神および範囲を逸脱することなく、使用される可能性もある。
【００１６】
[0022]  クロスデバイスアプリケーションの発見および制御は、１つまたは複数のリモートデバイスの上のアプリケーションの発見および制御を可能にする。発見は、特定のタスクを実行することができる少なくとも１つのアプリケーションを有するデバイスを見つけることを含むことができる。タスクは、デバイスの上のアプリケーションを通して、映画を見ること、ニュース記事を読むこと、ドキュメントを書くこと、数え切れないほどの他のアクティビティなど、特定のユーザのアクティビティをサポートすることができる。
【００１７】
[0023]  例えば、ユーザは、スマートフォンの上のビデオアプリケーションの上で映画を見ていることができ、またスマートテレビジョンを持ってあるロケーションに到着することができる。スマートフォンは、ネットワークの上でスマートテレビジョンに接続し、また映画を再生することができるスマートテレビジョンの上の少なくとも１つのビデオアプリケーションを発見することができる。スマートフォンは、スマートテレビジョンが、信頼されたデバイスであることを決定することができ、またスマートテレビジョンの上のビデオアプリケーションに対して、映画を再生するようにそれに指示する起動メッセージを送信することができる。映画は、次いで、スマートテレビジョンの上に表示されることもあるが、スマートフォンは、スマートテレビジョンの上のビデオアプリケーションの制御を維持する。いくつかの例においては、映画は、スマートテレビジョンの上のビデオアプリケーションにおいて再生され、またスマートフォンの上に表示されることもある。様々な例においては、映画は、スマートテレビジョンの上のビデオアプリケーションにおいて再生され、またスマートテレビジョンとスマートフォンとの上で同時に表示されることもある。
【００１８】
[0024]  図１は、クロスデバイスアプリケーションの発見および制御が実装され得る例示の環境１００を示すものである。環境１００のデバイス（単数または複数）１０２および／またはコンポーネントは、１つまたは複数のネットワーク１０４を経由して通信するように構成された多種多様なデバイスタイプを含むことができ、またどのような特定のタイプのデバイスにも限定されない。いくつかの例においては、１０２（１）などのデバイス（単数または複数）１０２は、それだけには限定されないが、サーバと、デスクトップコンピュータと、パーソナルコンピュータと、ネットワーク可能化テレビジョンと、端末と、ゲームコンソールと、セットトップボックスと、ゲーミングデバイスと、ワークステーションと、分散型コンピューティングリソースを動作させることができる小型軽量クライアントなどの小型軽量クライアントとを含めて、静止デバイスを含むことができる。いくつかの例においては、１０２（２）などのデバイス（単数または複数）１０２は、それだけには限定されないが、モバイル電話と、タブレットコンピュータと、モバイル電話タブレットハイブリッドと、携帯情報端末（PDA: personal data assistant）と、ラップトップコンピュータと、メディアプレーヤと、パーソナルビデオレコーダ（PVR: personal video recorders）と、カメラと、任意の他のモバイルコンピュータまたは任意の他のモバイル電気通信デバイスとを含めて、モバイルデバイスを含むことができる。いくつかの例においては、１０２（３）などのデバイス（単数または複数）１０２は、それだけには限定されないが、ウェアラブルコンピュータと、埋め込まれたコンピューティングデバイスと、自動車用コンピュータと、全地球測位システム（GPS: global positioning system）デバイスを含む衛星ベースのナビゲーションシステムや他の衛星ベースのナビゲーションシステムデバイスなどのコンピュータナビゲーションタイプデバイスと、電化製品と、コンピューティングデバイスの中に含めるための一体化されたコンポーネントと、を含めて、埋め込みデバイスを含むことができる。様々な例においては、デバイス１０２（Ｎ）などのデバイス（単数または複数）１０２は、１つまたは複数のネットワーク（単数または複数）１０４を経由して通信するように構成された任意の他の種類のコンピューティングデバイスを含むことができる。
【００１９】
[0025]  例えば、ネットワーク（単数または複数）１０４は、インターネットなどの公衆ネットワーク、組織的イントラネットおよび／またはパーソナルイントラネットなどの私的ネットワーク、または私的ネットワークと公衆ネットワークとの何らかの組合せを含むことができる。ネットワーク（単数または複数）１０４は、それだけには限定されないが、ローカルエリアネットワーク（LAN: local area networks）、広域ネットワーク（WAN: wide area networks）、パーソナルエリアネットワーク（PAN: personal area networks）、ボディエリアネットワーク（BAN: body area networks）、近接場通信（NFC: near field communication）、衛星ネットワーク、ケーブルネットワーク、Ｗｉ−Ｆｉネットワーク、ＷｉＭａｘネットワーク、モバイル通信ネットワーク（例えば、３Ｇ、４Ｇなど）、またはそれらの任意の組合せを含めて、任意のタイプの有線ネットワークおよび／またはワイヤレスネットワークを含むことができる。ネットワーク（単数または複数）１０４は、インターネットプロトコル（IP: internet protocol）、送信制御プロトコル（TCP: transmission control protocol）、ユーザデータグラムプロトコル（UDP: user datagram protocol）、他のタイプのプロトコルなど、パケットベースのプロトコルおよび／またはデータグラムベースのプロトコルを含めて、通信プロトコルを利用することができる。さらに、ネットワーク（単数または複数）１０４はまた、ネットワーク通信を容易にするいくつかのデバイスを含み、かつ／またはスイッチ、ルータ、ゲートウェイ、アクセスポイント、ファイアウォール、基地局、リピータ、バックボーンデバイスなど、ネットワークについてのハードウェアの基礎を形成することもできる。
【００２０】
[0026]  いくつかの例においては、ネットワーク（単数または複数）１０４は、ワイヤレスアクセスポイント（WAP: wireless access point）など、ワイヤレスネットワークに対する接続を可能にするデバイスをさらに含むことができる。ＷＡＰを通して接続性をサポートする例は、電気電子技術者協会（IEEE: Institute of Electrical and Electronics Engineers）８０２．１１規格（例えば、８０２．１１ｇ、８０２．１１ｎなど）、および他の規格をサポートするＷＡＰを含めて、様々な電磁周波数（例えば、無線周波数）の上でデータを送信し、また受信する。
【００２１】
[0027]  デバイス（単数または複数）１０２は、バス１１０を経由するなど、コンピュータ読取り可能媒体１０８に動作するように接続された１つまたは複数の処理装置（単数または複数）１０６を有する任意のコンピューティングデバイスを含むことができ、このバス１１０は、いくつかの例においては、システムバスと、データバスと、アドレスバスと、ＰＣＩバスと、ミニ−ＰＣＩバスと、任意の様々なローカルバス、周辺バス、および／または独立バスとのうちの１つまたは複数を含むことができる。コンピュータ読取り可能媒体１０８の上に記憶される実行可能な命令は、例えば、オペレーティングシステム１１２と、プラットフォームサポート１１４と、ユーザインターフェース１１６と、処理装置（単数または複数）１０６によってロード可能であり、また実行可能である他のモジュールおよびプログラムとを含むことができる。
【００２２】
[0028]  デバイス（単数または複数）１０２の上のオペレーティングシステム１１２は、それだけには限定されないが、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ、ＷＩＮＤＯＷＳ  ＰＨＯＮＥ、ＱＮＸ（商標）、ＩＢＭ  ｚ／ＯＳ（商標）、ＬＩＮＵＸ、ＡＮＤＲＯＩＤ、ｉＯＳ（商標）、ＯＳ  Ｘ（商標）、ＮＥＴＢＳＤ（商標）、またはコンピュータのハードウェアリソースおよびソフトウェアリソースを管理することができる任意の他のオペレーティングシステムを含めて、任意のオペレーティングシステムとすることができる。いくつかの例においては、デバイス１０２（１）および１０２（２）は、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳなどのオペレーティングシステム１１２を含むことができる。様々な例においては、デバイス１０２（１）は、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳなどのオペレーティングシステム１１２（１）を含むことができるが、デバイス１０２（２）は、ＡＮＤＲＯＩＤのようなオペレーティングシステム１１２（２）を含むことができる。プラットフォームサポート１１４は、クロスデバイスアプリケーションの発見および制御を表す。
【００２３】
[0029]  デバイス（単数または複数）１０２の上のユーザインターフェース１１６は、Ｉ／Ｏインターフェースと一緒に動作して、ユーザ入力に少なくとも基づいて、実行可能な命令をイネーブルにすることができる。ユーザインターフェース１１６は、タッチ入力、ペン入力、マウスクリック、キーボード選択、音声入力、ジェスチャ入力、または任意の他の入力メカニズムのうちの少なくとも１つによってアクティブにすることができる。
【００２４】
[0030]  代わりに、または追加して、本明細書において説明される機能は、アクセラレータなど、１つまたは複数のハードウェアロジックコンポーネントによって少なくとも部分的に実行され得る。例えば、また限定することなしに、使用され得るハードウェアロジックコンポーネントの例示的なタイプは、フィールドプログラマブルゲートアレイ（FPGA: Field-programmable Gate Arrays）、特定用途向け集積回路（ASIC: Application-specific Integrated Circuits）、特定用途向け標準製品（ASSP: Application-specific Standard Products）、システムオンチップシステム（SOC: System-on-a-chip systems）、複合プログラマブルロジックデバイス（CPLD: Complex Programmable Logic Devices）などを含む。例えば、アクセラレータは、ＦＰＧＡファブリックの中に埋め込まれたＣＰＵコースを含んでいる、ＺＹＬＥＸ社やＡＬＴＥＲＡ社からのハイブリッドデバイスなどのハイブリッドデバイスを表すことができる。
【００２５】
[0031]  デバイス（単数または複数）１０２は、デバイス１０２（１）と、デバイス１０２（２）〜１０２（Ｎ）など、タスク連続性に関与する他のネットワーク化デバイスとの間の通信をイネーブルにする１つまたは複数のネットワークインターフェース（単数または複数）１１８を含むこともできる。そのようなネットワークインターフェース（単数または複数）１１８は、１つまたは複数のネットワークインターフェース制御装置（NIC: network interface controllers）または他のタイプのトランシーバデバイスを含んでいて、ネットワークの上で通信を送信し、または受信することができる。例えば、ネットワークインターフェース（単数または複数）１１８は、デバイス（単数または複数）１０２（１）と、デバイス１０２（２）〜１０２（Ｎ）など、クロスデバイスアプリケーションの発見および／または制御に関与する他のネットワーク化デバイスとの間の通信をさらにイネーブルにすることができる近接インターフェースを含むことができる。そのような近接インターフェースは、１つまたは複数の近接ネットワークインターフェース制御装置または他のタイプのトランシーバデバイスを含んでいて、近接ネットワークの上で通信を送信し、また受信することができる。
【００２６】
[0032]  図２は、図１からのデバイス１０２など、クロスデバイスアプリケーション発見および制御システムを含む例示のデバイス２００を示すものである。デバイス２００において、処理装置（単数または複数）２０２は、例えば、ＣＰＵタイプ処理装置、ＧＰＵタイプ処理装置、フィールドプログラマブルゲートアレイ（FPGA）、別のクラスのデジタル信号プロセッサ（DSP: digital signal processor）、またはいくつかの例においては、ＣＰＵによって駆動され得る他のハードウェアロジックコンポーネントを表すことができる。
【００２７】
[0033]  いくつかの例においては、デバイス２００は、デバイス１０２（１）、１０２（２）、１０２（Ｎ）など、複数のデバイスのうちの１つとすることができ、これらのデバイスは、ネットワークを経由して接続することができる。いくつかの例においては、コンピュータ読取り可能媒体１０８とすることができるコンピュータ読取り可能媒体２０４は、処理装置（単数または複数）２０２によって実行可能な命令を記憶することができる。コンピュータ読取り可能媒体２０４は、外部ＣＰＵ、外部ＧＰＵによるなど、外部処理装置によって実行可能な、かつ／またはＦＰＧＡタイプアクセラレータ、ＤＳＰタイプアクセラレータ、任意の他の内部アクセラレータもしくは外部のアクセラレータなど、外部アクセラレータによって実行可能な命令を記憶することもできる。いくつかの例においては、少なくとも１つのＣＰＵ、ＧＰＵ、および／またはアクセラレータが、デバイス２００に組み込まれているが、他の例においては、１つまたは複数のＣＰＵ、ＧＰＵ、および／またはアクセラレータが、デバイス２００に対して外部にあることができる。
【００２８】
[0034]  図の例においては、コンピュータ読取り可能媒体２０４はまた、アプリケーションリポジトリ２０６も含んでいる。いくつかの例においては、アプリケーションリポジトリ２０６は、アプリケーションデータベース、アプリケーションデータウェアハウス、他のタイプの構造化された、または構造化されていないアプリケーションデータストレージなどのアプリケーションストレージを含んでいる。様々な例においては、アプリケーションリポジトリ２０６は、ファイルサイズ、オペレーティングシステム、能力、アプリケーションに特有な任意の他の情報などのアプリケーション情報を記憶する。
【００２９】
[0035]  図の例においては、コンピュータ読取り可能媒体２０４はまた、データストア２０８を含んでいる。いくつかの例においては、データストア２０８は、データベース、データウェアハウス、他のタイプの構造化された、または構造化されていないデータストレージなどのデータストレージを含んでいる。いくつかの例においては、データストア２０８は、コーパス、および／または１つまたは複数のテーブル、インデックス、記憶されたプロシージャを有するリレーショナルデータベースなどを含んでいて、例えば、ハイパーテキストマークアップ言語（HTML: hypertext markup language）テーブル、リソース記述フレームワーク（RDF: resource description framework）テーブル、ウェブオントロジー言語（OWL: web ontology language）テーブル、および／または拡張可能マークアップ言語（XML: extensible markup language）テーブルのうちの１つまたは複数を含むデータアクセスを可能にしている。データストア２０８は、コンピュータ読取り可能媒体２０４に記憶され、かつ／または処理装置（単数または複数）および／またはアクセラレータ（単数または複数）２０２によって実行されるプロセス、アプリケーション、コンポーネント、および／またはモジュールのオペレーションのためのデータを記憶することができる。データストア２０８は、さらに、デバイスメモリ、デバイス速度、および／またはデバイスディスプレイ能力を含むデバイス能力データを記憶することができる。代わりに、上記で参照されたデータのうちの一部または全部が、基盤の１つまたは複数の処理装置（単数または複数）２０２の上の別個のメモリ２１０の上に記憶される可能性もある。
【００３０】
[0036]  デバイス２００は、デバイス２００が、周辺入力デバイス（例えば、キーボード、マウス、ペン、ゲームコントローラ、音声入力デバイス、タッチ入力デバイス、ジェスチャ入力デバイスなど）を含むユーザ入力デバイス、および／または周辺出力デバイス（例えば、ディスプレイ、プリンタ、オーディオスピーカ、触覚出力など）を含む出力デバイスなどの入出力デバイスと通信することを可能にする１つまたは複数の入出力（I/O）インターフェース２１２をさらに含むことができる。さらに、デバイス２００においては、ネットワークインターフェース（単数または複数）１１８とすることができるネットワークインターフェース（単数または複数）２１４は、ネットワークの上で通信を送信し、また受信する、例えば、ネットワークインターフェース制御装置（NIC）または他のタイプのトランシーバデバイスを表すことができる。
【００３１】
[0037]  図の例においては、デバイス２００は、処理装置（単数または複数）２０２をバス２１６を経由して、コンピュータ読取り可能媒体２０４と、Ｉ／Ｏインターフェース（単数または複数）２１２と、ネットワークインターフェース（単数または複数）２１４とに動作可能なように接続することができ、このバス２１６は、バス１１０に対応している。
【００３２】
[0038]  図の例においては、コンピュータ読取り可能媒体２０４はまた、オペレーティングシステム２１８を含んでおり、このオペレーティングシステム２１８は、オペレーティングシステム１１２とすることができる。
【００３３】
[0039]  コンピュータ読取り可能媒体２０４はまた、アプリケーション発見および制御プラットフォームサポート（「プラットフォームサポート」）２２０を含んでおり、このプラットフォームサポート２２０は、プラットフォームサポート１１４とすることができる。プラットフォームサポート２２０は、１つまたは複数のモジュールおよび／またはアプリケーションプログラミングインターフェース（API: application programming interfaces）を含むことができ、これらは、ブロック２２２、２２４、２２６、２２８、２３０、および２３２として示されるが、これは、単に一例にすぎず、また番号は、より高く、またはより低く変化することができる。
【００３４】
[0040]  ブロック２２２、２２４、２２６、２２８、２３０、２３２、２３４、および２３６に関連して説明される機能は、より少数のモジュールおよび／またはＡＰＩによって実行されるように組み合わされてもよく、あるいはその機能は、より多数のモジュールおよび／またはＡＰＩに分割され、またより多数のモジュールおよび／またはＡＰＩによって実行され得る。例えば、ブロック２２２は、リモートデバイス発見モジュールを表すことができる。リモートデバイス発見モジュール２２２は、ネットワークインターフェース２１４を経由して、デバイス（単数または複数）１０２などのリモートデバイスを探索するロジックを含むことができる。リモートデバイス発見モジュール２２２は、ＡＬＬＪＯＹＮモジュール、またはネットワークの上でリモートデバイスを発見することができる任意の他のモジュールとすることができる。いくつかの例においては、リモートデバイス発見モジュール２２２は、リモートデバイスを定期的に探索することができる。いくつかの例においては、定期的な感覚は、ユーザ嗜好の形で設定されるようなユーザによって指定される時間とすることができる。様々な例においては、リモートデバイス発見モジュール２２２は、Ｉ／Ｏインターフェース２１２を経由してユーザ入力に基づいて、リモートデバイスを探索することができる。
【００３５】
[0041]  図の例においては、プラットフォームサポートは、アプリケーション処理モジュール２２４を含むこともできる。いくつかの例においては、アプリケーション処理モジュール２２４は、アプリケーションリポジトリモジュール２０６、および／または外部データストアからアプリケーション能力データの抽出のためにデバイス２００の処理装置（単数または複数）２０２をプログラムするロジックを含んでいる。アプリケーション能力データは、特定のタスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを示すデータを含んでいる。いくつかの例においては、アプリケーション処理モジュール２２４は、特定のタスクを実行するためのユーザの好ましいアプリケーション、アプリケーション使用の周波数、デバイスの上でアプリケーションを実行するためにかかる時間、および／またはユーザ嗜好を示すことになる任意の他のデータを含む、ユーザ嗜好のデータの抽出のために処理装置２０２をプログラムするロジックを含むことができる。
【００３６】
[0042]  いくつかの例においては、アプリケーション処理モジュール２２４は、デバイス２００の上で特定のタスクを実行するようにアプリケーションに指示するロジックを含むことができる。アプリケーション処理モジュール２２４は、デバイス２００の上のディスプレイの上でプレゼンテーションするためにディスプレイモジュールに対して、実行されているタスクに関連するタスクコンテキストデータを送信するロジックをさらに含むことができる。
【００３７】
[0043]  図の例においては、プラットフォームサポート２２０は、ユーザインターフェース２２６を含むことができ、このユーザインターフェース２２６は、ユーザインターフェース１１６とすることができる。ユーザインターフェース２２６は、Ｉ／Ｏインターフェース（単数または複数）２１０を経由して入力に応答するロジックを含むことができる。ユーザインターフェース２２６は、タッチ入力、ペン入力、マウスクリック、キーボード選択、および／または任意の他の入力メカニズムのうちの少なくとも１つによってアクティブにすることができる。入力は、アプリケーション発見クエリ、アプリケーション選択、アプリケーションの起動入力および／または制御入力、および／またはバックグラウンドタスクの起動入力および／または制御入力を含むことができる。Ｉ／Ｏインターフェース（単数または複数）２１０を経由して発見クエリを受信することに応じて、ユーザインターフェース２２６は、リモート制御モジュール２２８が、１つまたは複数のリモートデバイスに対して発見クエリを送信することを可能にする。アプリケーションの起動入力および／または制御入力、および／またはバックグラウンドタスクの起動入力および／または制御入力を受信することに応じて、ユーザインターフェース２２６は、リモート制御モジュール２２８が、１つまたは複数のリモートデバイスに対してそれぞれのメッセージを送信することを可能にする。
【００３８】
[0044]  リモート制御モジュール２２８は、デバイス２００が、ソースデバイスとして動作するときに動作可能なプラットフォームサポート２２０の機能とすることができる。リモート制御モジュール２２８は、データストア２０８から、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および／またはリモートデバイスの信頼性を決定するために使用される任意の他の信頼性ファクタの抽出のために処理装置（単数または複数）２０２をプログラムするロジックを含むことができる。
【００３９】
[0045]  リモート制御モジュール２２８は、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および／または１つまたは複数のリモートデバイスの信頼性を決定する任意の他の信頼性ファクタを適用するロジックを含むことができる。少なくとも１つの例においては、ユーザによって指定された信頼性レベルにおける、または信頼性レベルより上の信頼性は、信頼されるようにラベル付けされているリモートデバイスをもたらす。
【００４０】
[0046]  いくつかの例においては、信頼性は、デバイス２００の上のユーザプロファイルおよび／またはグループプロファイルにマッチするリモートデバイスのユーザプロファイルおよび／またはグループプロファイルに基づいたものとすることができる。いくつかの例においては、信頼性は、リモートデバイスを信頼するためのユーザ嗜好に基づいたものとすることができる。例えば、リモートデバイスを信頼するためのユーザ嗜好は、リモート制御モジュール２２８が、ネットワークを経由して接続される、デバイス１０２（１）〜１０２（Ｎ）など、複数のデバイスが信頼されることを決定するように、あるレベルに設定されてもよい。別の例では、リモートデバイスを信頼するためのユーザ嗜好は、リモート制御モジュール２２８が、１０２（１）〜１０２（３）など、複数のデバイスのうちの少数だけが信頼されることを決定するように、あるレベルに設定されてもよい。
【００４１】
[0047]  リモート制御モジュール２２８は、キャッシュに１つまたは複数の信頼されたリモートデバイスのリストを保存するロジックをさらに含むことができる。いくつかの例においては、キャッシュは、リモート制御モジュール２２８が、１つまたは複数のリモートデバイスの信頼性を決定することに応じてアップデートされてもよい。
【００４２】
[0048]  リモート制御モジュール２２８は、ネットワークインターフェース２１４を経由して、デバイス２００と、１つまたは複数の信頼されたリモートデバイスとの間の通信チャネルをオープンするように、リモートデバイス発見モジュール２２２にさせる処理装置（単数または複数）２０２をプログラムするロジックを含むことができる。通信チャネルは、メッセージ、および／またはテキスト、画像、および／または特定のアプリケーションタスクに関連する任意の他のデータを含むタスクコンテキストデータなど、デバイスの間のデータ転送を提供することができる。通信チャネルは、デバイスが、もはや発見可能でなくなり、デバイスが、もはや信頼されなくなり、かつ／またはユーザインターフェース２２６を経由した入力が、デバイスを切り離すまで、オープンのままにとどまることができる。
【００４３】
[0049]  リモート制御モジュール２２８は、ネットワークインターフェース２１４を経由して、デバイス１０２（Ｎ）など、１つまたは複数の信頼されたリモートデバイスに対して、１つまたは複数のシリアル化されたメッセージを送信するロジックをさらに含むことができる。１つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージを含むことができる。いくつかの例においては、シリアル化されたメッセージは、ＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクト表記法フォーマット、ＹＡＭＬフォーマット、ＸＭＬフォーマット、またはデータを送信するために使用され得る任意の他のフォーマットとすることができる。
【００４４】
[0050]  いくつかの例においては、リモート制御モジュール２２８は、１つまたは複数の信頼されたターゲットデバイスに対して、アプリケーション発見クエリを送信するロジックを含むことができる。アプリケーション発見クエリは、ユーザインターフェース２２６を通して入力に少なくとも部分的に基づいたものとすることができ、その入力は、特定のタスクを実行することができるアプリケーションについての少なくともクエリである。アプリケーション発見クエリは、特定のタスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを含めて、１つまたは複数の信頼されたデバイスに対するアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、１つまたは複数の信頼されたデバイスについての、デバイスメモリ、速度、および／またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
【００４５】
[0051]  リモート制御モジュール２２８は、１つまたは複数の信頼されたリモートデバイスから１つまたは複数の発見応答メッセージを受信するロジックを含むことができる。いくつかの例においては、１つまたは複数の発見応答メッセージは、１つまたは複数の信頼されたリモートデバイスの上でタスクを実行することができる少なくとも１つのアプリケーション、少なくとも１つのアプリケーションについてのアプリケーション能力、および／または１つまたは複数の信頼されたリモートデバイスについてのデバイス能力を含むことができる。いくつかの例においては、１つまたは複数の発見応答メッセージは、リモートデバイス、および／またはリモートデバイスの上のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
【００４６】
[0052]  いくつかの例においては、リモート制御モジュール２２８は、１つまたは複数の発見応答メッセージに少なくとも部分的に基づいて、１つまたは複数の信頼されたリモートデバイスの上でアプリケーションを選択するロジックを含むことができる。その選択は、アプリケーション能力、リモートデバイス能力、リモートデバイスの信頼性、リモートデバイスのユーザプロファイル、リモートデバイスのグループプロファイル、および／またはユーザ嗜好に基づいたものとすることができる。いくつかの例においては、リモート制御モジュール２２８は、特定のリモートデバイスの上でアプリケーションを選択することができる。様々な例においては、リモート制御モジュール２２８は、タスクが、複数のリモートデバイスの上で同時に実行され得るように、複数のリモートデバイスの上でアプリケーションを選択することができる。
【００４７】
[0053]  リモート制御モジュール２２８は、ネットワークインターフェース２１４を経由して、１つまたは複数の信頼されたリモートデバイスに対して、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージを送信するロジックをさらに含むことができる。様々な例においては、アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージは、ユーザインターフェース２２６を経由したユーザ入力に少なくとも部分的に基づいたものとすることができる。いくつかの例においては、リモート制御モジュール２２８は、ソースデバイスの上のアプリケーションからの入力に基づいて、アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージを送信することができる。いくつかの例においては、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージは、１つまたは複数のＡＰＩフックを含むことができ、その１つまたは複数のＡＰＩフックは、アプリケーションおよび／またはバックグラウンドタスクのリモート制御を可能にしている。
【００４８】
[0054]  いくつかの例においては、リモート制御モジュール２２８は、１つまたは複数の信頼されたリモートデバイスから、アプリケーションおよび／またはバックグラウンドの起動応答メッセージおよび／または制御応答メッセージを受信するロジックを含むことができる。アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、１つまたは複数の信頼されたリモートデバイスについてのアプリケーションおよび／またはバックグラウンドタスクの成功した起動および／または制御についての少なくとも通知を含むことができる。いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、１つまたは複数の信頼されたリモートデバイスの上のディスプレイの上の成功したプレゼンテーションについての通知を含むことができる。
【００４９】
[0055]  いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、ソースデバイスの上のアプリケーションの上で実行されるタスクに関連するタスクコンテキストデータを含むことができる。タスクコンテキストデータは、テキスト、画像、および／またはアプリケーションの上で実行されるタスクに関連する任意の他のデータを含むことができる。そのような例においては、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、タスクコンテキストデータ入力が、ストリーミングデータの形でアップデートされるように、ストリーミングデータを含むことができる。リモート制御モジュール２２８は、ストリーミングデータを処理し、またそれをデバイス２００の上で表示するためにディスプレイモジュール２３０に対して送信するロジックを含むことができる。
【００５０】
[0056]  図の例においては、プラットフォームサポート２２０は、アプリケーション発見および制御マネージャモジュール２３２を含むことができる。アプリケーション発見および起動マネージャモジュール２３２は、デバイス２００が、ターゲットデバイスとして動作するときに動作可能なプラットフォームサポート２２０の機能とすることができる。アプリケーション発見および制御マネージャモジュール２３２は、ネットワークインターフェース２１４を経由して、デバイス１０２（Ｎ）などのソースデバイスから１つまたは複数のシリアル化されたメッセージを受信するロジックを含むことができる。１つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージを含むことができる。いくつかの例においては、シリアル化されたメッセージは、ＪａｖａＳｃｒｉｐｔオブジェクト表記法フォーマット、ＹＡＭＬフォーマット、ＸＭＬフォーマット、または人間による読取り可能テキストを使用してデータを送信する任意の他のフォーマットとすることができる。
【００５１】
[0057]  アプリケーション発見および起動マネージャモジュール２３２は、アプリケーションリポジトリ２０６からのアプリケーション能力データの抽出のために処理装置（単数または複数）２０２をプログラムするロジックを含むことができる。アプリケーション能力データは、特定のタスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを示すデータを含むことができる。アプリケーション発見および起動マネージャモジュール２３２は、データストア２０８からデバイス能力データを抽出するために処理装置（単数または複数）２０２をプログラムするロジックをさらに含むことができる。デバイス能力データは、１つまたは複数の信頼されたデバイスについての、デバイスメモリ、速度、および／またはディスプレイ能力を含むことができる。
【００５２】
[0058]  アプリケーション発見および制御マネージャモジュール２３２は、ソースデバイスからアプリケーション発見クエリを受信するロジックを含むことができる。アプリケーション発見クエリは、タスクを実行することができる、リモートデバイスの上のアプリケーションの少なくとも存在、および／またはタスクを実行するリモートデバイス能力を要求することができる。アプリケーション発見および制御マネージャモジュール２３２は、アプリケーションリポジトリ２０６から抽出されるアプリケーション能力データと、データストアから抽出されるデバイス能力データとをプールし、また１つまたは複数の発見応答メッセージを生成するロジックを含むことができる。いくつかの例においては、発見応答メッセージは、シリアル化されたメッセージとすることができる。
【００５３】
[0059]  アプリケーション発見および制御マネージャモジュール２３２は、ソースデバイスに対して発見応答メッセージを送信するロジックを含むことができ、発見応答メッセージは、アプリケーション能力データ、デバイス能力データ、タスクを実行することができるアプリケーションの欠如、および／またはリモートデバイスについての、アプリケーションの上で実行されるタスクをサポートすることができないことを含んでいる。
【００５４】
[0060]  アプリケーション発見および制御マネージャモジュール２３２は、ソースデバイスからアプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージを受信するロジックを含むことができる。アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージは、１つまたは複数のＡＰＩフックを含むことができ、その１つまたは複数のＡＰＩフックは、アプリケーションおよび／またはバックグラウンドタスクのリモート制御を可能にしている。
【００５５】
[0061]  アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージを受信することに応じて、アプリケーション発見および制御マネージャモジュール２３２は、アプリケーションおよび／またはバックグラウンドタスクのリモートの起動および／または制御を可能にすることができる。例えば、ソースデバイスの上のリモート制御は、ビデオアプリケーションをアクティブにし、また映画を再生するメッセージなど、アプリケーション起動メッセージを送信することができる。アプリケーション発見および制御マネージャモジュール２３２は、そのメッセージを受信し、またメッセージに応じて、アプリケーションをアクティブにし、また映画を再生することができる。別の例では、ターゲットデバイスは、ビデオアプリケーションの上で映画を再生していることもできる。アプリケーション発見および制御マネージャモジュール２３２は、ソースデバイスからアプリケーション制御メッセージを受信することができ、そのアプリケーション制御メッセージは、映画を一時停止させるようにビデオアプリケーションに指示している。アプリケーション制御メッセージを受信することに応じて、アプリケーション発見および制御マネージャモジュール２３２は、映画を一時停止させることができる。
【００５６】
[0062]  アプリケーション発見および制御マネージャモジュール２３２は、ソースデバイスに対して起動応答メッセージを送信するロジックを含むことができる。いくつかの例においては、起動応答メッセージは、ターゲットデバイスの上のアプリケーションおよび／またはバックグラウンドタスクの成功した起動および／または制御についての通知を含むことができる。いくつかの例においては、起動応答メッセージは、ターゲットデバイスの上のディスプレイの上のタスクコンテキストデータの成功したプレゼンテーションについての通知を含むことができ、そのタスクコンテキストデータは、アプリケーションの上で実行されるタスクに関連している。そのような例においては、アプリケーションモデル発見および制御マネージャモジュール２３２は、ディスプレイモジュール２３０に対して、ターゲットデバイスの上でアプリケーションの中で実行されるタスクに関連するタスクコンテキストデータを送信するロジックを含むことができる。
【００５７】
[0063]  いくつかの例においては、起動応答メッセージは、ソースデバイスの上のディスプレイの上のプレゼンテーションのためのタスクコンテキストデータを含むことができる。例えば、ユーザは、スマートフォンの上で表示するべき、複雑な計算の結果を望むことができるが、スマートフォンは、計算を実行することができない可能性がある。ユーザインターフェースを経由した計算のためのユーザ入力に応じて、スマートフォンのリモート制御モジュールは、１つまたは複数のリモートの信頼されたデバイスに対して発見要求クエリを送信することができる。発見要求クエリは、複雑な計算を実行する、アプリケーションおよび／またはデバイスの能力についてのインジケーションを含むことができる。信頼されたリモートデバイスのうちの１つは、デバイス１０２（１）などのデスクトップコンピュータとすることができる。デスクトップコンピュータの上のアプリケーション発見および制御マネージャモジュール２３２は、アプリケーションとデバイスとの両方が、タスクを実行することができることを示す、アプリケーションとデバイスとの両方の能力データを有する発見応答メッセージを送信することができる。その発見応答メッセージに応じて、スマートフォンの上のリモート制御モジュールは、アプリケーション起動メッセージを送信することができる。
【００５８】
[0064]  アプリケーション起動メッセージに応じて、デスクトップコンピュータの上のアプリケーション発見および制御マネージャモジュール２３２は、アプリケーションをアクティブにし、タスクを実行し、また起動応答メッセージを送信することができる。その起動応答メッセージは、複雑な計算の結果を有するタスクコンテキストデータを含むことができる。スマートフォンの上のリモート制御モジュールは、スマートフォンの上のディスプレイの上のプレゼンテーションのために、ディスプレイモジュール２３０などのディスプレイモジュールに対してタスクコンテキストデータをルーティングすることができる。
【００５９】
[0065]  いくつかの例においては、ディスプレイモジュール２３０は、ディスプレイの上に、デバイス２００の上のアプリケーションの上で実行されているタスクに関連するタスクコンテキストデータを提示するロジックを含んでいる。いくつかの例においては、デバイス２００は、ソースデバイスとして動作することができ、またリモート制御モジュール２２８は、ディスプレイモジュール２３０に対して、リモートアプリケーションの上で実行されているタスクについてのストリーミングタスクコンテキストデータを送信することができる。いくつかの例においては、デバイス２００は、ターゲットデバイスとして動作することができ、またアプリケーション発見および起動マネージャ２３２は、デバイス２００の上のアプリケーションの上でタスク実行をアクティブにし、かつ／または制御することができる。そのような例においては、アプリケーション発見および起動マネージャ２３２は、デバイス２００の上で表示するためにディスプレイモジュール２３０に対してタスクコンテキストデータを送信するようにアプリケーション処理モジュール２２４をプログラムするロジックを含むことができる。
【００６０】
[0066]  図３は、それぞれがクロスデバイスアプリケーション発見および制御システムを含んでいる、デバイス１０２（１）および１０２（２）など、例示のソースデバイスと、例示のターゲットデバイスとの選択コンポーネントを示すものである。図の例においては、ソースデバイス３０２は、ソースデバイスとして動作することができ、またターゲットデバイス３０４は、ターゲットデバイスとして動作することができるが、これは、単に一例であるにすぎず、また各デバイス３０２および３０４は、ソースデバイスモジュールと、ターゲットデバイスモジュールとの両方を含むことができる。ソースデバイス３０２は、ターゲットデバイス３０４の上のアプリケーションおよび／またはバックグラウンドタスクのリモートの発見、起動、および制御を可能にすることができる。ターゲットデバイス３０４は、発見を可能にすることができ、またソースデバイス３０２が、ターゲットデバイス３０４の上で１つまたは複数のアプリケーションをシームレスにアクティブにし、また制御することを可能にすることができる。
【００６１】
[0067]  ブロック３０６（１）、３０８、および３１０に関連して説明されるソースデバイス３０２の機能は、より少数のモジュールおよび／またはＡＰＩによって実行されるように組み合わされてもよく、あるいはより多数のモジュールおよび／またはＡＰＩに分割され、またより多数のモジュールおよび／またはＡＰＩによって実行され得る。同様に、ブロック３０６（２）、３１２、３１４、３１６、および３１８に関連して説明されるターゲットデバイス３０４の機能は、より少数のモジュールおよび／またはＡＰＩによって実行されるように組み合わされてもよく、あるいはより多数のモジュールおよび／またはＡＰＩに分割され、またより多数のモジュールおよび／またはＡＰＩによって実行され得る。
【００６２】
[0068]  図の例においては、ソースデバイス３０２は、リモートデバイス発見モジュール２２２に対応しているリモートデバイス発見モジュール３０６（１）を含むことができる。
【００６３】
[0069]  いくつかの例においては、ソースデバイス３０２は、リモートデバイス発見モジュール３０６（１）および３０６（２）を経由してターゲットデバイス３０４を発見することができる。様々な例においては、リモートデバイス発見モジュール３０６（１）および３０６（２）は、ソースデバイス３０２と、ターゲットデバイス３０４との間の通信チャネルを提供することができる。ターゲットデバイス３０４を発見することに応じて、リモートデバイス発見モジュール３０６（１）は、ターゲットデバイス３０４の信頼性情報を受信することができる。ターゲットデバイス３０４の信頼性情報は、ターゲットデバイスユーザプロファイル、ターゲットデバイスグループユーザプロファイル、および／またはリモートデバイスの信頼性を決定するために使用される任意の他のデータを含むことができる。リモートデバイス発見モジュール３０６（１）は、リモート制御モジュール２２２に対応しているリモート制御モジュール３０８に対してターゲットデバイスの信頼性情報を送信することができる。
【００６４】
[0070]  リモート制御モジュール３０８は、リモートデバイス発見モジュール３０６（１）からターゲットデバイスの信頼性情報を受信し、またそれをソースデバイス３０２の信頼性設定と比較することができる。ターゲットデバイスの信頼性情報は、ユーザプロファイル、グループプロファイル、および／またはターゲットデバイスが信頼され得るかどうかを決定するために使用される任意の他の情報を含むことができる。ソースデバイス３０２の信頼性設定は、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および／またはリモートデバイス３０４が信頼され得るかどうかを決定するために使用される任意の他の信頼性ファクタを含むことができる。
【００６５】
[0071]  いくつかの例においては、信頼性は、ターゲットデバイス３０４のユーザプロファイル、ユーザプロファイルにマッチするグループプロファイル、および／またはソースデバイス３０２の上のグループプロファイルに基づいたものとすることができる。いくつかの例においては、信頼性は、リモートデバイスを信頼するためのユーザ嗜好に基づいたものとすることができる。例えば、リモートデバイスを信頼するためのユーザ嗜好は、モデルリモート制御モジュール３０８が、デバイス１０２（１）〜１０２（Ｎ）など、複数のデバイスが、信頼されることを決定することができるように、あるレベルに設定されてもよい。別の例では、リモートデバイスを信頼するためのユーザ嗜好は、リモート制御モジュール３０８が、１０２（１）〜１０２（３）など少数の複数のデバイスだけが信頼されることを決定することができるように、あるレベルに設定されてもよい。
【００６６】
[0072]  ターゲットデバイス３０４が、信頼されたデバイスであるという決定に応じて、リモート制御モジュール３０８は、キャッシュにターゲットデバイスを保存することができる。いくつかの例においては、ターゲットデバイス３０４が、信頼されたデバイスであるという決定に応じて、リモート制御モジュール３０８は、リモートデバイス発見モジュール３０６（１）および３０６（２）を経由して、ソースデバイス３０２と、ターゲットデバイス３０４との間に通信チャネルをオープンすることができる。通信チャネルは、テキスト、画像、および／または特定のアプリケーションタスクに関連する任意の他のデータを含むメッセージおよび／またはタスクコンテキストデータなど、デバイスの間のデータ転送を提供することができる。通信チャネルは、デバイスが、もはや発見可能でなくなり、デバイスが、もはや信頼されなくなり、かつ／またはユーザインターフェース２２６などのユーザインターフェースの上の入力が、デバイスを切り離すまで、オープンのままにとどまることができる。
【００６７】
[0073]  いくつかの例においては、リモート制御モジュール３０８は、通信チャネルを経由して、ターゲットデバイス３０４に対して、１つまたは複数のシリアル化されたメッセージを送信することができる。その１つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージを含むことができる。
【００６８】
[0074]  いくつかの例においては、リモート制御モジュール３０８は、ターゲットデバイス３０４の上でアプリケーション発見および制御マネージャモジュール３１２に対して、アプリケーション発見クエリを送信することができる。アプリケーション発見クエリは、ユーザインターフェース２２６などのユーザインターフェースを通しての入力に少なくとも部分的に基づいたものとすることができる。ユーザインターフェースを通しての入力は、特定のタスクを実行することができるアプリケーションについてのクエリとすることができる。アプリケーション発見クエリは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを含めて、１つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、デバイスメモリ、速度、および／または１つまたは複数の信頼されたデバイスについてのディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
【００６９】
[0075]  アプリケーション発見クエリを受信することに応じて、アプリケーション発見および制御マネージャモジュール３１２は、アプリケーションリポジトリ３１４からアプリケーション能力データを抽出することができる。アプリケーション能力データは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを含むことができる。いくつかの例においては、アプリケーション発見クエリを受信することに応じて、アプリケーション発見および制御マネージャモジュール３１２は、データストア２０８などのデータストアからデバイス能力データを抽出することができる。デバイス能力データは、デバイスメモリ、速度、および／または１つまたは複数の信頼されたデバイスについてのディスプレイ能力を含むことができる。
【００７０】
[0076]  アプリケーション発見および制御マネージャモジュール３１２は、タスクを実行することができる１つまたは複数のアプリケーションについてのアプリケーション能力データ、および／またはデバイス能力データをプールすることができる。アプリケーション発見および制御マネージャモジュール３１２は、発見応答メッセージの形でリモート制御モジュール３０８に対して、アプリケーションおよび／またはデバイスの能力データを送信することができる。いくつかの例においては、発見応答メッセージは、タスクを実行することができるアプリケーションの欠如、および／またはリモートデバイス３０４の、アプリケーションの上で実行されるタスクをサポートすることができないこと、についての通知を含むことができる。
【００７１】
[0077]  ターゲットデバイス３０４の上の１つまたは複数のアプリケーションについての能力データを受信することに応じて、ソースデバイス３０２の上のアプリケーションは、リモート制御モジュール３０８を経由して、タスクを実行するための好ましいアプリケーションを選択することができる。いくつかの例においては、ユーザは、モデルリモート制御モジュール３０８の中のユーザインターフェースを経由して、タスクを実行するための好ましいアプリケーションを選択することができる。その選択は、アプリケーション能力、リモートデバイス能力、リモートデバイスの信頼性、リモートデバイスのユーザプロファイル、および／またはユーザ嗜好に基づいたものとすることができる。様々な例においては、アプリケーションおよび／またはユーザは、タスクが、複数のリモートデバイスの上で同時に実行され得るように、複数のリモートデバイスの上の好ましいアプリケーションを選択することができる。
【００７２】
[0078]  いくつかの例においては、リモート制御モジュール３０８は、通信チャネルを経由して、ターゲットデバイス３０４の上のアプリケーション発見および制御マネージャモジュール３１４に対してアプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージを送信することができる。いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージは、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージを含むことができる。様々な例においては、アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージは、ユーザインターフェース２２６などのユーザインターフェースを経由したユーザ入力に少なくとも部分的に基づいたものとすることができる。いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージは、１つまたは複数のＡＰＩフックを含むことができ、その１つまたは複数のＡＰＩフックは、アプリケーションおよび／またはバックグラウンドタスクのリモート制御を可能にしている。
【００７３】
[0079]  アプリケーションおよび／またはバックグラウンドタスク起動メッセージおよび／または制御メッセージを受信することに応じて、アプリケーション発見および制御マネージャモジュール３１４は、アプリケーションマネージャ３１６に対して、ある信号を送信して、アプリケーションおよび／またはバックグラウンドタスクのリモートの起動および／または制御を可能にすることができる。その信号は、ソースデバイス３０２の中のリモート制御モジュール３０８によって指示される起動および／または制御のデータを含むことができる。いくつかの例においては、アプリケーションマネージャ３１６は、アプリケーション発見および制御マネージャモジュール３１２と組み合わされてもよい。いくつかの例においては、アプリケーションマネージャ３１６は、アプリケーション発見および制御マネージャモジュール３１２に動作可能に接続された別個のモジュールとすることができる。
【００７４】
[0080]  いくつかの例においては、アプリケーションマネージャ３１６は、アプリケーション３１８をアクティブにし、かつ／または制御することができる。例えば、ソースデバイスの上のリモート制御モジュールは、アプリケーション３１８などのビデオアプリケーションをアクティブにし、また映画を再生するメッセージなど、アプリケーション起動メッセージを送信することができる。アプリケーション発見および制御マネージャモジュール３１４は、アプリケーション起動メッセージを受信し、またアプリケーション起動メッセージをアプリケーションマネージャ３１６に対して送信することができる。アプリケーション起動メッセージを受信することに応じて、アプリケーションマネージャ３１６は、ビデオアプリケーションをアクティブにし、またターゲットデバイス３０４の上で映画を再生することができる。別の例では、ターゲットデバイス３０４は、アプリケーション３１８などのビデオアプリケーションの上で映画を再生していることができる。アプリケーション発見および制御マネージャモジュール３１４は、映画を一時停止させる命令を有する、アプリケーション制御メッセージをソースデバイス３０２から受信することができる。アプリケーション発見および制御マネージャモジュール３１４は、アプリケーション制御メッセージをアプリケーションマネージャ３１６に対して送信することができる。アプリケーション制御メッセージに応じて、アプリケーションマネージャ３１６は、アプリケーション３１８の上で映画を一時停止させることができる。
【００７５】
[0081]  いくつかの例においては、アプリケーション発見および制御マネージャモジュール３１４は、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージをリモート制御モジュール３０８に対して送信することができる。いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、ターゲットデバイス３０４の上のアプリケーションおよび／またはバックグラウンドタスクの成功した起動および／または制御についての通知を含むことができる。いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、ターゲットデバイス３０４の上のディスプレイの上のアプリケーションの上のタスクの成功したプレゼンテーションについての通知を含むことができる。
【００７６】
[0082]  いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、ソースデバイス３０２のディスプレイ３１０の上のプレゼンテーションのためのストリーミングタスクコンテキストデータを含むことができる。タスクコンテキストデータは、テキスト、画像、および／またはアプリケーションの上で実行されるタスクに関連する任意の他のデータを含むことができる。リモート制御モジュール３０８は、ストリーミングデータを処理し、またそれをソースデバイス３０２の上の表示のためのディスプレイモジュール３１０に対して送信するロジックを含むことができる。
【００７７】
[0083]  例えば、ソースデバイス３０２は、スマートフォンとすることができる。ユーザは、ソースデバイス３０２の上で表示すべき、複雑な計算の結果を望むことができるが、スマートフォンは、計算を実行することができない可能性がある。ユーザインターフェースを経由した計算についてのユーザ入力に応じて、リモート制御モジュール３０８は、発見要求クエリを１つまたは複数のリモートの信頼されたデバイスに対して送信することができる。発見要求クエリは、アプリケーションおよび／またはデバイスの複雑な計算を実行する能力を含むことができる。ターゲットデバイス３０４は、デバイス１０２（１）などのデスクトップコンピュータとすることができる。アプリケーション発見および制御マネージャモジュール３１２は、アプリケーション３１８と、ターゲットデバイス３０４との両方の能力データを有する、アプリケーション３１８と、ターゲットデバイス３０４との両方が、タスクを実行することができることを示す発見応答メッセージを送信することができる。発見応答メッセージに応じて、リモート制御モジュール３０８は、アプリケーション３１８をアクティブにするようにターゲットデバイス３０４に指示する、アプリケーション起動メッセージを送信することができる。
【００７８】
[0084]  アプリケーション起動メッセージに応じて、アプリケーション発見および制御マネージャモジュール３１２は、アプリケーションマネージャ３１６に対して信号で伝えて、アプリケーションをアクティブにし、またタスクを実行することができる。アプリケーションに応じて、アプリケーションモデル発見および制御マネージャモジュール３１２は、モデルリモート制御３０８に対して起動応答メッセージを送信することができ、その起動応答メッセージは、複雑な計算の結果を有するタスクコンテキストデータを含んでいる。リモート制御モジュール３０８は、ソースデバイス３０２の上のディスプレイの上のプレゼンテーションのために、タスクコンテキストデータをディスプレイモジュール３１０に対してルーティングすることができる。
【００７９】
[0085]  図４は、クロスデバイスアプリケーション発見および制御システムに整合したクロスデバイスアプリケーションのリモート制御モジュールの選択コンポーネントを示すものである。
【００８０】
[0086]  ブロック４０２、４０４、４０６、４０８、４１０および４１２に関連して説明される機能は、より少数のモジュールおよび／またはＡＰＩによって実行されるように組み合わされてもよく、あるいはその機能は、より多数のモジュールおよび／またはＡＰＩに分割され、またより多数のモジュールおよび／またはＡＰＩによって実行され得る。例えば、ブロック４０２は、アプリケーションモデルクライアントを表すことができる。アプリケーションモデルクライアント４０２は、リモートデバイス発見モジュール２２２などのリモートデバイス発見モジュールから１つまたは複数の発見されたデバイスのリストを受信することができる。いくつかの例においては、１つまたは複数の発見されたデバイスのリストは、少なくともターゲットデバイスの信頼性情報を含むことができる。ターゲットデバイスの信頼性情報は、ユーザプロファイル、グループプロファイル、および／またはターゲットデバイスが信頼され得るかどうか決定するために使用される任意の他の情報を含むことができる。ソースデバイス３０２の信頼性設定は、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および／またはリモートデバイス３０４が信頼され得るかどうかを決定するために使用される任意の他の信頼性ファクタを含むことができる。
【００８１】
[0087]  いくつかの例においては、アプリケーションモデルクライアント４０２は、ソースデバイスの信頼性設定と信頼性情報を比較することにより、１つまたは複数のリモートデバイスの信頼性を決定することができる。いくつかの例においては、１つまたは複数のリモートデバイスは、ユーザプロファイルおよび／またはグループプロファイルを共有するソースデバイスとターゲットデバイスとに基づいて、信頼することができる。いくつかの例においては、１つまたは複数のリモートデバイスは、リモートデバイスを信頼するためのユーザ嗜好に基づいて、信頼することができる。例えば、ユーザは、ネットワークの上で発見可能な任意のデバイスを信頼する好みを設定することができる。
【００８２】
[0088]  １つまたは複数のリモートデバイスの信頼性を決定することに応じて、アプリケーションモデルクライアント４０２は、リモートデバイスキャッシュ４０４に信頼されたリモートデバイスのリストを記憶することができる。リモートデバイスキャッシュ４０４は、信頼されたリモートデバイスに対する少なくとも容易なアクセスを提供することができる。
【００８３】
[0089]  いくつかの例においては、アプリケーションモデルクライアント４０２は、ネットワークインターフェースを経由して、デバイス１０２（Ｎ）など、１つまたは複数の信頼されたリモートデバイスに対して１つまたは複数のシリアル化されたメッセージを送信することができる。１つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージを含むことができる。
【００８４】
[0090]  いくつかの例においては、アプリケーションモデルクライアント４０２は、１つまたは複数の信頼されたターゲットデバイスに対してアプリケーション発見クエリ４０６を送信するロジックを含むことができる。アプリケーション発見クエリ４０６は、ユーザインターフェースを経由したユーザ入力に少なくとも部分的に基づいたものとすることができ、その入力は、タスクを実行することができるアプリケーションについての少なくともクエリである。アプリケーション発見クエリ４０６は、タスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを含めて、１つまたは複数の信頼されたデバイスについてのアプリケーション能力データについての、要求を含むことができる。いくつかの例においては、アプリケーション発見クエリは、デバイスメモリ、速度、および／または１つまたは複数の信頼されたデバイスについてのディスプレイ能力などのデバイス能力データについての要求を含むことができる。
【００８５】
[0091]  いくつかの例においては、アプリケーションモデルクライアント４０２は、１つまたは複数の信頼されたリモートデバイスから１つまたは複数の発見応答メッセージ４０８を受信することができる。１つまたは複数の発見応答メッセージ４０８は、１つまたは複数の信頼されたリモートデバイスの上でタスクを実行することができる少なくとも１つのアプリケーション、その少なくとも１つのアプリケーションについてのアプリケーション能力、および／または１つまたは複数の信頼されたリモートデバイスについてのデバイス能力を含むことができる。いくつかの例においては、１つまたは複数の発見応答メッセージ４０８は、リモートデバイス、および／またはリモートデバイスの上のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
【００８６】
[0092]  １つまたは複数の発見応答メッセージ４０８を受信することに応じて、アプリケーションモデルクライアント４０２は、１つまたは複数の発見応答メッセージを処理し、また発見応答メッセージをリモートアプリケーション発見クライアント４１０に対して送信することができる。いくつかの例においては、リモートアプリケーション発見クライアント４１０は、発見応答メッセージにおけるアプリケーションの信頼性を決定することができる。アプリケーションの信頼性は、ユーザ嗜好および／またはアプリケーション設定に基づいたものとすることができる。そのような例においては、リモートアプリケーション発見クライアント４１０は、そのユーザ嗜好および／またはアプリケーション設定を１つまたは複数の発見応答メッセージに適用し、また信頼されないアプリケーションをフィルタにかけて取り除くことができる。
【００８７】
[0093]  いくつかの例においては、リモートアプリケーション発見クライアント４１０は、アプリケーションおよび／または信頼されたアプリケーションのデバイス能力データを処理し、また各々のそれぞれの信頼されたアプリケーションについての能力データを１つまたは複数のリモートアプリケーションファイルへと統合することができる。リモートアプリケーション発見クライアント４１０は、１つまたは複数のリモートアプリケーションファイルをリモートアプリケーションファイルリミッタ４１２に対して送信することができる。
【００８８】
[0094]  リモートアプリケーションファイルリミッタ４１２は、１つまたは複数のリモートアプリケーションファイルからのリモートアプリケーションファイルの選択を可能にすることができる。いくつかの例においては、ソースデバイスの上のアプリケーションは、リモートアプリケーションファイルを選択することができる。様々な例においては、ユーザは、ユーザインターフェース４１４を経由してリモートアプリケーションファイルを選択することができる。
【００８９】
[0095]  いくつかの例においては、リモートアプリケーションファイルの選択は、アプリケーション能力データおよび／またはデバイス能力データに少なくとも部分的に基づいたものとすることができる。例えば、３つのリモートアプリケーションファイルが、リモートアプリケーションファイルリミッタ４１２に対して送信される可能性があり、各リモートアプリケーションファイルは、映画を再生することができるアプリケーションに関連している。リモートアプリケーションファイルリミッタ４１２は、最大のディスプレイを有するデバイスの上のアプリケーションに関連するリモートアプリケーションファイルを選択することができる。別の例では、リモートアプリケーションファイルリミッタ４１２は、ユーザによって好まれるアプリケーションに関連するリモートアプリケーションファイルを選択することができる。
【００９０】
[0096]  リモートアプリケーションファイルリミッタ４１２は、リモートアプリケーション起動および制御クライアント４１６に対して選択されたリモートアプリケーションファイルを送信することができる。いくつかの例においては、リモートアプリケーション起動および制御クライアント４１６は、アプリケーションモデルクライアント４０２を経由して１つまたは複数のアプリケーション起動メッセージおよび／または制御メッセージ４１８を生成することができる。いくつかの例においては、アプリケーション起動メッセージおよび／または制御メッセージ４１８は、シリアル化されたメッセージとすることができる。いくつかの例においては、アプリケーション起動メッセージおよび／または制御メッセージ４１８は、アプリケーションをアクティブにし、かつ／または制御するようにターゲットデバイスに指示することができる。様々な例においては、アプリケーション起動メッセージおよび／または制御メッセージ４１８は、バックグラウンドタスクをアクティブにし、かつ／または制御するようにターゲットデバイスに指示することができる。
【００９１】
[0097]  いくつかの例においては、１つまたは複数のアプリケーション起動メッセージおよび／または制御メッセージ４１８は、リモートアプリケーションファイルリミッタ４１２から受信されるリモートアプリケーションファイルに少なくとも部分的に基づいたものとすることができる。例えば、リモートアプリケーション起動および制御クライアント４１６は、ＮＥＴＦＬＩＸアプリケーションに関連するリモートアプリケーションファイルを受信することができる。ＮＥＴＦＬＩＸアプリケーションに関連するリモートアプリケーションファイルを受信することに応じて、リモートアプリケーション起動および制御クライアント４１６は、ＮＥＴＦＬＩＸアプリケーションをアクティブにするようにリモートデバイスに指示するアプリケーション起動メッセージを生成することができる。
【００９２】
[0098]  いくつかの例においては、リモートアプリケーション起動および制御クライアント４１６は、ユーザインターフェース４１８からの入力に少なくとも部分的に基づいてアプリケーション起動メッセージおよび／または制御メッセージ４１８を生成することができる。例えば、ユーザは、リモートデバイスの上のＮＥＴＦＬＩＸアプリケーションの上で再生している映画を一時停止させたいと思う可能性がある。ユーザは、Ｉ／Ｏインターフェース２１２などのＩ／Ｏインターフェースを経由してユーザインターフェース４１４の上で一時停止制御を選択することができる。ユーザインターフェース４１４は、リモートアプリケーション起動および制御クライアント４１６に対して入力を送信することができ、このリモートアプリケーション起動および制御クライアント４１６は、アプリケーション起動メッセージおよび／または制御メッセージ４１８を生成することができる。リモートアプリケーション起動および制御クライアント４１２は、アプリケーションモデルクライアント４０２を経由して、リモートデバイスに対してアプリケーション起動メッセージおよび／または制御メッセージ４１８を送信することができ、アプリケーション制御メッセージ４１８は、ＮＥＴＦＬＩＸアプリケーションを一時停止させるようにリモートデバイスに指示する。
【００９３】
[0099]  様々な例においては、アプリケーションモデルクライアント４０２は、ターゲットデバイスから起動応答メッセージおよび／または制御応答メッセージ４２０を受信することができる。いくつかの例においては、起動応答メッセージおよび／または制御応答メッセージ４２０は、ターゲットデバイスの上のアプリケーションおよび／またはバックグラウンドタスクの成功した起動および／または制御についての通知を含むことができる。いくつかの例においては、アプリケーションおよび／またはバックグラウンドタスクの起動応答メッセージおよび／または制御応答メッセージは、ターゲットデバイスの上のディスプレイの上のアプリケーションの上のタスクの成功したプレゼンテーションについての通知を含むことができる。
【００９４】
[00100]  図５は、クロスデバイスアプリケーション発見および制御システムについてのクロスデバイスアプリケーション発見および制御マネージャモジュールについての選択コンポーネントを示すものである。
【００９５】
[00101]  ブロック５０２，５０４、５０６、５０８、５１０、５１２、５１４、５１６、５１８および５２０に関連して説明される機能は、より少数のモジュールおよび／またはＡＰＩによって実行されるように組み合わされてもよく、あるいはその機能は、より多数のモジュールおよび／またはＡＰＩに分割され、またより多数のモジュールおよび／またはＡＰＩによって実行される可能性もある。例えば、ブロック５０２は、ソースデバイスから送信され、またアプリケーションモデル発見および制御マネージャモジュール５００によって受信されるアプリケーション発見クエリを表すことができる。いくつかの例においては、アプリケーション発見クエリは、シリアル化されたメッセージとすることができる。
【００９６】
[00102]  いくつかの例においては、発見クエリは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを含めて、１つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、１つまたは複数の信頼されたデバイスについての、デバイスメモリ、速度、および／またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
【００９７】
[00103]  デバイス能力発見ハンドラ５０４は、アプリケーション発見クエリ５０２を受信することができる。アプリケーション発見クエリ５０２を受信することに応じて、デバイス能力発見ハンドラ５０４は、デバイスが、要求されたタスクを実行するアプリケーションをデバイスの上でサポートすることを可能にすることができるデバイス能力データなど、関連のあるデバイス能力データを決定することができる。例えば、アプリケーション発見クエリ５０２が、ビデオアプリケーションの上で映画を再生する要求を含んでいる場合に、関連のあるデバイス能力データは、少なくともデバイスディスプレイ能力を含むことができる。
【００９８】
[00104]  デバイス能力発見ハンドラ５０４は、さらなる処理のために、アプリケーションモデルマネージャ５０６に対してアプリケーション発見クエリ５０２を送信することができる。アプリケーションモデルマネージャ５０６は、アプリケーション発見クエリ５０２を処理し、またタスクを実行することができる１つまたは複数のアプリケーションのためのアプリケーションリポジトリ５１０を探索するように発見メッセージハンドラ５０８に要求することができる。発見メッセージハンドラ５０８は、１つまたは複数のアプリケーションと、それぞれのアプリケーション能力データとをリストアップしたメッセージをアプリケーションモデルマネージャ５０６に送信することができる。アプリケーションモデルマネージャ５０６は、発見メッセージハンドラ５０８からのメッセージを処理し、また発見応答メッセージ５１２を経由して、それをソースデバイスに対して送信することができる。いくつかの例においては、発見応答メッセージ５１２は、シリアル化されたメッセージとすることができる。
【００９９】
[00105]  図の例においては、ブロック５１４は、ソースデバイスから送信され、またアプリケーションモデル発見および制御マネージャモジュール５００によって受信される起動メッセージおよび／または制御メッセージを表すことができる。いくつかの例においては、起動メッセージおよび／または制御メッセージ５１４は、シリアル化されたメッセージとすることができる。
【０１００】
[00106]  いくつかの例においては、起動メッセージおよび／または制御メッセージ５１４は、アプリケーション起動メッセージおよび／またはアプリケーション制御メッセージとすることができる。そのような例においては、アプリケーションモデルマネージャ５０６は、起動メッセージおよび／または制御メッセージ５１４を受信し、またそのメッセージを処理する。起動メッセージおよび／または制御メッセージ５１４を受信することに応じて、アプリケーションモデルマネージャ５０６は、アプリケーション寿命メッセージハンドラ５１６に対して信号を送信して、アプリケーション５１８をアクティブにし、かつ／または制御することができる。アプリケーション寿命メッセージハンドラは、アプリケーションモデルマネージャ５０６を経由して、アプリケーション５１８の成功した起動および／または制御についての少なくとも通知を含むアプリケーションの起動応答メッセージおよび／または制御応答メッセージ５２０をソースデバイスに送信することができる。いくつかの例においては、アプリケーションの起動応答メッセージおよび／または制御応答メッセージ５２０は、アプリケーション５１８の上で実行されるタスクに関連するタスクコンテキストデータを含むことができる。
【０１０１】
[00107]  いくつかの例においては、起動メッセージおよび／または制御メッセージ５１４は、バックグラウンドタスク起動メッセージ、および／またはバックグラウンドタスク制御メッセージとすることができる。そのような例においては、アプリケーションモデルマネージャ５０６は、起動メッセージおよび／または制御メッセージ５１４を受信し、またそのメッセージを処理する。起動メッセージおよび／または制御メッセージ５１４を受信することに応じて、アプリケーションモデルマネージャ５０６は、バックグラウンドタスクメッセージハンドラ５２２に対して信号を送信して、バックグラウンドブローカインフラストラクチャ５２４を経由してバックグラウンドタスクをアクティブにし、かつ／または制御することができる。バックグラウンドタスクメッセージハンドラ５２２は、アプリケーションモデルマネージャ５０６を経由して、バックグラウンドタスクの成功した起動および／または制御についての少なくとも通知を含む起動応答メッセージおよび／または制御応答メッセージ５２０をソースデバイスに送信することができる。
【０１０２】
例示的なプロセス
[00108]  図６および７は、クロスデバイスアプリケーション発見および／または制御システムのための例示のプロセスを示す流れ図である。例示のプロセスのオペレーションは、個別のブロックの形で示され、またこれらのブロックを参照して、要約される。プロセスは、ブロックの論理フローとして示され、これらのブロックのうちの各ブロックは、ハードウェア、ソフトウェア、またはそれらの組合せの形で実装され得る１つまたは複数のオペレーションを表すことができる。
【０１０３】
[00109]  図６は、クロスデバイスアプリケーション発見および起動システムを使用したソースデバイスからのアプリケーションの発見、起動、および制御のプロセスフローを示すものである。図６は、１つのソースデバイスと、１つのターゲットデバイスとが存在するが、これは、単なる一例であるにすぎず、また複数のソースデバイス、および／または複数のターゲットデバイスが存在していてもよいというプロセスフローを示すものである。
【０１０４】
[00110]  ブロック６０２において、デバイス１０２、２００、および／または３０２などのソースデバイスの上のリモートデバイス発見モジュールは、ネットワーク接続を経由してリモートデバイスを識別する。リモートデバイスを発見することに応じて、リモートデバイス発見モジュールは、ユーザプロファイル、グループユーザプロファイル、ユーザ嗜好設定、または任意の他のやり方を含めて、リモートデバイス信頼性情報を要求し、また受信して、リモートデバイスの信頼性を決定することができる。
【０１０５】
[00111]  ブロック６０４において、モデルリモート制御モジュール４００など、ソースデバイスの上のモデルリモート制御モジュールは、リモートデバイス信頼性情報を処理し、またリモートデバイスが、信頼され得るかどうかを決定する。いくつかの例においては、ソースデバイスとユーザプロファイルを共有するリモートデバイスを信頼することができる。いくつかの例においては、ソースデバイスとグループプロファイルを共有するリモートデバイスを信頼することができる。いくつかの例においては、ソースデバイスのユーザ嗜好は、任意の発見可能なリモートデバイスが信頼され得るように、信頼性を設定することができる。
【０１０６】
[00112]  ブロック６０６において、ソースデバイスの上のモデルリモート制御モジュールは、１つまたは複数の信頼されたリモートデバイスに対してアプリケーション発見クエリメッセージを送信することができる。アプリケーション発見クエリは、特定のタスクを実行する、アプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを含めて、１つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、１つまたは複数の信頼されたデバイスについてのデバイスメモリ、速度、および／またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
【０１０７】
[00113]  ブロック６０８において、アプリケーション発見クエリに応じて、ソースデバイスの上のモデルリモート制御モジュールは、発見応答メッセージを受信する。発見応答メッセージは、１つまたは複数の信頼されたリモートデバイスの上でタスクを実行することができる少なくとも１つのアプリケーションのインジケーション、少なくとも１つのアプリケーションについてのアプリケーション能力、および／または１つまたは複数の信頼されたリモートデバイスについてのデバイス能力を含むことができる。いくつかの例においては、１つまたは複数の発見応答メッセージは、リモートデバイス、および／またはリモートデバイスの上のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
【０１０８】
[00114]  ブロック６１０において、ソースデバイスの上のモデルリモート制御モジュールは、複数の発見応答メッセージを受信することができる。リモートアプリケーション発見クライアントは、複数の発見応答メッセージを処理し、またリモートアプリケーションファイルリミッタ４０８などのリモートアプリケーションファイルリミッタに対してリモートアプリケーションファイルを送信することができる。リモートアプリケーションファイルは、アプリケーションに関連づけられる可能性があり、またアプリケーションを含む特定のリモートデバイスについてのアプリケーション能力データと、デバイス能力データとを含むことができる。
【０１０９】
[00115]  ブロック６１２において、ソースデバイスの上のアプリケーションは、リモートアプリケーションファイルリミッタを経由して、起動および／または制御のためのリモートアプリケーションファイルを選択することができる。様々な例においては、ユーザは、ユーザインターフェースの上の入力を経由して、起動および／または制御のためのリモートアプリケーションファイルを選択することができる。いくつかの例においては、ソースデバイスの上のアプリケーションとユーザ入力との組合せは、起動および／または制御のためのリモートアプリケーションファイルを選択することができる。
【０１１０】
[00116]  ブロック６１４において、アプリケーションに関連するリモートアプリケーションファイルの選択に応じて、ソースデバイスの上のモデルリモート制御モジュールは、アプリケーションを含むリモートデバイスに対してアプリケーション起動メッセージを送信する。いくつかの例においては、アプリケーション起動メッセージは、アプリケーションを含む１つまたは複数のリモートデバイスに対して送信されてもよい。アプリケーション起動メッセージは、特定のリモートデバイスが、アプリケーション発見クエリからの、アプリケーションをアクティブにし、また要求されたタスクを実行するための方向を含むことができる。いくつかの例においては、ソースデバイスの上のモデルリモート制御モジュールは、１つまたは複数のリモートデバイスに対してバックグラウンドタスク起動メッセージを送信することができる。
【０１１１】
[00117]  ブロック６１６において、ソースデバイスの上のモデルリモート制御モジュールは、１つまたは複数のリモートデバイスから起動応答メッセージを受信することができる。起動応答メッセージは、１つまたは複数のターゲットデバイスの上のアプリケーションの成功した起動についての通知を含むことができる。いくつかの例においては、起動応答メッセージは、１つまたは複数のターゲットデバイスの上のバックグラウンドタスクの成功した起動についての通知を含むことができる。様々な例においては、起動応答メッセージは、１つまたは複数のターゲットデバイスに関連するディスプレイの上のタスクの成功したプレゼンテーションについての通知を含むことができる。いくつかの例においては、起動応答メッセージは、タスクコンテキストデータが、ソースデバイスの上のディスプレイの上に提示され得るように、ストリーミングタスクコンテキストデータを含むことができる。
【０１１２】
[00118]  ブロック６１８において、ソースデバイスの上のモデルリモート制御モジュールは、アプリケーション制御メッセージを送信することができる。いくつかの例においては、ソースデバイスの上のモデルリモート制御モジュールは、バックグラウンドタスク制御メッセージを送信することができる。制御メッセージは、再生し、一時停止させ、再開し、停止させ、リフレッシュし、キャンセルし、かつ／またはアプリケーションおよび／またはバックグラウンドタスクの任意の他の寿命および／またはバックグラウンドタスクの管理機能を実行する命令を含むことができる。
【０１１３】
[00119]  ブロック６２０において、アプリケーションおよび／またはバックグラウンドタスク制御メッセージに応じて、ソースデバイスは、制御応答メッセージを受信する。制御応答メッセージは、アプリケーションの成功した制御についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、バックグラウンドタスクの成功した制御についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、ソースデバイスの上で表示されるタスクコンテキストデータが、アプリケーション制御を反映するように、アップデートされたストリーミングタスクコンテキストデータを含むことができる。
【０１１４】
[00120]  図７は、クロスデバイスアプリケーション発見および起動システムを使用した、ターゲットデバイスからのアプリケーションの発見、起動および制御のプロセスフローを示すものである。図７は、１つのソースデバイスと、１つのターゲットデバイスとが存在するが、これは、単なる一例であるにすぎず、また複数のソースデバイス、および／または複数のターゲットデバイスが存在していてもよいというプロセスフローを示すものである。
【０１１５】
[00121]  ブロック７０２において、デバイス１０２、２００、および／または３０４などのターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、ソースデバイスからアプリケーション発見クエリを受信する。アプリケーション発見クエリは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および／または他のアプリケーション性能データを含めて、１つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、１つまたは複数の信頼されたデバイスについてのデバイスメモリ、速度、および／またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
【０１１６】
[00122]  アプリケーション発見クエリを受信することに応じて、アプリケーションモデル発見および制御マネージャモジュールは、アプリケーション能力データについて、ターゲットデバイスの上のアプリケーションリポジトリモジュールを探索することができる。いくつかの例においては、アプリケーションモデル発見および制御マネージャは、アプリケーションリポジトリモジュールからアプリケーション能力データを抽出することができる。いくつかの例においては、アプリケーションモデル発見および制御マネージャモジュールは、データストア２０８などのデータストアからデバイス能力データを抽出することができる。
【０１１７】
[00123]  ブロック７０４において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、発見応答メッセージをソースデバイスに対して送信する。発見応答メッセージは、ターゲットデバイスの上でタスクを実行することができる少なくとも１つのアプリケーション、少なくとも１つのアプリケーションについてのアプリケーション能力、および／またはターゲットデバイスについてのデバイス能力を含むことができる。いくつかの例においては、発見応答メッセージは、ターゲットデバイス、および／またはターゲットデバイスの上の１つまたは複数のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
【０１１８】
[00124]  ブロック７０６において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、発見応答メッセージに少なくとも部分的に基づいて、アプリケーション起動メッセージを受信する。アプリケーション起動メッセージは、ターゲットデバイスが、ターゲットデバイスの上のアプリケーションをアクティブにするための命令を含むことができる。いくつかの例においては、アプリケーション起動メッセージは、ターゲットデバイスが、ターゲットデバイスの上のバックグラウンドタスクをアクティブにするための命令を含むことができる。
【０１１９】
[00125]  ブロック７０８において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、アプリケーションをアクティブにする。いくつかの例においては、アプリケーションモデル発見および制御マネージャモジュールは、バックグラウンドタスクをアクティブにすることができる。
【０１２０】
[00126]  ブロック７１０において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、起動応答メッセージをソースデバイスに対して送信する。起動応答メッセージは、ターゲットデバイスの上のアプリケーションの成功した起動についての通知を含むことができる。いくつかの例においては、起動応答メッセージは、ターゲットデバイスの上のバックグラウンドタスクの成功した起動についての通知を含むことができる。様々な例においては、起動応答メッセージは、ターゲットデバイスの上のディスプレイの上のタスクの成功したプレゼンテーションについての通知を含むことができる。いくつかの例においては、起動応答メッセージは、タスクコンテキストデータが、ソースデバイスの上のディスプレイの上に提示され得るように、ストリーミングタスクコンテキストデータを含むことができる。
【０１２１】
[00127]  ブロック７１２において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、アプリケーション制御メッセージを受信する。いくつかの例においては、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、バックグラウンドタスク制御メッセージを受信することができる。アプリケーションおよび／またはバックグラウンドタスク制御メッセージは、再生し、一時停止させ、再開し、停止させ、リフレッシュし、キャンセルし、かつ／またはアプリケーションおよび／またはバックグラウンドタスクの任意の他の寿命および／またはバックグラウンドタスクの管理機能を実行する命令を含むことができる。アプリケーションおよび／またはバックグラウンドタスク制御メッセージを受信することに応じて、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、アプリケーションおよび／またはバックグラウンドタスクを制御する命令を実行することができる。
【０１２２】
[00128]  ブロック７１４において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、制御応答メッセージをソースデバイスに対して送信する。制御応答メッセージは、ターゲットデバイスの上のアプリケーションの成功した起動についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、ターゲットデバイスの上のバックグラウンドタスクの成功した起動についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、ソースデバイスの上で表示されるタスクコンテキストデータが、アプリケーション制御を反映するように、アップデートされたストリーミングタスクコンテキストデータを含むことができる。
【０１２３】
[00129]  ソフトウェアとの関連では、オペレーションは、１つまたは複数のプロセッサによって実行されるときに、１つまたは複数のプロセッサが、列挙されたオペレーションを実行することを可能にする１つまたは複数のコンピュータ読取り可能ストレージ媒体の上に記憶されるコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造などを含む。プロセスはまた、分散型のコンピューティング環境において、実行される可能性もあり、ここでは、機能は、通信ネットワークを通してリンクされるリモート処理デバイスによって実行される。分散型のコンピューティング環境においては、コンピュータ実行可能命令は、メモリストレージデバイスを含めて、ローカルおよび／またはリモートのコンピュータストレージ媒体の中に位置していることができる。
【０１２４】
[00130]  ハードウェアとの関連では、ブロックのうちのいくつかまたはすべては、列挙されたオペレーションを実行する特定用途向け集積回路（ASIC）または他の物理コンポーネントを表すことができる。
【０１２５】
[00131]  オペレーションが、説明される順序は、限定として解釈されることを意図してはおらず、また任意の数の説明されたオペレーションは、任意の順序で実行され、任意の順序で組み合わされ、複数のサブオペレーションへと部分分割される可能性があり、かつ／または並列に実行されて、説明されたプロセスを実行することができる。
【０１２６】
例示の条項
[00132]  Ａ：  プロセッサと、メモリと、前記メモリに記憶され、また前記プロセッサによって少なくとも部分的に実行される１つまたは複数のアプリケーションと、前記メモリに記憶されるクロスデバイスリモート制御モジュールであって、前記クロスデバイスリモート制御モジュールは、１つまたは複数のターゲットデバイスの上でリモートアプリケーションを発見するように構成されている、クロスデバイスリモート制御モジュールとを備えており、またネットワークを経由してメッセージを送信し、また受信するように構成されたクロスデバイスアプリケーションモデルクライアントと、少なくともアプリケーション能力を含んでいるリモートアプリケーション情報を処理するように構成されたリモートアプリケーション発見クライアントとを備えているシステム。
【０１２７】
[00133]  Ｂ：  前記クロスデバイスアプリケーションモデルクライアントは、さらに、前記ネットワークを経由して前記１つまたは複数のターゲットデバイスに接続し、前記１つまたは複数のターゲットデバイスの信頼性を決定し、前記信頼性に少なくとも部分的に基づいて、前記１つまたは複数のターゲットデバイスに対してアプリケーション発見クエリを送信し、また前記１つまたは複数のターゲットデバイスから１つまたは複数のアプリケーション発見応答を受信するように構成されている、パラグラフＡに記載のシステム。
【０１２８】
[00134]  Ｃ：  前記１つまたは複数のアプリケーション発見応答は、アプリケーション情報であって、前記アプリケーション情報は、特定のタスクを遂行する少なくともアプリケーション能力から構成される、アプリケーション情報と、デバイス情報であって、前記デバイス情報は、前記特定のタスクを遂行する少なくともデバイス能力から構成される、デバイス情報とから構成される、パラグラフＢに記載のシステム。
【０１２９】
[00135]  Ｄ：  前記リモートアプリケーション発見クライアントは、さらに、１つまたは複数のアプリケーション発見応答を受信し、前記特定のタスクを遂行することができる１つまたは複数のアプリケーションに関連する１つまたは複数のリモートアプリケーションファイルを決定し、また１つまたは複数のリモートアプリケーションファイルをリミッタに対して送信するように構成されている、パラグラフＡからＣまでに記載のシステム。
【０１３０】
[00136]  Ｅ：  前記クロスデバイスモデルリモート制御は、さらに、前記１つまたは複数のターゲットデバイスにアプリケーションをアクティブにするように指示するように構成されている、パラグラフＡ〜Ｄに記載のシステム。
【０１３１】
[00137]  Ｆ：  前記クロスデバイスモデルリモート制御は、さらに、マスタスレーブ構成においてリモートアプリケーションを制御するように構成されている、パラグラフＡ〜Ｅに記載のシステム。
【０１３２】
[00138]  Ｇ：  前記クロスデバイスモデルリモート制御は、１つまたは複数のリモートアプリケーションファイルを受信し、また特定のリモートアプリケーションファイルを選択するように構成されたリミッタをさらに備えている、パラグラフＡ〜Ｆに記載のシステム。
【０１３３】
[00139]  Ｈ：  前記リモートアプリケーションファイルの前記選択は、ユーザ入力を経由して遂行される、パラグラフＧに記載のシステム。
【０１３４】
[00140]  Ｉ：  前記リモートアプリケーションファイルの前記選択は、発見クエリに少なくとも部分的に基づいて、アプリケーションによって遂行される、パラグラフＧに記載のシステム。
【０１３５】
[00141]  Ｊ：  前記クロスデバイスアプリケーションモデルクライアントは、リモートアプリケーションファイルを受信し、起動メッセージであって、前記起動メッセージは、前記１つまたは複数のターゲットデバイスの上でアプリケーションをアクティブにするように前記ターゲットデバイスに指示する、起動メッセージを前記１つまたは複数のターゲットデバイスに対して送信し、また起動応答メッセージであって、前記起動応答メッセージは、タスクが前記アプリケーションの上で実行されることについての通知と、ディスプレイの上のプレゼンテーションのためのタスクコンテキストデータとから少なくとも構成される、起動応答メッセージを前記１つまたは複数のターゲットデバイスから受信するように構成されている、パラグラフＡ〜Ｉのいずれかに記載のシステム。
【０１３６】
[00142]  Ｋ：  前記クロスデバイスアプリケーションモデルクライアントは、前記リミッタからリモートアプリケーションファイルを受信し、起動メッセージであって、前記起動メッセージは、ターゲットデバイスの上でアプリケーションをアクティブにするように前記ターゲットデバイスに指示する、起動メッセージを前記ターゲットデバイスに対して送信し、また起動応答メッセージであって、前記起動応答メッセージは、タスクが前記アプリケーションの上で実行されることについての通知と、タスクコンテキストデータが、前記ターゲットデバイスのディスプレイの上で提示されることについての通知とから構成される、起動応答メッセージを前記１つまたは複数のターゲットデバイスから受信するように構成されている、パラグラフＡ〜Ｊのいずれかに記載のシステム。
【０１３７】
[00143]  Ｌ：  実行に応答して、パラグラフＡ〜Ｋのいずれか１項に記載のシステムを実行するようにコンピュータを構成するコンピュータ実行可能命令を有するコンピュータ読取り可能媒体。
【０１３８】
[00144]  Ｍ：  プロセッサと、前記プロセッサに結合されたコンピュータ読取り可能媒体とを備えており、前記コンピュータ読取り可能媒体は、パラグラフＡ〜Ｋのいずれかに記載の方法を実行するように１つまたは複数のデバイスを構成する命令を含んでいる、デバイスまたは方法。
【０１３９】
[00145]  Ｎ：  処理するための手段と、処理するための前記手段に結合された記憶するための手段とを備えており、記憶するための前記手段は、パラグラフＡ〜Ｋのいずれかに記載の方法を実行するように１つまたは複数のデバイスを構成する命令を記憶している、デバイスまたは方法。
【０１４０】
[00146]  Ｏ：  タスクを実行する能力に関連する情報を要求するアプリケーション発見クエリをソースデバイスから受信するステップと、前記ソースデバイスの信頼性を決定するステップと、ターゲットデバイスが前記タスクを実行することができるかどうかを決定するステップと、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定するステップと、発見応答メッセージを前記ソースデバイスに対して送信するステップとを含み、前記発見応答メッセージは、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定する前記ステップと、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定する前記ステップとに関連する結果に基づいており、また前記発見応答メッセージは、少なくともデバイス能力と、アプリケーション能力とを含む、方法。
【０１４１】
[00147]  Ｐ：  アプリケーション起動メッセージを受信するステップと、前記アプリケーション起動メッセージを受信するステップに応じて、前記ターゲットデバイスの上でアプリケーションをアクティブにするステップとをさらに含む、パラグラフＯに記載の方法。
【０１４２】
[00148]  Ｑ：  前記デバイスの上で前記アプリケーションの、関連するタスクコンテキストデータを有するタスクを実行するステップと、アプリケーション応答メッセージを前記ソースデバイスに対して送信するステップとをさらに含み、前記アプリケーション応答メッセージは、前記アプリケーションに関連する前記タスクが、前記デバイスの上で実行されることについての通知と、前記ソースデバイスによるプレゼンテーションのための前記タスクコンテキストデータとから少なくとも構成される、パラグラフＰに記載の方法。
【０１４３】
[00149]  Ｒ：  前記デバイスの上で前記アプリケーションの、関連するタスクコンテキストデータを有するタスクを実行するステップと、アプリケーション応答メッセージを前記ソースデバイスに対して送信するステップとをさらに含み、前記アプリケーション応答メッセージは、前記アプリケーションに関連する前記タスクが、前記デバイスの上で実行されることについての通知と、前記ターゲットデバイスによって提示されている前記タスクコンテキストデータとから少なくとも構成される、パラグラフＰに記載の方法。
【０１４４】
[00150]  Ｓ：  前記ソースデバイスからバックグラウンドタスク起動メッセージを受信するステップと、前記バックグラウンドタスク起動メッセージを受信する前記ステップに応じて、前記デバイスの上でバックグラウンドタスクをアクティブにするステップと、バックグラウンドタスクの応答メッセージを前記ソースデバイスに対して送信するステップとをさらに含む、パラグラフＯ〜Ｑのいずれかに記載の方法。
【０１４５】
[00151]  Ｔ：  実行に応答して、パラグラフＯ〜Ｓのいずれか１項に記載の方法を実行するようにコンピュータを構成するコンピュータ実行可能命令を有するコンピュータ読取り可能媒体。
【０１４６】
[00152]  Ｕ：  プロセッサと、前記プロセッサに結合されたコンピュータ読取り可能媒体とを備えており、前記コンピュータ読取り可能媒体は、パラグラフＯ〜Ｓのいずれかに記載の方法を実行するように１つまたは複数のデバイスを構成する命令を含んでいる、デバイスまたはシステム。
【０１４７】
[00153]  Ｖ：  処理するための手段と、処理するための前記手段に結合された記憶するための手段とを備えており、記憶するための前記手段は、パラグラフＯ〜Ｓのいずれかに記載の方法を実行するように１つまたは複数のデバイスを構成する命令を記憶する、デバイスまたはシステム。
【０１４８】
[00154]  Ｗ：  コンピュータ実行可能命令を有するコンピュータ読取り可能媒体であって、前記コンピュータ実行可能命令は、実行に応答して、１つまたは複数のリモートデバイスを識別するステップと、前記１つまたは複数のリモートデバイスのそれぞれの信頼性を決定するステップと、前記１つまたは複数のリモートデバイスのそれぞれの前記信頼性に少なくとも部分的に基づいて、前記１つまたは複数のリモートデバイスのうちの少なくとも１つに対してアプリケーション発見クエリを送信するステップと、前記１つまたは複数のリモートデバイスのうちの少なくとも１つから、デバイス能力と、アプリケーション能力とを示す情報を含むアプリケーション発見応答メッセージを受信するステップとを含むオペレーションを実行するようにデバイスを構成する、コンピュータ読取り可能媒体。
【０１４９】
[00155]  Ｘ：  前記デバイス能力は、リモートデバイスメモリ、リモートデバイス速度、またはリモートデバイスプレゼンテーション能力のうちの少なくとも１つを含む、パラグラフＷに記載のコンピュータ読取り可能媒体。
【０１５０】
[00156]  Ｙ：  前記オペレーションは、前記１つまたは複数のリモートデバイスから特定のリモートデバイスを選択するステップであって、特定のリモートデバイスを選択する前記ステップは、前記発見応答メッセージに少なくとも部分的に基づいたものである、選択するステップと、アプリケーションをアクティブにするように前記特定のリモートデバイスに指示するアプリケーション起動メッセージを前記特定のリモートデバイスに対して送信するステップと、アプリケーションの起動応答メッセージを受信するステップであって、前記起動応答メッセージは、前記アプリケーションが前記特定のリモートデバイスの上でアクティブにされてきていることについての通知から構成されている、受信するステップと、前記デバイスから前記特定のリモートデバイスの上の前記アプリケーションを制御するステップとをさらに含む、パラグラフＷまたはＸのいずれかに記載のコンピュータ読取り可能媒体。
【０１５１】
[00157]  Ｚ：  前記オペレーションは、前記特定のリモートデバイスからタスクコンテキストデータを受信するステップと、前記デバイスを経由して、前記タスクコンテキストデータを提示するステップとをさらに含む、パラグラフＹに記載のコンピュータ読取り可能媒体。
【０１５２】
[00158]  ＡＡ：  プロセッサと、前記プロセッサに結合された、パラグラフＷ〜Ｚのいずれかに記載のコンピュータ読取り可能媒体とを備えているデバイスまたはシステム。
【０１５３】
[00159]  ＡＢ：  処理するための手段と、処理するための前記手段に結合された記憶するための手段とを備えており、記憶するための前記手段は、パラグラフＷ〜Ｚのいずれかに記載の方法を実行するように１つまたは複数のデバイスを構成する命令を記憶する、デバイスまたはシステム。
【０１５４】
[00160]  ＡＣ：  １つまたは複数のリモートデバイスを発見するように構成されたリモートデバイス発見モジュールと、前記１つまたは複数のリモートデバイスの信頼性を決定するように構成されたクロスデバイスリモート制御モジュールとを備えているデバイス。
【０１５５】
[00161]  ＡＤ：  前記信頼性は、ユーザプロファイル、グループプロファイル、またはユーザ嗜好のうちの少なくとも１つに基づいている、パラグラフＡＣに記載のデバイス。
【０１５６】
[00162]  ＡＥ：  前記クロスデバイスリモート制御モジュールは、少なくともリモートアプリケーション発見クライアントから構成されており、前記リモートアプリケーション発見クライアントは、前記１つまたは複数のリモートデバイスの上で１つまたは複数のアプリケーションを発見するように構成されている、パラグラフＡＣまたはＡＤのいずれかに記載のデバイス。
【０１５７】
[00163]  ＡＦ：  前記クロスデバイスリモート制御モジュールは、さらに、ターゲットデバイスの上でアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを前記ターゲットデバイスに対して送信し、タスクが前記アプリケーションの上で実行されることについての少なくとも通知を含む起動応答メッセージを前記ターゲットデバイスから受信し、前記ターゲットデバイスの上の前記アプリケーションを制御するように前記ターゲットデバイスに指示するアプリケーション制御メッセージを送信し、またタスクが、前記アプリケーションの上で制御されていることについての少なくとも通知を含む制御応答メッセージを受信するように構成されている、パラグラフＡＣ〜ＡＥのいずれかに記載のデバイス。
【０１５８】
[00164]  ＡＧ：  前記アプリケーション制御メッセージは、一時停止、停止、再開、巻き戻し、または早送りを示す命令から構成される、パラグラフＡＦに記載のデバイス。
【０１５９】
[00165]  ＡＨ：  １つまたは複数のデバイスと通信するように構成されたリモートデバイス発見モジュールと、１つまたは複数のアプリケーションと、タスクを実行する能力に関連する情報についての少なくとも要求を含む発見クエリを受信し、前記１つまたは複数のアプリケーションが、前記タスクを実行することができるかどうかを決定し、前記１つまたは複数のアプリケーションが、前記タスクを実行することができるかどうかを決定する前記ステップに関連する結果に基づいている発見応答メッセージを送信するように構成されたクロスデバイスアプリケーション発見および制御マネージャモジュールと、を備えているデバイス。
【０１６０】
結論
[00166]  主題は、構造的な特徴および／または方法の動作に特有の言語で説明されてきているが、添付の特許請求の範囲において規定される主題は、必ずしも説明される特定の特徴または動作だけに限定されるとは限らないことを理解すべきである。もっと正確に言えば、特定の特徴および動作は、特許請求の範囲を実装する例示的な形態として開示される。
【０１６１】
[00167]  他のうちでも、「することができる」「することが可能である」「する可能性がある」または「することもある」など、条件付きの言語は、それ以外の方法で具体的に述べられていない限り、ある種の例が、他の例が含んではいないが、ある種の特徴、要素、および／またはステップを含むことを提示するために一般に使用されるような文脈の内部で、それ以外の方法で、理解される。それゆえに、そのような条件付きの言語は、特徴、要素、および／またはステップが、形はどうであれ、１つまたは複数の例のために必要とされること、あるいは１つまたは複数の例が、ユーザの入力またはプロンプトと共に、またはユーザの入力またはプロンプトなしに、これらの特徴、要素、および／またはステップが、含まれるかどうか、または任意の特定の例の中で実行されるべきかどうかを決定するためのロジックを必ずしも含んでいることを意味することを一般に意図してはいない。
【０１６２】
[00168]  熟語「Ｘ、ＹまたはＺのうちの少なくとも１つ」などの連言的な言葉は、それ以外の方法で具体的に述べられていない限り、項目、用語などは、Ｘ、Ｙ、またはＺ、あるいはそれらの組合せのいずれかとすることができることを提示するように理解されるべきである。
【０１６３】
[00169]  本明細書において説明され、かつ／または添付の図面に示される流れ図の中の任意のルーチンの記述、要素またはブロックは、ルーチンの中の、特定の論理の機能または要素を実装するための１つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部分を表す可能性があるように理解されるべきである。代わりの例は、本明細書において説明される例の範囲内に含まれ、そこでは要素または機能は、当業者によって理解されることになるような必要とされる機能に応じて、実質的に同期していること、または逆の順序であることを含めて、示される、または考察される順序からの順序をはずれて、削除され、または実行され得る。
【０１６４】
[00170]  多数の変形形態および修正形態が、上記で説明された例に対して行われる可能性があり、これらの例のうちの要素は、他の受け入れ可能な例の中にあるように、理解されるべきであることが、強調されるべきである。すべてのそのような修正形態および変形形態は、本明細書においてこの開示の範囲内に含まれ、また添付の特許請求の範囲によって保護されることを意図している。
【図１】
2017532651.tif 000003
【図２】
2017532651.tif 000004
【図３】
2017532651.tif 000005
【図４】
2017532651.tif 000006
【図５】
2017532651.tif 000007
【図６】
2017532651.tif 000008
【図７】
2017532651.tif 000009
【手続補正書】
【提出日】平成28年3月14日(2016.3.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソースデバイスにより、ターゲットデバイスを識別するステップと、
前記ソースデバイスにおいて、前記ターゲットデバイスの信頼性レベルを決定するステップと、
前記ターゲットデバイスに対して、タスクを実行するアプリケーションの能力を含むアプリケーション能力データについての要求を含むアプリケーションディスカバリクエリを送信するステップであって、
前記アプリケーションディスカバリクエリは、デバイス能力のデバイス能力データについての要求をさらに含んでおり、前記デバイス能力は、ターゲットデバイスメモリ、ターゲットデバイス速度、またはターゲットデバイスプレゼンテーション能力のうちの少なくとも１つを含む、送信するステップと、
前記ターゲットデバイスにおいて、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定するステップと、
前記ターゲットデバイスにおいて、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定するステップと、
前記ソースデバイスにおいて、前記ターゲットデバイスから発見応答メッセージを受信するステップであって、前記発見応答メッセージは、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定する前記ステップと、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定する前記ステップとの結果に基づいており、また前記発見応答メッセージは、少なくとも前記デバイス能力と前記アプリケーションの前記能力とを含む、受信するステップと
を含む方法。
【請求項２】
前記ターゲットデバイスにおいて、アプリケーション起動メッセージを受信するステップと、
前記アプリケーション起動メッセージを受信するステップに応じて、前記ターゲットデバイスの上のアプリケーションをアクティブにするステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記ターゲットデバイスの上で前記アプリケーションの前記タスクを実行するステップであって、前記タスクは、関連するタスクコンテキストデータを有する、実行するステップと、
前記ソースデバイスに対してアプリケーション応答メッセージを送信するステップとをさらに含み、前記アプリケーション応答メッセージは、
前記アプリケーションに関連する前記タスクが前記デバイスの上で実行されることについての通知、および
前記ソースデバイスによるプレゼンテーションのための前記タスクコンテキストデータ
のうちの少なくとも一方を含む、請求項２に記載の方法。
【請求項４】
コンピュータ実行可能命令を有するコンピュータ読取り可能媒体であって、前記コンピュータ実行可能命令は、実行に応答して、
１つまたは複数のリモートデバイスを識別するステップと、
前記１つまたは複数のリモートデバイスのそれぞれの信頼性を決定するステップと、
前記１つまたは複数のリモートデバイスのそれぞれの前記信頼性に少なくとも部分的に基づいて、前記１つまたは複数のリモートデバイスのうちの少なくとも１つに対してアプリケーションディスカバリクエリを送信するステップであって、前記アプリケーションディスカバリクエリは、前記１つまたは複数のリモートデバイスのうちの前記少なくとも１つからの、タスクを実行するアプリケーションの能力を含むアプリケーション能力データについての要求を含んでおり、
前記アプリケーションディスカバリクエリは、デバイス能力のデバイス能力データについての要求をさらに含んでおり、前記デバイス能力は、リモートデバイスメモリ、リモートデバイス速度、またはリモートデバイスプレゼンテーション能力のうちの少なくとも１つを含む、送信するステップと、
前記１つまたは複数のリモートデバイスのうちの前記少なくとも１つからアプリケーション発見応答メッセージを受信するステップであって、前記アプリケーション発見応答メッセージは、
前記デバイス能力と、
前記アプリケーションの前記能力と
を示す情報を含む、受信するステップと
を含むオペレーションを実行するようにデバイスを構成する、コンピュータ読取り可能媒体。
【請求項５】
前記オペレーションは、
前記１つまたは複数のリモートデバイスから特定のリモートデバイスを選択するステップであって、特定のリモートデバイスを選択する前記ステップは、前記発見応答メッセージに少なくとも部分的に基づいている、選択するステップと、
前記特定のリモートデバイスに対してアプリケーション起動メッセージを送信するステップであって、前記アプリケーション起動メッセージは、アプリケーションをアクティブにするように前記特定のリモートデバイスに指示する、送信するステップと、
アプリケーションの起動応答メッセージを受信するステップであって、前記起動応答メッセージは、前記アプリケーションが、前記特定のリモートデバイスの上でアクティブにされてきていることについての通知から構成されている、受信するステップと、
前記特定のリモートデバイスの上の前記アプリケーションを前記デバイスから制御するステップと
をさらに含む、請求項４に記載のコンピュータ読取り可能媒体。
【請求項６】
プロセッサと、
メモリと、
前記メモリに記憶され、また前記プロセッサにより、少なくとも部分的に、実行される１つまたは複数のアプリケーションと、
前記メモリに記憶されるクロスデバイスリモート制御モジュールと
を備えており、前記クロスデバイスリモート制御モジュールは、１つまたは複数のターゲットデバイスの上でリモートアプリケーションを発見するように構成されており、また
ネットワークを経由して前記１つまたは複数のターゲットデバイスに接続し、
前記ネットワークを経由してメッセージを送信し、また受信し、
前記１つまたは複数のターゲットデバイスの信頼性を決定し、
前記信頼性に少なくとも部分的に基づいて、前記１つまたは複数のターゲットデバイスに対して、アプリケーションディスカバリクエリであって、前記アプリケーションディスカバリクエリは、タスクを実行するアプリケーションの能力を含むアプリケーション能力データについての要求を含んでおり、また前記アプリケーションディスカバリクエリは、ターゲットデバイスメモリ、ターゲットデバイス速度、またはターゲットデバイスプレゼンテーション能力のうちの少なくとも１つを含むデバイス能力のデバイス能力データについての要求をさらに含んでいる、アプリケーションディスカバリクエリを送信し、また
前記１つまたは複数のターゲットデバイスから、前記デバイス能力と、前記アプリケーションの前記能力とを表示する情報を含む、１つまたは複数のアプリケーション発見応答を受信する
ように構成されたクロスデバイスアプリケーションモデルクライアントと
前記アプリケーションの少なくとも前記能力を含むリモートアプリケーション情報を処理するように構成されたリモートアプリケーション発見クライアントと
を備えている、システム。
【請求項７】
前記１つまたは複数のアプリケーション発見応答は、
特定のタスクを遂行する少なくともアプリケーション能力から構成されるアプリケーション情報と、
前記特定のタスクを遂行する少なくともデバイス能力から構成されるデバイス情報と
から構成される、請求項６に記載のシステム。
【請求項８】
前記リモートアプリケーション発見クライアントは、さらに、
１つまたは複数のアプリケーション発見応答を受信し、
前記特定のタスクを遂行することができる１つまたは複数のアプリケーションに関連する１つまたは複数のリモートアプリケーションファイルを決定し、また
１つまたは複数のリモートアプリケーションファイルをリミッタに対して送信する
ように構成されており、前記リミッタは、前記１つまたは複数のリモートアプリケーションファイルから特定のリモートアプリケーションファイルを選択するように構成されている、請求項６または７に記載のシステム。
【請求項９】
前記クロスデバイスモデルリモート制御は、さらに、
１つまたは複数のリモートアプリケーションファイルを受信し、また
特定のリモートアプリケーションファイルを選択する
ように構成されたリミッタをさらに備えている、請求項６、７、または８のいずれか１項に記載のシステム。
【請求項１０】
前記クロスデバイスアプリケーションモデルクライアントは、
リモートアプリケーションファイルを受信し、
前記１つまたは複数のターゲットデバイスの上のアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを前記１つまたは複数のターゲットデバイスに対して送信し、また
前記１つまたは複数のターゲットデバイスから起動応答メッセージを受信する
ように構成されており、前記起動応答メッセージは、
タスクが前記アプリケーションの上で実行されることについての通知と、
ディスプレイの上のプレゼンテーションのためのタスクコンテキストデータと
から少なくとも構成される、請求項６、７、または８のいずれか１項に記載のシステム。
【請求項１１】
前記クロスデバイスアプリケーションモデルクライアントは、
複数のリモートアプリケーションファイルから前記リモートアプリケーションファイルを選択するように構成されているリミッタからリモートアプリケーションファイルを受信し、
ターゲットデバイスに対して、前記ターゲットデバイスの上のアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを送信し、また
前記ターゲットデバイスから起動応答メッセージを受信する
ように構成されており、前記起動応答メッセージは、
タスクが前記アプリケーションの上で実行されることについての通知と、
タスクコンテキストデータが、前記ターゲットデバイスのディスプレイの上で提示されることについての通知と
から構成される、請求項６、７、または８のいずれか１項に記載のシステム。
【請求項１２】
前記クロスデバイスモデルリモート制御モジュールは、さらに、マスタスレーブ構成で１つまたは複数のターゲットデバイスの上の前記リモートアプリケーションを制御するように構成されている、請求項６に記載のシステム。
【請求項１３】
前記特定のリモートアプリケーションファイルの前記選択は、発見クエリに少なくとも部分的に基づいて、ユーザ入力を経由して、またはアプリケーションによって遂行される、請求項９に記載のシステム。
【国際調査報告】
2017532651.tif 000010
2017532651.tif 000011