JP2017532651A - クロスデバイスアプリケーションの発見および制御 - Google Patents

クロスデバイスアプリケーションの発見および制御 Download PDF

Info

Publication number
JP2017532651A
JP2017532651A JP2017512384A JP2017512384A JP2017532651A JP 2017532651 A JP2017532651 A JP 2017532651A JP 2017512384 A JP2017512384 A JP 2017512384A JP 2017512384 A JP2017512384 A JP 2017512384A JP 2017532651 A JP2017532651 A JP 2017532651A
Authority
JP
Japan
Prior art keywords
application
remote
discovery
task
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017512384A
Other languages
English (en)
Inventor
シン,アルンジート
ガンディ,クナル
テジャニ,サマー
マッケナ,ショーン
エム. シーハン,ジョン
エム. シーハン,ジョン
カザ,アクヒレッシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017532651A publication Critical patent/JP2017532651A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Stored Programmes (AREA)
  • Selective Calling Equipment (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】クロスデバイスアプリケーションの発見および/または制御のためのシステムおよび方法を提供する。【解決手段】クロスデバイスアプリケーションの発見および制御は、1つまたは複数のリモートデバイスの上のアプリケーションの発見および制御を可能にする。発見は、特定のタスクを実行することができる少なくとも1つのアプリケーションを有するデバイスを見つけることを含むことができる。タスクは、デバイスの上のアプリケーションを通して、映画を見ること、ニュース記事を読むこと、ドキュメントを書くことなど、特定のユーザのアクティビティをサポートすることができる。【選択図】図1

Description

[0001] スマートフォン、パーソナルコンピュータ、タブレット、1つで2つの機能を有するデバイスなどのデバイスは、社会の中にどこにでもある。人々は、各タスクが、デバイスの上でアプリケーションによって実行され得る、複数の異なるタスクのために、これらのデバイスを使用する。多くの場合、デバイスの上の複数のアプリケーションが、特定のタスクを実行することができる。さらに、多数の人々は、それぞれが、タスクを実行することができる複数のアプリケーションを十分に備えている複数のデバイスを所有している。
[0002] アプリケーションは、しかしながら、一般に、1つのデバイスの上だけで、動作し、またデバイスの間で、情報を通信し、または情報をシームレスに共有する能力を欠いている。したがって、アプリケーションは、処理速度、メモリ、および/またはディスプレイサイズなどのデバイス能力に基づいて、制限される。例えば、スマートフォンの上でビデオを再生するアプリケーションは、スマートフォンデバイスディスプレイだけに限定される。
[0003] 本開示は、クロスデバイスアプリケーションの発見および制御のためのシステムおよび方法について説明している。クロスデバイスアプリケーションの発見および制御は、ターゲットデバイスの上でアプリケーションの検出、起動、および制御を提供することができる。いくつかの例においては、クロスデバイスアプリケーションの発見および制御は、ターゲットデバイスの上でバックグラウンドタスクの起動および制御を提供することができる。クロスデバイスアプリケーションの発見および制御は、ネットワークを経由して接続された信頼されたターゲットデバイスを発見するソースデバイスを提供することができ、またタスクを実行することができる。クロスデバイスアプリケーションの発見および制御はまた、タスクを実行することができる1つまたは複数のアプリケーションを発見するソースデバイスを提供することもできる。ソースデバイスがアプリケーション発見クエリを送信することに応じて、1つまたは複数のターゲットデバイスは、それぞれのデバイスおよび/またはアプリケーションの能力で応答することができる。デバイスおよびアプリケーションの能力を受信することに応じて、ソースデバイスは、1つまたは複数のターゲットデバイスの上のアプリケーションを選択して、タスクを実行することができる。
[0004] クロスデバイスアプリケーションの発見および制御は、マスタスレーブ構成の形の1つまたは複数のリモートデバイスの上でアプリケーションを制御するソースデバイスを提供することができる。それゆえに、ソースデバイスが、1つまたは複数のターゲットデバイスの上でアプリケーションを選択した後に、ソースデバイスは、アプリケーションをアクティブにし、またアプリケーションの中で特定のタスクを実行するように、1つまたは複数のターゲットデバイスに指示する起動メッセージを送信することができる。いくつかの例においては、アプリケーションは、1つまたは複数のターゲットデバイスの上でタスクを実行し、またターゲットデバイスの上のディスプレイに対してタスクに関連するタスクコンテキストデータを送信することができる。いくつかの例においては、アプリケーションは、1つまたは複数のターゲットデバイスの上でタスクを実行し、またタスクに関連するタスクコンテキストデータをソースデバイスに対してストリーミングして、ディスプレイの上に提示されるようにすることができる。クロスデバイスアプリケーションの発見および起動は、単一のオペレーティングシステムの上で、または複数のオペレーティングシステムを通して可能にされることもある。
[0005] この概要は、詳細な説明において以下でさらに説明される簡略化された形態で概念の選択を導入するように提供される。この概要は、特許請求の範囲の主題の重要な特徴または絶対不可欠な特徴を識別することも意図してはおらず、また特許請求の範囲の主題の範囲を決定する際における助けとして使用されることも意図してはいない。
[0006] 詳細な説明は、添付図面を参照して説明される。それらの図面において、参照番号の最も左側の桁(単数または複数)は、その参照番号が最初に現れる図面を示している。異なる図面における同じ参照番号の使用は、類似した項目または同一の項目を示している。
[0007]クロスデバイスアプリケーション発見および制御システムの例示の環境を示す図である。 [0008]図1と整合したクロスデバイスアプリケーション発見および制御システムを含む例示のデバイスの選択コンポーネントを示すブロック図である。 [0009]クロスデバイスアプリケーション発見および制御システムを含む例示のソースデバイスと例示のターゲットデバイスとの選択コンポーネントを示すブロック図である。 [0010]クロスデバイスアプリケーション発見および制御システムについてのクロスデバイスアプリケーションの制御モジュールを示すブロック図である。 [0011]クロスデバイスアプリケーション発見および制御システムについてのクロスデバイスアプリケーション発見および制御マネージャモジュールを示すブロック図である。 [0012]クロスデバイスアプリケーション発見および起動システムを使用した、ソースデバイスからのアプリケーション発見と、起動と、制御とについてのプロセスフローを示す流れ図である。 [0013]クロスデバイスアプリケーション発見および起動システムを使用した、ターゲットデバイスからのアプリケーション発見と、起動と、制御とについてのプロセスフローを示すフロー図である。
[0014] 本開示は、デバイスおよび/またはオペレーティングシステムを通して、アプリケーションの発見および/または制御を可能にする方法およびシステムを説明するものである。クロスデバイスアプリケーションの発見および制御は、リモートデバイスの上のアプリケーションの検出および/または制御を提供することができる。アプリケーションの発見および/または制御は、ユーザによって信頼される複数のアクティブデバイスの上で起こることができる。いくつかの例示の実装形態においては、デバイスが、ユーザプロファイル、グループプロファイルの上で構成されており、かつ/またはそれ以外の方法でユーザによって認証される場合に、そのデバイスを信頼することができる。
[0015] デバイスの発見可能性は、デバイスが、電源が投入されており、スリープモードがオフであり、航空機内モードがオフであり、またはネットワークの上でデバイスを使用可能になるようにさせる任意の他のアクションにあることに基づくことができる。ネットワークの上の使用可能性は、例えば、Wi−Fiセンサ、ブルートゥース(登録商標)センサ、近接センサ、有線接続、またはネットワークインターフェースを検出することができる任意の他のセンサによって決定することができる。
[0016] クロスデバイスアプリケーションの発見および制御は、ソースデバイスが、ネットワークの上でアクティブな信頼されたリモートデバイスを発見するためのやり方を提供することができる。ネットワークは、少なくとも2つのデバイスを接続することができる任意の有線ネットワークまたはワイヤレスネットワークを含むことができる。クロスデバイスアプリケーションの発見および制御は、ソースデバイスが、アクティブな信頼されたリモートデバイスの上に位置しているアプリケーションを発見するためのやり方を提供することもできる。
[0017] クロスデバイスアプリケーションの発見および制御は、特定のタスクを実行することができる1つまたは複数のアプリケーションについて1つまたは複数のリモートデバイスにクエリを行うやり方を提供することができる。そのクエリに応じて、1つまたは複数のリモートデバイスは、タスクを実行することができるアプリケーションについてのアプリケーション能力情報で応答することができる。いくつかの例においては、1つまたは複数のリモートデバイスは、1つまたは複数のリモートデバイスのデバイス能力情報で応答することもできる。
[0018] クロスデバイスアプリケーションの発見および制御は、ソースデバイスが、タスクの実行のために1つまたは複数のリモートデバイスの上のアプリケーションを選択するためのやり方を提供することができる。その選択に応じて、ソースデバイスは、1つまたは複数のリモートデバイスの上のアプリケーションを制御することができる。本明細書において使用されるように、制御の例は、それだけには限定されないが、再生し、一時停止させ、再開し、停止させ、リフレッシュし、キャンセルし、かつ/またはアプリケーションの任意の他のタスクの寿命管理機能を実行する命令を含むことができる。クロスデバイスアプリケーション発見および制御システムの中のソースデバイスと、1つまたは複数のターゲットデバイスとは、このようにして、マスタスレーブ構成で接続することができる。
[0019] いくつかの例においては、クロスデバイスアプリケーションの発見および制御は、1つまたは複数のターゲットデバイスの上の表示を提供することができる。様々な例においては、クロスデバイスアプリケーションの発見および制御は、ソースデバイスの上の表示を提供することができる。
[0020] クロスデバイスアプリケーションの発見および制御は、異なるオペレーティングシステムを有するデバイスを通して可能にされる可能性もある。例えば、第1のデバイスは、WINDOWS(登録商標)オペレーティングシステムの上で実行するように構成されていることもあり、また第1のデバイスは、LINUXオペレーティングシステム、ANDROID(登録商標)オペレーティングシステム、iOS(商標)オペレーティングシステム、または別のオペレーティングシステムの上で実行するように構成された第2のデバイスとのクロスデバイスアプリケーションの発見および制御の通信を実行することができる。
例示的な環境
[0021] 以下で説明される環境は、1つの例を構成するにすぎず、またどのような1つの特定の動作環境だけに特許請求の範囲を限定することも意図してはいない。他の環境が、特許請求の範囲の主題についての精神および範囲を逸脱することなく、使用される可能性もある。
[0022] クロスデバイスアプリケーションの発見および制御は、1つまたは複数のリモートデバイスの上のアプリケーションの発見および制御を可能にする。発見は、特定のタスクを実行することができる少なくとも1つのアプリケーションを有するデバイスを見つけることを含むことができる。タスクは、デバイスの上のアプリケーションを通して、映画を見ること、ニュース記事を読むこと、ドキュメントを書くこと、数え切れないほどの他のアクティビティなど、特定のユーザのアクティビティをサポートすることができる。
[0023] 例えば、ユーザは、スマートフォンの上のビデオアプリケーションの上で映画を見ていることができ、またスマートテレビジョンを持ってあるロケーションに到着することができる。スマートフォンは、ネットワークの上でスマートテレビジョンに接続し、また映画を再生することができるスマートテレビジョンの上の少なくとも1つのビデオアプリケーションを発見することができる。スマートフォンは、スマートテレビジョンが、信頼されたデバイスであることを決定することができ、またスマートテレビジョンの上のビデオアプリケーションに対して、映画を再生するようにそれに指示する起動メッセージを送信することができる。映画は、次いで、スマートテレビジョンの上に表示されることもあるが、スマートフォンは、スマートテレビジョンの上のビデオアプリケーションの制御を維持する。いくつかの例においては、映画は、スマートテレビジョンの上のビデオアプリケーションにおいて再生され、またスマートフォンの上に表示されることもある。様々な例においては、映画は、スマートテレビジョンの上のビデオアプリケーションにおいて再生され、またスマートテレビジョンとスマートフォンとの上で同時に表示されることもある。
[0024] 図1は、クロスデバイスアプリケーションの発見および制御が実装され得る例示の環境100を示すものである。環境100のデバイス(単数または複数)102および/またはコンポーネントは、1つまたは複数のネットワーク104を経由して通信するように構成された多種多様なデバイスタイプを含むことができ、またどのような特定のタイプのデバイスにも限定されない。いくつかの例においては、102(1)などのデバイス(単数または複数)102は、それだけには限定されないが、サーバと、デスクトップコンピュータと、パーソナルコンピュータと、ネットワーク可能化テレビジョンと、端末と、ゲームコンソールと、セットトップボックスと、ゲーミングデバイスと、ワークステーションと、分散型コンピューティングリソースを動作させることができる小型軽量クライアントなどの小型軽量クライアントとを含めて、静止デバイスを含むことができる。いくつかの例においては、102(2)などのデバイス(単数または複数)102は、それだけには限定されないが、モバイル電話と、タブレットコンピュータと、モバイル電話タブレットハイブリッドと、携帯情報端末(PDA: personal data assistant)と、ラップトップコンピュータと、メディアプレーヤと、パーソナルビデオレコーダ(PVR: personal video recorders)と、カメラと、任意の他のモバイルコンピュータまたは任意の他のモバイル電気通信デバイスとを含めて、モバイルデバイスを含むことができる。いくつかの例においては、102(3)などのデバイス(単数または複数)102は、それだけには限定されないが、ウェアラブルコンピュータと、埋め込まれたコンピューティングデバイスと、自動車用コンピュータと、全地球測位システム(GPS: global positioning system)デバイスを含む衛星ベースのナビゲーションシステムや他の衛星ベースのナビゲーションシステムデバイスなどのコンピュータナビゲーションタイプデバイスと、電化製品と、コンピューティングデバイスの中に含めるための一体化されたコンポーネントと、を含めて、埋め込みデバイスを含むことができる。様々な例においては、デバイス102(N)などのデバイス(単数または複数)102は、1つまたは複数のネットワーク(単数または複数)104を経由して通信するように構成された任意の他の種類のコンピューティングデバイスを含むことができる。
[0025] 例えば、ネットワーク(単数または複数)104は、インターネットなどの公衆ネットワーク、組織的イントラネットおよび/またはパーソナルイントラネットなどの私的ネットワーク、または私的ネットワークと公衆ネットワークとの何らかの組合せを含むことができる。ネットワーク(単数または複数)104は、それだけには限定されないが、ローカルエリアネットワーク(LAN: local area networks)、広域ネットワーク(WAN: wide area networks)、パーソナルエリアネットワーク(PAN: personal area networks)、ボディエリアネットワーク(BAN: body area networks)、近接場通信(NFC: near field communication)、衛星ネットワーク、ケーブルネットワーク、Wi−Fiネットワーク、WiMaxネットワーク、モバイル通信ネットワーク(例えば、3G、4Gなど)、またはそれらの任意の組合せを含めて、任意のタイプの有線ネットワークおよび/またはワイヤレスネットワークを含むことができる。ネットワーク(単数または複数)104は、インターネットプロトコル(IP: internet protocol)、送信制御プロトコル(TCP: transmission control protocol)、ユーザデータグラムプロトコル(UDP: user datagram protocol)、他のタイプのプロトコルなど、パケットベースのプロトコルおよび/またはデータグラムベースのプロトコルを含めて、通信プロトコルを利用することができる。さらに、ネットワーク(単数または複数)104はまた、ネットワーク通信を容易にするいくつかのデバイスを含み、かつ/またはスイッチ、ルータ、ゲートウェイ、アクセスポイント、ファイアウォール、基地局、リピータ、バックボーンデバイスなど、ネットワークについてのハードウェアの基礎を形成することもできる。
[0026] いくつかの例においては、ネットワーク(単数または複数)104は、ワイヤレスアクセスポイント(WAP: wireless access point)など、ワイヤレスネットワークに対する接続を可能にするデバイスをさらに含むことができる。WAPを通して接続性をサポートする例は、電気電子技術者協会(IEEE: Institute of Electrical and Electronics Engineers)802.11規格(例えば、802.11g、802.11nなど)、および他の規格をサポートするWAPを含めて、様々な電磁周波数(例えば、無線周波数)の上でデータを送信し、また受信する。
[0027] デバイス(単数または複数)102は、バス110を経由するなど、コンピュータ読取り可能媒体108に動作するように接続された1つまたは複数の処理装置(単数または複数)106を有する任意のコンピューティングデバイスを含むことができ、このバス110は、いくつかの例においては、システムバスと、データバスと、アドレスバスと、PCIバスと、ミニ−PCIバスと、任意の様々なローカルバス、周辺バス、および/または独立バスとのうちの1つまたは複数を含むことができる。コンピュータ読取り可能媒体108の上に記憶される実行可能な命令は、例えば、オペレーティングシステム112と、プラットフォームサポート114と、ユーザインターフェース116と、処理装置(単数または複数)106によってロード可能であり、また実行可能である他のモジュールおよびプログラムとを含むことができる。
[0028] デバイス(単数または複数)102の上のオペレーティングシステム112は、それだけには限定されないが、MICROSOFT WINDOWS、WINDOWS PHONE、QNX(商標)、IBM z/OS(商標)、LINUX、ANDROID、iOS(商標)、OS X(商標)、NETBSD(商標)、またはコンピュータのハードウェアリソースおよびソフトウェアリソースを管理することができる任意の他のオペレーティングシステムを含めて、任意のオペレーティングシステムとすることができる。いくつかの例においては、デバイス102(1)および102(2)は、MICROSOFT WINDOWSなどのオペレーティングシステム112を含むことができる。様々な例においては、デバイス102(1)は、MICROSOFT WINDOWSなどのオペレーティングシステム112(1)を含むことができるが、デバイス102(2)は、ANDROIDのようなオペレーティングシステム112(2)を含むことができる。プラットフォームサポート114は、クロスデバイスアプリケーションの発見および制御を表す。
[0029] デバイス(単数または複数)102の上のユーザインターフェース116は、I/Oインターフェースと一緒に動作して、ユーザ入力に少なくとも基づいて、実行可能な命令をイネーブルにすることができる。ユーザインターフェース116は、タッチ入力、ペン入力、マウスクリック、キーボード選択、音声入力、ジェスチャ入力、または任意の他の入力メカニズムのうちの少なくとも1つによってアクティブにすることができる。
[0030] 代わりに、または追加して、本明細書において説明される機能は、アクセラレータなど、1つまたは複数のハードウェアロジックコンポーネントによって少なくとも部分的に実行され得る。例えば、また限定することなしに、使用され得るハードウェアロジックコンポーネントの例示的なタイプは、フィールドプログラマブルゲートアレイ(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)などを含む。例えば、アクセラレータは、FPGAファブリックの中に埋め込まれたCPUコースを含んでいる、ZYLEX社やALTERA社からのハイブリッドデバイスなどのハイブリッドデバイスを表すことができる。
[0031] デバイス(単数または複数)102は、デバイス102(1)と、デバイス102(2)〜102(N)など、タスク連続性に関与する他のネットワーク化デバイスとの間の通信をイネーブルにする1つまたは複数のネットワークインターフェース(単数または複数)118を含むこともできる。そのようなネットワークインターフェース(単数または複数)118は、1つまたは複数のネットワークインターフェース制御装置(NIC: network interface controllers)または他のタイプのトランシーバデバイスを含んでいて、ネットワークの上で通信を送信し、または受信することができる。例えば、ネットワークインターフェース(単数または複数)118は、デバイス(単数または複数)102(1)と、デバイス102(2)〜102(N)など、クロスデバイスアプリケーションの発見および/または制御に関与する他のネットワーク化デバイスとの間の通信をさらにイネーブルにすることができる近接インターフェースを含むことができる。そのような近接インターフェースは、1つまたは複数の近接ネットワークインターフェース制御装置または他のタイプのトランシーバデバイスを含んでいて、近接ネットワークの上で通信を送信し、また受信することができる。
[0032] 図2は、図1からのデバイス102など、クロスデバイスアプリケーション発見および制御システムを含む例示のデバイス200を示すものである。デバイス200において、処理装置(単数または複数)202は、例えば、CPUタイプ処理装置、GPUタイプ処理装置、フィールドプログラマブルゲートアレイ(FPGA)、別のクラスのデジタル信号プロセッサ(DSP: digital signal processor)、またはいくつかの例においては、CPUによって駆動され得る他のハードウェアロジックコンポーネントを表すことができる。
[0033] いくつかの例においては、デバイス200は、デバイス102(1)、102(2)、102(N)など、複数のデバイスのうちの1つとすることができ、これらのデバイスは、ネットワークを経由して接続することができる。いくつかの例においては、コンピュータ読取り可能媒体108とすることができるコンピュータ読取り可能媒体204は、処理装置(単数または複数)202によって実行可能な命令を記憶することができる。コンピュータ読取り可能媒体204は、外部CPU、外部GPUによるなど、外部処理装置によって実行可能な、かつ/またはFPGAタイプアクセラレータ、DSPタイプアクセラレータ、任意の他の内部アクセラレータもしくは外部のアクセラレータなど、外部アクセラレータによって実行可能な命令を記憶することもできる。いくつかの例においては、少なくとも1つのCPU、GPU、および/またはアクセラレータが、デバイス200に組み込まれているが、他の例においては、1つまたは複数のCPU、GPU、および/またはアクセラレータが、デバイス200に対して外部にあることができる。
[0034] 図の例においては、コンピュータ読取り可能媒体204はまた、アプリケーションリポジトリ206も含んでいる。いくつかの例においては、アプリケーションリポジトリ206は、アプリケーションデータベース、アプリケーションデータウェアハウス、他のタイプの構造化された、または構造化されていないアプリケーションデータストレージなどのアプリケーションストレージを含んでいる。様々な例においては、アプリケーションリポジトリ206は、ファイルサイズ、オペレーティングシステム、能力、アプリケーションに特有な任意の他の情報などのアプリケーション情報を記憶する。
[0035] 図の例においては、コンピュータ読取り可能媒体204はまた、データストア208を含んでいる。いくつかの例においては、データストア208は、データベース、データウェアハウス、他のタイプの構造化された、または構造化されていないデータストレージなどのデータストレージを含んでいる。いくつかの例においては、データストア208は、コーパス、および/または1つまたは複数のテーブル、インデックス、記憶されたプロシージャを有するリレーショナルデータベースなどを含んでいて、例えば、ハイパーテキストマークアップ言語(HTML: hypertext markup language)テーブル、リソース記述フレームワーク(RDF: resource description framework)テーブル、ウェブオントロジー言語(OWL: web ontology language)テーブル、および/または拡張可能マークアップ言語(XML: extensible markup language)テーブルのうちの1つまたは複数を含むデータアクセスを可能にしている。データストア208は、コンピュータ読取り可能媒体204に記憶され、かつ/または処理装置(単数または複数)および/またはアクセラレータ(単数または複数)202によって実行されるプロセス、アプリケーション、コンポーネント、および/またはモジュールのオペレーションのためのデータを記憶することができる。データストア208は、さらに、デバイスメモリ、デバイス速度、および/またはデバイスディスプレイ能力を含むデバイス能力データを記憶することができる。代わりに、上記で参照されたデータのうちの一部または全部が、基盤の1つまたは複数の処理装置(単数または複数)202の上の別個のメモリ210の上に記憶される可能性もある。
[0036] デバイス200は、デバイス200が、周辺入力デバイス(例えば、キーボード、マウス、ペン、ゲームコントローラ、音声入力デバイス、タッチ入力デバイス、ジェスチャ入力デバイスなど)を含むユーザ入力デバイス、および/または周辺出力デバイス(例えば、ディスプレイ、プリンタ、オーディオスピーカ、触覚出力など)を含む出力デバイスなどの入出力デバイスと通信することを可能にする1つまたは複数の入出力(I/O)インターフェース212をさらに含むことができる。さらに、デバイス200においては、ネットワークインターフェース(単数または複数)118とすることができるネットワークインターフェース(単数または複数)214は、ネットワークの上で通信を送信し、また受信する、例えば、ネットワークインターフェース制御装置(NIC)または他のタイプのトランシーバデバイスを表すことができる。
[0037] 図の例においては、デバイス200は、処理装置(単数または複数)202をバス216を経由して、コンピュータ読取り可能媒体204と、I/Oインターフェース(単数または複数)212と、ネットワークインターフェース(単数または複数)214とに動作可能なように接続することができ、このバス216は、バス110に対応している。
[0038] 図の例においては、コンピュータ読取り可能媒体204はまた、オペレーティングシステム218を含んでおり、このオペレーティングシステム218は、オペレーティングシステム112とすることができる。
[0039] コンピュータ読取り可能媒体204はまた、アプリケーション発見および制御プラットフォームサポート(「プラットフォームサポート」)220を含んでおり、このプラットフォームサポート220は、プラットフォームサポート114とすることができる。プラットフォームサポート220は、1つまたは複数のモジュールおよび/またはアプリケーションプログラミングインターフェース(API: application programming interfaces)を含むことができ、これらは、ブロック222、224、226、228、230、および232として示されるが、これは、単に一例にすぎず、また番号は、より高く、またはより低く変化することができる。
[0040] ブロック222、224、226、228、230、232、234、および236に関連して説明される機能は、より少数のモジュールおよび/またはAPIによって実行されるように組み合わされてもよく、あるいはその機能は、より多数のモジュールおよび/またはAPIに分割され、またより多数のモジュールおよび/またはAPIによって実行され得る。例えば、ブロック222は、リモートデバイス発見モジュールを表すことができる。リモートデバイス発見モジュール222は、ネットワークインターフェース214を経由して、デバイス(単数または複数)102などのリモートデバイスを探索するロジックを含むことができる。リモートデバイス発見モジュール222は、ALLJOYNモジュール、またはネットワークの上でリモートデバイスを発見することができる任意の他のモジュールとすることができる。いくつかの例においては、リモートデバイス発見モジュール222は、リモートデバイスを定期的に探索することができる。いくつかの例においては、定期的な感覚は、ユーザ嗜好の形で設定されるようなユーザによって指定される時間とすることができる。様々な例においては、リモートデバイス発見モジュール222は、I/Oインターフェース212を経由してユーザ入力に基づいて、リモートデバイスを探索することができる。
[0041] 図の例においては、プラットフォームサポートは、アプリケーション処理モジュール224を含むこともできる。いくつかの例においては、アプリケーション処理モジュール224は、アプリケーションリポジトリモジュール206、および/または外部データストアからアプリケーション能力データの抽出のためにデバイス200の処理装置(単数または複数)202をプログラムするロジックを含んでいる。アプリケーション能力データは、特定のタスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを示すデータを含んでいる。いくつかの例においては、アプリケーション処理モジュール224は、特定のタスクを実行するためのユーザの好ましいアプリケーション、アプリケーション使用の周波数、デバイスの上でアプリケーションを実行するためにかかる時間、および/またはユーザ嗜好を示すことになる任意の他のデータを含む、ユーザ嗜好のデータの抽出のために処理装置202をプログラムするロジックを含むことができる。
[0042] いくつかの例においては、アプリケーション処理モジュール224は、デバイス200の上で特定のタスクを実行するようにアプリケーションに指示するロジックを含むことができる。アプリケーション処理モジュール224は、デバイス200の上のディスプレイの上でプレゼンテーションするためにディスプレイモジュールに対して、実行されているタスクに関連するタスクコンテキストデータを送信するロジックをさらに含むことができる。
[0043] 図の例においては、プラットフォームサポート220は、ユーザインターフェース226を含むことができ、このユーザインターフェース226は、ユーザインターフェース116とすることができる。ユーザインターフェース226は、I/Oインターフェース(単数または複数)210を経由して入力に応答するロジックを含むことができる。ユーザインターフェース226は、タッチ入力、ペン入力、マウスクリック、キーボード選択、および/または任意の他の入力メカニズムのうちの少なくとも1つによってアクティブにすることができる。入力は、アプリケーション発見クエリ、アプリケーション選択、アプリケーションの起動入力および/または制御入力、および/またはバックグラウンドタスクの起動入力および/または制御入力を含むことができる。I/Oインターフェース(単数または複数)210を経由して発見クエリを受信することに応じて、ユーザインターフェース226は、リモート制御モジュール228が、1つまたは複数のリモートデバイスに対して発見クエリを送信することを可能にする。アプリケーションの起動入力および/または制御入力、および/またはバックグラウンドタスクの起動入力および/または制御入力を受信することに応じて、ユーザインターフェース226は、リモート制御モジュール228が、1つまたは複数のリモートデバイスに対してそれぞれのメッセージを送信することを可能にする。
[0044] リモート制御モジュール228は、デバイス200が、ソースデバイスとして動作するときに動作可能なプラットフォームサポート220の機能とすることができる。リモート制御モジュール228は、データストア208から、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および/またはリモートデバイスの信頼性を決定するために使用される任意の他の信頼性ファクタの抽出のために処理装置(単数または複数)202をプログラムするロジックを含むことができる。
[0045] リモート制御モジュール228は、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および/または1つまたは複数のリモートデバイスの信頼性を決定する任意の他の信頼性ファクタを適用するロジックを含むことができる。少なくとも1つの例においては、ユーザによって指定された信頼性レベルにおける、または信頼性レベルより上の信頼性は、信頼されるようにラベル付けされているリモートデバイスをもたらす。
[0046] いくつかの例においては、信頼性は、デバイス200の上のユーザプロファイルおよび/またはグループプロファイルにマッチするリモートデバイスのユーザプロファイルおよび/またはグループプロファイルに基づいたものとすることができる。いくつかの例においては、信頼性は、リモートデバイスを信頼するためのユーザ嗜好に基づいたものとすることができる。例えば、リモートデバイスを信頼するためのユーザ嗜好は、リモート制御モジュール228が、ネットワークを経由して接続される、デバイス102(1)〜102(N)など、複数のデバイスが信頼されることを決定するように、あるレベルに設定されてもよい。別の例では、リモートデバイスを信頼するためのユーザ嗜好は、リモート制御モジュール228が、102(1)〜102(3)など、複数のデバイスのうちの少数だけが信頼されることを決定するように、あるレベルに設定されてもよい。
[0047] リモート制御モジュール228は、キャッシュに1つまたは複数の信頼されたリモートデバイスのリストを保存するロジックをさらに含むことができる。いくつかの例においては、キャッシュは、リモート制御モジュール228が、1つまたは複数のリモートデバイスの信頼性を決定することに応じてアップデートされてもよい。
[0048] リモート制御モジュール228は、ネットワークインターフェース214を経由して、デバイス200と、1つまたは複数の信頼されたリモートデバイスとの間の通信チャネルをオープンするように、リモートデバイス発見モジュール222にさせる処理装置(単数または複数)202をプログラムするロジックを含むことができる。通信チャネルは、メッセージ、および/またはテキスト、画像、および/または特定のアプリケーションタスクに関連する任意の他のデータを含むタスクコンテキストデータなど、デバイスの間のデータ転送を提供することができる。通信チャネルは、デバイスが、もはや発見可能でなくなり、デバイスが、もはや信頼されなくなり、かつ/またはユーザインターフェース226を経由した入力が、デバイスを切り離すまで、オープンのままにとどまることができる。
[0049] リモート制御モジュール228は、ネットワークインターフェース214を経由して、デバイス102(N)など、1つまたは複数の信頼されたリモートデバイスに対して、1つまたは複数のシリアル化されたメッセージを送信するロジックをさらに含むことができる。1つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージを含むことができる。いくつかの例においては、シリアル化されたメッセージは、JavaScript(登録商標)オブジェクト表記法フォーマット、YAMLフォーマット、XMLフォーマット、またはデータを送信するために使用され得る任意の他のフォーマットとすることができる。
[0050] いくつかの例においては、リモート制御モジュール228は、1つまたは複数の信頼されたターゲットデバイスに対して、アプリケーション発見クエリを送信するロジックを含むことができる。アプリケーション発見クエリは、ユーザインターフェース226を通して入力に少なくとも部分的に基づいたものとすることができ、その入力は、特定のタスクを実行することができるアプリケーションについての少なくともクエリである。アプリケーション発見クエリは、特定のタスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを含めて、1つまたは複数の信頼されたデバイスに対するアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、1つまたは複数の信頼されたデバイスについての、デバイスメモリ、速度、および/またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
[0051] リモート制御モジュール228は、1つまたは複数の信頼されたリモートデバイスから1つまたは複数の発見応答メッセージを受信するロジックを含むことができる。いくつかの例においては、1つまたは複数の発見応答メッセージは、1つまたは複数の信頼されたリモートデバイスの上でタスクを実行することができる少なくとも1つのアプリケーション、少なくとも1つのアプリケーションについてのアプリケーション能力、および/または1つまたは複数の信頼されたリモートデバイスについてのデバイス能力を含むことができる。いくつかの例においては、1つまたは複数の発見応答メッセージは、リモートデバイス、および/またはリモートデバイスの上のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
[0052] いくつかの例においては、リモート制御モジュール228は、1つまたは複数の発見応答メッセージに少なくとも部分的に基づいて、1つまたは複数の信頼されたリモートデバイスの上でアプリケーションを選択するロジックを含むことができる。その選択は、アプリケーション能力、リモートデバイス能力、リモートデバイスの信頼性、リモートデバイスのユーザプロファイル、リモートデバイスのグループプロファイル、および/またはユーザ嗜好に基づいたものとすることができる。いくつかの例においては、リモート制御モジュール228は、特定のリモートデバイスの上でアプリケーションを選択することができる。様々な例においては、リモート制御モジュール228は、タスクが、複数のリモートデバイスの上で同時に実行され得るように、複数のリモートデバイスの上でアプリケーションを選択することができる。
[0053] リモート制御モジュール228は、ネットワークインターフェース214を経由して、1つまたは複数の信頼されたリモートデバイスに対して、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージを送信するロジックをさらに含むことができる。様々な例においては、アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージは、ユーザインターフェース226を経由したユーザ入力に少なくとも部分的に基づいたものとすることができる。いくつかの例においては、リモート制御モジュール228は、ソースデバイスの上のアプリケーションからの入力に基づいて、アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージを送信することができる。いくつかの例においては、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージは、1つまたは複数のAPIフックを含むことができ、その1つまたは複数のAPIフックは、アプリケーションおよび/またはバックグラウンドタスクのリモート制御を可能にしている。
[0054] いくつかの例においては、リモート制御モジュール228は、1つまたは複数の信頼されたリモートデバイスから、アプリケーションおよび/またはバックグラウンドの起動応答メッセージおよび/または制御応答メッセージを受信するロジックを含むことができる。アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、1つまたは複数の信頼されたリモートデバイスについてのアプリケーションおよび/またはバックグラウンドタスクの成功した起動および/または制御についての少なくとも通知を含むことができる。いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、1つまたは複数の信頼されたリモートデバイスの上のディスプレイの上の成功したプレゼンテーションについての通知を含むことができる。
[0055] いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、ソースデバイスの上のアプリケーションの上で実行されるタスクに関連するタスクコンテキストデータを含むことができる。タスクコンテキストデータは、テキスト、画像、および/またはアプリケーションの上で実行されるタスクに関連する任意の他のデータを含むことができる。そのような例においては、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、タスクコンテキストデータ入力が、ストリーミングデータの形でアップデートされるように、ストリーミングデータを含むことができる。リモート制御モジュール228は、ストリーミングデータを処理し、またそれをデバイス200の上で表示するためにディスプレイモジュール230に対して送信するロジックを含むことができる。
[0056] 図の例においては、プラットフォームサポート220は、アプリケーション発見および制御マネージャモジュール232を含むことができる。アプリケーション発見および起動マネージャモジュール232は、デバイス200が、ターゲットデバイスとして動作するときに動作可能なプラットフォームサポート220の機能とすることができる。アプリケーション発見および制御マネージャモジュール232は、ネットワークインターフェース214を経由して、デバイス102(N)などのソースデバイスから1つまたは複数のシリアル化されたメッセージを受信するロジックを含むことができる。1つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージを含むことができる。いくつかの例においては、シリアル化されたメッセージは、JavaScriptオブジェクト表記法フォーマット、YAMLフォーマット、XMLフォーマット、または人間による読取り可能テキストを使用してデータを送信する任意の他のフォーマットとすることができる。
[0057] アプリケーション発見および起動マネージャモジュール232は、アプリケーションリポジトリ206からのアプリケーション能力データの抽出のために処理装置(単数または複数)202をプログラムするロジックを含むことができる。アプリケーション能力データは、特定のタスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを示すデータを含むことができる。アプリケーション発見および起動マネージャモジュール232は、データストア208からデバイス能力データを抽出するために処理装置(単数または複数)202をプログラムするロジックをさらに含むことができる。デバイス能力データは、1つまたは複数の信頼されたデバイスについての、デバイスメモリ、速度、および/またはディスプレイ能力を含むことができる。
[0058] アプリケーション発見および制御マネージャモジュール232は、ソースデバイスからアプリケーション発見クエリを受信するロジックを含むことができる。アプリケーション発見クエリは、タスクを実行することができる、リモートデバイスの上のアプリケーションの少なくとも存在、および/またはタスクを実行するリモートデバイス能力を要求することができる。アプリケーション発見および制御マネージャモジュール232は、アプリケーションリポジトリ206から抽出されるアプリケーション能力データと、データストアから抽出されるデバイス能力データとをプールし、また1つまたは複数の発見応答メッセージを生成するロジックを含むことができる。いくつかの例においては、発見応答メッセージは、シリアル化されたメッセージとすることができる。
[0059] アプリケーション発見および制御マネージャモジュール232は、ソースデバイスに対して発見応答メッセージを送信するロジックを含むことができ、発見応答メッセージは、アプリケーション能力データ、デバイス能力データ、タスクを実行することができるアプリケーションの欠如、および/またはリモートデバイスについての、アプリケーションの上で実行されるタスクをサポートすることができないことを含んでいる。
[0060] アプリケーション発見および制御マネージャモジュール232は、ソースデバイスからアプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージを受信するロジックを含むことができる。アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージは、1つまたは複数のAPIフックを含むことができ、その1つまたは複数のAPIフックは、アプリケーションおよび/またはバックグラウンドタスクのリモート制御を可能にしている。
[0061] アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージを受信することに応じて、アプリケーション発見および制御マネージャモジュール232は、アプリケーションおよび/またはバックグラウンドタスクのリモートの起動および/または制御を可能にすることができる。例えば、ソースデバイスの上のリモート制御は、ビデオアプリケーションをアクティブにし、また映画を再生するメッセージなど、アプリケーション起動メッセージを送信することができる。アプリケーション発見および制御マネージャモジュール232は、そのメッセージを受信し、またメッセージに応じて、アプリケーションをアクティブにし、また映画を再生することができる。別の例では、ターゲットデバイスは、ビデオアプリケーションの上で映画を再生していることもできる。アプリケーション発見および制御マネージャモジュール232は、ソースデバイスからアプリケーション制御メッセージを受信することができ、そのアプリケーション制御メッセージは、映画を一時停止させるようにビデオアプリケーションに指示している。アプリケーション制御メッセージを受信することに応じて、アプリケーション発見および制御マネージャモジュール232は、映画を一時停止させることができる。
[0062] アプリケーション発見および制御マネージャモジュール232は、ソースデバイスに対して起動応答メッセージを送信するロジックを含むことができる。いくつかの例においては、起動応答メッセージは、ターゲットデバイスの上のアプリケーションおよび/またはバックグラウンドタスクの成功した起動および/または制御についての通知を含むことができる。いくつかの例においては、起動応答メッセージは、ターゲットデバイスの上のディスプレイの上のタスクコンテキストデータの成功したプレゼンテーションについての通知を含むことができ、そのタスクコンテキストデータは、アプリケーションの上で実行されるタスクに関連している。そのような例においては、アプリケーションモデル発見および制御マネージャモジュール232は、ディスプレイモジュール230に対して、ターゲットデバイスの上でアプリケーションの中で実行されるタスクに関連するタスクコンテキストデータを送信するロジックを含むことができる。
[0063] いくつかの例においては、起動応答メッセージは、ソースデバイスの上のディスプレイの上のプレゼンテーションのためのタスクコンテキストデータを含むことができる。例えば、ユーザは、スマートフォンの上で表示するべき、複雑な計算の結果を望むことができるが、スマートフォンは、計算を実行することができない可能性がある。ユーザインターフェースを経由した計算のためのユーザ入力に応じて、スマートフォンのリモート制御モジュールは、1つまたは複数のリモートの信頼されたデバイスに対して発見要求クエリを送信することができる。発見要求クエリは、複雑な計算を実行する、アプリケーションおよび/またはデバイスの能力についてのインジケーションを含むことができる。信頼されたリモートデバイスのうちの1つは、デバイス102(1)などのデスクトップコンピュータとすることができる。デスクトップコンピュータの上のアプリケーション発見および制御マネージャモジュール232は、アプリケーションとデバイスとの両方が、タスクを実行することができることを示す、アプリケーションとデバイスとの両方の能力データを有する発見応答メッセージを送信することができる。その発見応答メッセージに応じて、スマートフォンの上のリモート制御モジュールは、アプリケーション起動メッセージを送信することができる。
[0064] アプリケーション起動メッセージに応じて、デスクトップコンピュータの上のアプリケーション発見および制御マネージャモジュール232は、アプリケーションをアクティブにし、タスクを実行し、また起動応答メッセージを送信することができる。その起動応答メッセージは、複雑な計算の結果を有するタスクコンテキストデータを含むことができる。スマートフォンの上のリモート制御モジュールは、スマートフォンの上のディスプレイの上のプレゼンテーションのために、ディスプレイモジュール230などのディスプレイモジュールに対してタスクコンテキストデータをルーティングすることができる。
[0065] いくつかの例においては、ディスプレイモジュール230は、ディスプレイの上に、デバイス200の上のアプリケーションの上で実行されているタスクに関連するタスクコンテキストデータを提示するロジックを含んでいる。いくつかの例においては、デバイス200は、ソースデバイスとして動作することができ、またリモート制御モジュール228は、ディスプレイモジュール230に対して、リモートアプリケーションの上で実行されているタスクについてのストリーミングタスクコンテキストデータを送信することができる。いくつかの例においては、デバイス200は、ターゲットデバイスとして動作することができ、またアプリケーション発見および起動マネージャ232は、デバイス200の上のアプリケーションの上でタスク実行をアクティブにし、かつ/または制御することができる。そのような例においては、アプリケーション発見および起動マネージャ232は、デバイス200の上で表示するためにディスプレイモジュール230に対してタスクコンテキストデータを送信するようにアプリケーション処理モジュール224をプログラムするロジックを含むことができる。
[0066] 図3は、それぞれがクロスデバイスアプリケーション発見および制御システムを含んでいる、デバイス102(1)および102(2)など、例示のソースデバイスと、例示のターゲットデバイスとの選択コンポーネントを示すものである。図の例においては、ソースデバイス302は、ソースデバイスとして動作することができ、またターゲットデバイス304は、ターゲットデバイスとして動作することができるが、これは、単に一例であるにすぎず、また各デバイス302および304は、ソースデバイスモジュールと、ターゲットデバイスモジュールとの両方を含むことができる。ソースデバイス302は、ターゲットデバイス304の上のアプリケーションおよび/またはバックグラウンドタスクのリモートの発見、起動、および制御を可能にすることができる。ターゲットデバイス304は、発見を可能にすることができ、またソースデバイス302が、ターゲットデバイス304の上で1つまたは複数のアプリケーションをシームレスにアクティブにし、また制御することを可能にすることができる。
[0067] ブロック306(1)、308、および310に関連して説明されるソースデバイス302の機能は、より少数のモジュールおよび/またはAPIによって実行されるように組み合わされてもよく、あるいはより多数のモジュールおよび/またはAPIに分割され、またより多数のモジュールおよび/またはAPIによって実行され得る。同様に、ブロック306(2)、312、314、316、および318に関連して説明されるターゲットデバイス304の機能は、より少数のモジュールおよび/またはAPIによって実行されるように組み合わされてもよく、あるいはより多数のモジュールおよび/またはAPIに分割され、またより多数のモジュールおよび/またはAPIによって実行され得る。
[0068] 図の例においては、ソースデバイス302は、リモートデバイス発見モジュール222に対応しているリモートデバイス発見モジュール306(1)を含むことができる。
[0069] いくつかの例においては、ソースデバイス302は、リモートデバイス発見モジュール306(1)および306(2)を経由してターゲットデバイス304を発見することができる。様々な例においては、リモートデバイス発見モジュール306(1)および306(2)は、ソースデバイス302と、ターゲットデバイス304との間の通信チャネルを提供することができる。ターゲットデバイス304を発見することに応じて、リモートデバイス発見モジュール306(1)は、ターゲットデバイス304の信頼性情報を受信することができる。ターゲットデバイス304の信頼性情報は、ターゲットデバイスユーザプロファイル、ターゲットデバイスグループユーザプロファイル、および/またはリモートデバイスの信頼性を決定するために使用される任意の他のデータを含むことができる。リモートデバイス発見モジュール306(1)は、リモート制御モジュール222に対応しているリモート制御モジュール308に対してターゲットデバイスの信頼性情報を送信することができる。
[0070] リモート制御モジュール308は、リモートデバイス発見モジュール306(1)からターゲットデバイスの信頼性情報を受信し、またそれをソースデバイス302の信頼性設定と比較することができる。ターゲットデバイスの信頼性情報は、ユーザプロファイル、グループプロファイル、および/またはターゲットデバイスが信頼され得るかどうかを決定するために使用される任意の他の情報を含むことができる。ソースデバイス302の信頼性設定は、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および/またはリモートデバイス304が信頼され得るかどうかを決定するために使用される任意の他の信頼性ファクタを含むことができる。
[0071] いくつかの例においては、信頼性は、ターゲットデバイス304のユーザプロファイル、ユーザプロファイルにマッチするグループプロファイル、および/またはソースデバイス302の上のグループプロファイルに基づいたものとすることができる。いくつかの例においては、信頼性は、リモートデバイスを信頼するためのユーザ嗜好に基づいたものとすることができる。例えば、リモートデバイスを信頼するためのユーザ嗜好は、モデルリモート制御モジュール308が、デバイス102(1)〜102(N)など、複数のデバイスが、信頼されることを決定することができるように、あるレベルに設定されてもよい。別の例では、リモートデバイスを信頼するためのユーザ嗜好は、リモート制御モジュール308が、102(1)〜102(3)など少数の複数のデバイスだけが信頼されることを決定することができるように、あるレベルに設定されてもよい。
[0072] ターゲットデバイス304が、信頼されたデバイスであるという決定に応じて、リモート制御モジュール308は、キャッシュにターゲットデバイスを保存することができる。いくつかの例においては、ターゲットデバイス304が、信頼されたデバイスであるという決定に応じて、リモート制御モジュール308は、リモートデバイス発見モジュール306(1)および306(2)を経由して、ソースデバイス302と、ターゲットデバイス304との間に通信チャネルをオープンすることができる。通信チャネルは、テキスト、画像、および/または特定のアプリケーションタスクに関連する任意の他のデータを含むメッセージおよび/またはタスクコンテキストデータなど、デバイスの間のデータ転送を提供することができる。通信チャネルは、デバイスが、もはや発見可能でなくなり、デバイスが、もはや信頼されなくなり、かつ/またはユーザインターフェース226などのユーザインターフェースの上の入力が、デバイスを切り離すまで、オープンのままにとどまることができる。
[0073] いくつかの例においては、リモート制御モジュール308は、通信チャネルを経由して、ターゲットデバイス304に対して、1つまたは複数のシリアル化されたメッセージを送信することができる。その1つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージを含むことができる。
[0074] いくつかの例においては、リモート制御モジュール308は、ターゲットデバイス304の上でアプリケーション発見および制御マネージャモジュール312に対して、アプリケーション発見クエリを送信することができる。アプリケーション発見クエリは、ユーザインターフェース226などのユーザインターフェースを通しての入力に少なくとも部分的に基づいたものとすることができる。ユーザインターフェースを通しての入力は、特定のタスクを実行することができるアプリケーションについてのクエリとすることができる。アプリケーション発見クエリは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを含めて、1つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、デバイスメモリ、速度、および/または1つまたは複数の信頼されたデバイスについてのディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
[0075] アプリケーション発見クエリを受信することに応じて、アプリケーション発見および制御マネージャモジュール312は、アプリケーションリポジトリ314からアプリケーション能力データを抽出することができる。アプリケーション能力データは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを含むことができる。いくつかの例においては、アプリケーション発見クエリを受信することに応じて、アプリケーション発見および制御マネージャモジュール312は、データストア208などのデータストアからデバイス能力データを抽出することができる。デバイス能力データは、デバイスメモリ、速度、および/または1つまたは複数の信頼されたデバイスについてのディスプレイ能力を含むことができる。
[0076] アプリケーション発見および制御マネージャモジュール312は、タスクを実行することができる1つまたは複数のアプリケーションについてのアプリケーション能力データ、および/またはデバイス能力データをプールすることができる。アプリケーション発見および制御マネージャモジュール312は、発見応答メッセージの形でリモート制御モジュール308に対して、アプリケーションおよび/またはデバイスの能力データを送信することができる。いくつかの例においては、発見応答メッセージは、タスクを実行することができるアプリケーションの欠如、および/またはリモートデバイス304の、アプリケーションの上で実行されるタスクをサポートすることができないこと、についての通知を含むことができる。
[0077] ターゲットデバイス304の上の1つまたは複数のアプリケーションについての能力データを受信することに応じて、ソースデバイス302の上のアプリケーションは、リモート制御モジュール308を経由して、タスクを実行するための好ましいアプリケーションを選択することができる。いくつかの例においては、ユーザは、モデルリモート制御モジュール308の中のユーザインターフェースを経由して、タスクを実行するための好ましいアプリケーションを選択することができる。その選択は、アプリケーション能力、リモートデバイス能力、リモートデバイスの信頼性、リモートデバイスのユーザプロファイル、および/またはユーザ嗜好に基づいたものとすることができる。様々な例においては、アプリケーションおよび/またはユーザは、タスクが、複数のリモートデバイスの上で同時に実行され得るように、複数のリモートデバイスの上の好ましいアプリケーションを選択することができる。
[0078] いくつかの例においては、リモート制御モジュール308は、通信チャネルを経由して、ターゲットデバイス304の上のアプリケーション発見および制御マネージャモジュール314に対してアプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージを送信することができる。いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージは、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージを含むことができる。様々な例においては、アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージは、ユーザインターフェース226などのユーザインターフェースを経由したユーザ入力に少なくとも部分的に基づいたものとすることができる。いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージは、1つまたは複数のAPIフックを含むことができ、その1つまたは複数のAPIフックは、アプリケーションおよび/またはバックグラウンドタスクのリモート制御を可能にしている。
[0079] アプリケーションおよび/またはバックグラウンドタスク起動メッセージおよび/または制御メッセージを受信することに応じて、アプリケーション発見および制御マネージャモジュール314は、アプリケーションマネージャ316に対して、ある信号を送信して、アプリケーションおよび/またはバックグラウンドタスクのリモートの起動および/または制御を可能にすることができる。その信号は、ソースデバイス302の中のリモート制御モジュール308によって指示される起動および/または制御のデータを含むことができる。いくつかの例においては、アプリケーションマネージャ316は、アプリケーション発見および制御マネージャモジュール312と組み合わされてもよい。いくつかの例においては、アプリケーションマネージャ316は、アプリケーション発見および制御マネージャモジュール312に動作可能に接続された別個のモジュールとすることができる。
[0080] いくつかの例においては、アプリケーションマネージャ316は、アプリケーション318をアクティブにし、かつ/または制御することができる。例えば、ソースデバイスの上のリモート制御モジュールは、アプリケーション318などのビデオアプリケーションをアクティブにし、また映画を再生するメッセージなど、アプリケーション起動メッセージを送信することができる。アプリケーション発見および制御マネージャモジュール314は、アプリケーション起動メッセージを受信し、またアプリケーション起動メッセージをアプリケーションマネージャ316に対して送信することができる。アプリケーション起動メッセージを受信することに応じて、アプリケーションマネージャ316は、ビデオアプリケーションをアクティブにし、またターゲットデバイス304の上で映画を再生することができる。別の例では、ターゲットデバイス304は、アプリケーション318などのビデオアプリケーションの上で映画を再生していることができる。アプリケーション発見および制御マネージャモジュール314は、映画を一時停止させる命令を有する、アプリケーション制御メッセージをソースデバイス302から受信することができる。アプリケーション発見および制御マネージャモジュール314は、アプリケーション制御メッセージをアプリケーションマネージャ316に対して送信することができる。アプリケーション制御メッセージに応じて、アプリケーションマネージャ316は、アプリケーション318の上で映画を一時停止させることができる。
[0081] いくつかの例においては、アプリケーション発見および制御マネージャモジュール314は、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージをリモート制御モジュール308に対して送信することができる。いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、ターゲットデバイス304の上のアプリケーションおよび/またはバックグラウンドタスクの成功した起動および/または制御についての通知を含むことができる。いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、ターゲットデバイス304の上のディスプレイの上のアプリケーションの上のタスクの成功したプレゼンテーションについての通知を含むことができる。
[0082] いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、ソースデバイス302のディスプレイ310の上のプレゼンテーションのためのストリーミングタスクコンテキストデータを含むことができる。タスクコンテキストデータは、テキスト、画像、および/またはアプリケーションの上で実行されるタスクに関連する任意の他のデータを含むことができる。リモート制御モジュール308は、ストリーミングデータを処理し、またそれをソースデバイス302の上の表示のためのディスプレイモジュール310に対して送信するロジックを含むことができる。
[0083] 例えば、ソースデバイス302は、スマートフォンとすることができる。ユーザは、ソースデバイス302の上で表示すべき、複雑な計算の結果を望むことができるが、スマートフォンは、計算を実行することができない可能性がある。ユーザインターフェースを経由した計算についてのユーザ入力に応じて、リモート制御モジュール308は、発見要求クエリを1つまたは複数のリモートの信頼されたデバイスに対して送信することができる。発見要求クエリは、アプリケーションおよび/またはデバイスの複雑な計算を実行する能力を含むことができる。ターゲットデバイス304は、デバイス102(1)などのデスクトップコンピュータとすることができる。アプリケーション発見および制御マネージャモジュール312は、アプリケーション318と、ターゲットデバイス304との両方の能力データを有する、アプリケーション318と、ターゲットデバイス304との両方が、タスクを実行することができることを示す発見応答メッセージを送信することができる。発見応答メッセージに応じて、リモート制御モジュール308は、アプリケーション318をアクティブにするようにターゲットデバイス304に指示する、アプリケーション起動メッセージを送信することができる。
[0084] アプリケーション起動メッセージに応じて、アプリケーション発見および制御マネージャモジュール312は、アプリケーションマネージャ316に対して信号で伝えて、アプリケーションをアクティブにし、またタスクを実行することができる。アプリケーションに応じて、アプリケーションモデル発見および制御マネージャモジュール312は、モデルリモート制御308に対して起動応答メッセージを送信することができ、その起動応答メッセージは、複雑な計算の結果を有するタスクコンテキストデータを含んでいる。リモート制御モジュール308は、ソースデバイス302の上のディスプレイの上のプレゼンテーションのために、タスクコンテキストデータをディスプレイモジュール310に対してルーティングすることができる。
[0085] 図4は、クロスデバイスアプリケーション発見および制御システムに整合したクロスデバイスアプリケーションのリモート制御モジュールの選択コンポーネントを示すものである。
[0086] ブロック402、404、406、408、410および412に関連して説明される機能は、より少数のモジュールおよび/またはAPIによって実行されるように組み合わされてもよく、あるいはその機能は、より多数のモジュールおよび/またはAPIに分割され、またより多数のモジュールおよび/またはAPIによって実行され得る。例えば、ブロック402は、アプリケーションモデルクライアントを表すことができる。アプリケーションモデルクライアント402は、リモートデバイス発見モジュール222などのリモートデバイス発見モジュールから1つまたは複数の発見されたデバイスのリストを受信することができる。いくつかの例においては、1つまたは複数の発見されたデバイスのリストは、少なくともターゲットデバイスの信頼性情報を含むことができる。ターゲットデバイスの信頼性情報は、ユーザプロファイル、グループプロファイル、および/またはターゲットデバイスが信頼され得るかどうか決定するために使用される任意の他の情報を含むことができる。ソースデバイス302の信頼性設定は、ユーザプロファイル、グループプロファイル、リモートデバイスを信頼するためのユーザ嗜好、および/またはリモートデバイス304が信頼され得るかどうかを決定するために使用される任意の他の信頼性ファクタを含むことができる。
[0087] いくつかの例においては、アプリケーションモデルクライアント402は、ソースデバイスの信頼性設定と信頼性情報を比較することにより、1つまたは複数のリモートデバイスの信頼性を決定することができる。いくつかの例においては、1つまたは複数のリモートデバイスは、ユーザプロファイルおよび/またはグループプロファイルを共有するソースデバイスとターゲットデバイスとに基づいて、信頼することができる。いくつかの例においては、1つまたは複数のリモートデバイスは、リモートデバイスを信頼するためのユーザ嗜好に基づいて、信頼することができる。例えば、ユーザは、ネットワークの上で発見可能な任意のデバイスを信頼する好みを設定することができる。
[0088] 1つまたは複数のリモートデバイスの信頼性を決定することに応じて、アプリケーションモデルクライアント402は、リモートデバイスキャッシュ404に信頼されたリモートデバイスのリストを記憶することができる。リモートデバイスキャッシュ404は、信頼されたリモートデバイスに対する少なくとも容易なアクセスを提供することができる。
[0089] いくつかの例においては、アプリケーションモデルクライアント402は、ネットワークインターフェースを経由して、デバイス102(N)など、1つまたは複数の信頼されたリモートデバイスに対して1つまたは複数のシリアル化されたメッセージを送信することができる。1つまたは複数のシリアル化されたメッセージは、アプリケーション発見クエリ、アプリケーション起動メッセージ、アプリケーション制御メッセージ、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージを含むことができる。
[0090] いくつかの例においては、アプリケーションモデルクライアント402は、1つまたは複数の信頼されたターゲットデバイスに対してアプリケーション発見クエリ406を送信するロジックを含むことができる。アプリケーション発見クエリ406は、ユーザインターフェースを経由したユーザ入力に少なくとも部分的に基づいたものとすることができ、その入力は、タスクを実行することができるアプリケーションについての少なくともクエリである。アプリケーション発見クエリ406は、タスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを含めて、1つまたは複数の信頼されたデバイスについてのアプリケーション能力データについての、要求を含むことができる。いくつかの例においては、アプリケーション発見クエリは、デバイスメモリ、速度、および/または1つまたは複数の信頼されたデバイスについてのディスプレイ能力などのデバイス能力データについての要求を含むことができる。
[0091] いくつかの例においては、アプリケーションモデルクライアント402は、1つまたは複数の信頼されたリモートデバイスから1つまたは複数の発見応答メッセージ408を受信することができる。1つまたは複数の発見応答メッセージ408は、1つまたは複数の信頼されたリモートデバイスの上でタスクを実行することができる少なくとも1つのアプリケーション、その少なくとも1つのアプリケーションについてのアプリケーション能力、および/または1つまたは複数の信頼されたリモートデバイスについてのデバイス能力を含むことができる。いくつかの例においては、1つまたは複数の発見応答メッセージ408は、リモートデバイス、および/またはリモートデバイスの上のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
[0092] 1つまたは複数の発見応答メッセージ408を受信することに応じて、アプリケーションモデルクライアント402は、1つまたは複数の発見応答メッセージを処理し、また発見応答メッセージをリモートアプリケーション発見クライアント410に対して送信することができる。いくつかの例においては、リモートアプリケーション発見クライアント410は、発見応答メッセージにおけるアプリケーションの信頼性を決定することができる。アプリケーションの信頼性は、ユーザ嗜好および/またはアプリケーション設定に基づいたものとすることができる。そのような例においては、リモートアプリケーション発見クライアント410は、そのユーザ嗜好および/またはアプリケーション設定を1つまたは複数の発見応答メッセージに適用し、また信頼されないアプリケーションをフィルタにかけて取り除くことができる。
[0093] いくつかの例においては、リモートアプリケーション発見クライアント410は、アプリケーションおよび/または信頼されたアプリケーションのデバイス能力データを処理し、また各々のそれぞれの信頼されたアプリケーションについての能力データを1つまたは複数のリモートアプリケーションファイルへと統合することができる。リモートアプリケーション発見クライアント410は、1つまたは複数のリモートアプリケーションファイルをリモートアプリケーションファイルリミッタ412に対して送信することができる。
[0094] リモートアプリケーションファイルリミッタ412は、1つまたは複数のリモートアプリケーションファイルからのリモートアプリケーションファイルの選択を可能にすることができる。いくつかの例においては、ソースデバイスの上のアプリケーションは、リモートアプリケーションファイルを選択することができる。様々な例においては、ユーザは、ユーザインターフェース414を経由してリモートアプリケーションファイルを選択することができる。
[0095] いくつかの例においては、リモートアプリケーションファイルの選択は、アプリケーション能力データおよび/またはデバイス能力データに少なくとも部分的に基づいたものとすることができる。例えば、3つのリモートアプリケーションファイルが、リモートアプリケーションファイルリミッタ412に対して送信される可能性があり、各リモートアプリケーションファイルは、映画を再生することができるアプリケーションに関連している。リモートアプリケーションファイルリミッタ412は、最大のディスプレイを有するデバイスの上のアプリケーションに関連するリモートアプリケーションファイルを選択することができる。別の例では、リモートアプリケーションファイルリミッタ412は、ユーザによって好まれるアプリケーションに関連するリモートアプリケーションファイルを選択することができる。
[0096] リモートアプリケーションファイルリミッタ412は、リモートアプリケーション起動および制御クライアント416に対して選択されたリモートアプリケーションファイルを送信することができる。いくつかの例においては、リモートアプリケーション起動および制御クライアント416は、アプリケーションモデルクライアント402を経由して1つまたは複数のアプリケーション起動メッセージおよび/または制御メッセージ418を生成することができる。いくつかの例においては、アプリケーション起動メッセージおよび/または制御メッセージ418は、シリアル化されたメッセージとすることができる。いくつかの例においては、アプリケーション起動メッセージおよび/または制御メッセージ418は、アプリケーションをアクティブにし、かつ/または制御するようにターゲットデバイスに指示することができる。様々な例においては、アプリケーション起動メッセージおよび/または制御メッセージ418は、バックグラウンドタスクをアクティブにし、かつ/または制御するようにターゲットデバイスに指示することができる。
[0097] いくつかの例においては、1つまたは複数のアプリケーション起動メッセージおよび/または制御メッセージ418は、リモートアプリケーションファイルリミッタ412から受信されるリモートアプリケーションファイルに少なくとも部分的に基づいたものとすることができる。例えば、リモートアプリケーション起動および制御クライアント416は、NETFLIXアプリケーションに関連するリモートアプリケーションファイルを受信することができる。NETFLIXアプリケーションに関連するリモートアプリケーションファイルを受信することに応じて、リモートアプリケーション起動および制御クライアント416は、NETFLIXアプリケーションをアクティブにするようにリモートデバイスに指示するアプリケーション起動メッセージを生成することができる。
[0098] いくつかの例においては、リモートアプリケーション起動および制御クライアント416は、ユーザインターフェース418からの入力に少なくとも部分的に基づいてアプリケーション起動メッセージおよび/または制御メッセージ418を生成することができる。例えば、ユーザは、リモートデバイスの上のNETFLIXアプリケーションの上で再生している映画を一時停止させたいと思う可能性がある。ユーザは、I/Oインターフェース212などのI/Oインターフェースを経由してユーザインターフェース414の上で一時停止制御を選択することができる。ユーザインターフェース414は、リモートアプリケーション起動および制御クライアント416に対して入力を送信することができ、このリモートアプリケーション起動および制御クライアント416は、アプリケーション起動メッセージおよび/または制御メッセージ418を生成することができる。リモートアプリケーション起動および制御クライアント412は、アプリケーションモデルクライアント402を経由して、リモートデバイスに対してアプリケーション起動メッセージおよび/または制御メッセージ418を送信することができ、アプリケーション制御メッセージ418は、NETFLIXアプリケーションを一時停止させるようにリモートデバイスに指示する。
[0099] 様々な例においては、アプリケーションモデルクライアント402は、ターゲットデバイスから起動応答メッセージおよび/または制御応答メッセージ420を受信することができる。いくつかの例においては、起動応答メッセージおよび/または制御応答メッセージ420は、ターゲットデバイスの上のアプリケーションおよび/またはバックグラウンドタスクの成功した起動および/または制御についての通知を含むことができる。いくつかの例においては、アプリケーションおよび/またはバックグラウンドタスクの起動応答メッセージおよび/または制御応答メッセージは、ターゲットデバイスの上のディスプレイの上のアプリケーションの上のタスクの成功したプレゼンテーションについての通知を含むことができる。
[00100] 図5は、クロスデバイスアプリケーション発見および制御システムについてのクロスデバイスアプリケーション発見および制御マネージャモジュールについての選択コンポーネントを示すものである。
[00101] ブロック502,504、506、508、510、512、514、516、518および520に関連して説明される機能は、より少数のモジュールおよび/またはAPIによって実行されるように組み合わされてもよく、あるいはその機能は、より多数のモジュールおよび/またはAPIに分割され、またより多数のモジュールおよび/またはAPIによって実行される可能性もある。例えば、ブロック502は、ソースデバイスから送信され、またアプリケーションモデル発見および制御マネージャモジュール500によって受信されるアプリケーション発見クエリを表すことができる。いくつかの例においては、アプリケーション発見クエリは、シリアル化されたメッセージとすることができる。
[00102] いくつかの例においては、発見クエリは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを含めて、1つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、1つまたは複数の信頼されたデバイスについての、デバイスメモリ、速度、および/またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
[00103] デバイス能力発見ハンドラ504は、アプリケーション発見クエリ502を受信することができる。アプリケーション発見クエリ502を受信することに応じて、デバイス能力発見ハンドラ504は、デバイスが、要求されたタスクを実行するアプリケーションをデバイスの上でサポートすることを可能にすることができるデバイス能力データなど、関連のあるデバイス能力データを決定することができる。例えば、アプリケーション発見クエリ502が、ビデオアプリケーションの上で映画を再生する要求を含んでいる場合に、関連のあるデバイス能力データは、少なくともデバイスディスプレイ能力を含むことができる。
[00104] デバイス能力発見ハンドラ504は、さらなる処理のために、アプリケーションモデルマネージャ506に対してアプリケーション発見クエリ502を送信することができる。アプリケーションモデルマネージャ506は、アプリケーション発見クエリ502を処理し、またタスクを実行することができる1つまたは複数のアプリケーションのためのアプリケーションリポジトリ510を探索するように発見メッセージハンドラ508に要求することができる。発見メッセージハンドラ508は、1つまたは複数のアプリケーションと、それぞれのアプリケーション能力データとをリストアップしたメッセージをアプリケーションモデルマネージャ506に送信することができる。アプリケーションモデルマネージャ506は、発見メッセージハンドラ508からのメッセージを処理し、また発見応答メッセージ512を経由して、それをソースデバイスに対して送信することができる。いくつかの例においては、発見応答メッセージ512は、シリアル化されたメッセージとすることができる。
[00105] 図の例においては、ブロック514は、ソースデバイスから送信され、またアプリケーションモデル発見および制御マネージャモジュール500によって受信される起動メッセージおよび/または制御メッセージを表すことができる。いくつかの例においては、起動メッセージおよび/または制御メッセージ514は、シリアル化されたメッセージとすることができる。
[00106] いくつかの例においては、起動メッセージおよび/または制御メッセージ514は、アプリケーション起動メッセージおよび/またはアプリケーション制御メッセージとすることができる。そのような例においては、アプリケーションモデルマネージャ506は、起動メッセージおよび/または制御メッセージ514を受信し、またそのメッセージを処理する。起動メッセージおよび/または制御メッセージ514を受信することに応じて、アプリケーションモデルマネージャ506は、アプリケーション寿命メッセージハンドラ516に対して信号を送信して、アプリケーション518をアクティブにし、かつ/または制御することができる。アプリケーション寿命メッセージハンドラは、アプリケーションモデルマネージャ506を経由して、アプリケーション518の成功した起動および/または制御についての少なくとも通知を含むアプリケーションの起動応答メッセージおよび/または制御応答メッセージ520をソースデバイスに送信することができる。いくつかの例においては、アプリケーションの起動応答メッセージおよび/または制御応答メッセージ520は、アプリケーション518の上で実行されるタスクに関連するタスクコンテキストデータを含むことができる。
[00107] いくつかの例においては、起動メッセージおよび/または制御メッセージ514は、バックグラウンドタスク起動メッセージ、および/またはバックグラウンドタスク制御メッセージとすることができる。そのような例においては、アプリケーションモデルマネージャ506は、起動メッセージおよび/または制御メッセージ514を受信し、またそのメッセージを処理する。起動メッセージおよび/または制御メッセージ514を受信することに応じて、アプリケーションモデルマネージャ506は、バックグラウンドタスクメッセージハンドラ522に対して信号を送信して、バックグラウンドブローカインフラストラクチャ524を経由してバックグラウンドタスクをアクティブにし、かつ/または制御することができる。バックグラウンドタスクメッセージハンドラ522は、アプリケーションモデルマネージャ506を経由して、バックグラウンドタスクの成功した起動および/または制御についての少なくとも通知を含む起動応答メッセージおよび/または制御応答メッセージ520をソースデバイスに送信することができる。
例示的なプロセス
[00108] 図6および7は、クロスデバイスアプリケーション発見および/または制御システムのための例示のプロセスを示す流れ図である。例示のプロセスのオペレーションは、個別のブロックの形で示され、またこれらのブロックを参照して、要約される。プロセスは、ブロックの論理フローとして示され、これらのブロックのうちの各ブロックは、ハードウェア、ソフトウェア、またはそれらの組合せの形で実装され得る1つまたは複数のオペレーションを表すことができる。
[00109] 図6は、クロスデバイスアプリケーション発見および起動システムを使用したソースデバイスからのアプリケーションの発見、起動、および制御のプロセスフローを示すものである。図6は、1つのソースデバイスと、1つのターゲットデバイスとが存在するが、これは、単なる一例であるにすぎず、また複数のソースデバイス、および/または複数のターゲットデバイスが存在していてもよいというプロセスフローを示すものである。
[00110] ブロック602において、デバイス102、200、および/または302などのソースデバイスの上のリモートデバイス発見モジュールは、ネットワーク接続を経由してリモートデバイスを識別する。リモートデバイスを発見することに応じて、リモートデバイス発見モジュールは、ユーザプロファイル、グループユーザプロファイル、ユーザ嗜好設定、または任意の他のやり方を含めて、リモートデバイス信頼性情報を要求し、また受信して、リモートデバイスの信頼性を決定することができる。
[00111] ブロック604において、モデルリモート制御モジュール400など、ソースデバイスの上のモデルリモート制御モジュールは、リモートデバイス信頼性情報を処理し、またリモートデバイスが、信頼され得るかどうかを決定する。いくつかの例においては、ソースデバイスとユーザプロファイルを共有するリモートデバイスを信頼することができる。いくつかの例においては、ソースデバイスとグループプロファイルを共有するリモートデバイスを信頼することができる。いくつかの例においては、ソースデバイスのユーザ嗜好は、任意の発見可能なリモートデバイスが信頼され得るように、信頼性を設定することができる。
[00112] ブロック606において、ソースデバイスの上のモデルリモート制御モジュールは、1つまたは複数の信頼されたリモートデバイスに対してアプリケーション発見クエリメッセージを送信することができる。アプリケーション発見クエリは、特定のタスクを実行する、アプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを含めて、1つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、1つまたは複数の信頼されたデバイスについてのデバイスメモリ、速度、および/またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
[00113] ブロック608において、アプリケーション発見クエリに応じて、ソースデバイスの上のモデルリモート制御モジュールは、発見応答メッセージを受信する。発見応答メッセージは、1つまたは複数の信頼されたリモートデバイスの上でタスクを実行することができる少なくとも1つのアプリケーションのインジケーション、少なくとも1つのアプリケーションについてのアプリケーション能力、および/または1つまたは複数の信頼されたリモートデバイスについてのデバイス能力を含むことができる。いくつかの例においては、1つまたは複数の発見応答メッセージは、リモートデバイス、および/またはリモートデバイスの上のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
[00114] ブロック610において、ソースデバイスの上のモデルリモート制御モジュールは、複数の発見応答メッセージを受信することができる。リモートアプリケーション発見クライアントは、複数の発見応答メッセージを処理し、またリモートアプリケーションファイルリミッタ408などのリモートアプリケーションファイルリミッタに対してリモートアプリケーションファイルを送信することができる。リモートアプリケーションファイルは、アプリケーションに関連づけられる可能性があり、またアプリケーションを含む特定のリモートデバイスについてのアプリケーション能力データと、デバイス能力データとを含むことができる。
[00115] ブロック612において、ソースデバイスの上のアプリケーションは、リモートアプリケーションファイルリミッタを経由して、起動および/または制御のためのリモートアプリケーションファイルを選択することができる。様々な例においては、ユーザは、ユーザインターフェースの上の入力を経由して、起動および/または制御のためのリモートアプリケーションファイルを選択することができる。いくつかの例においては、ソースデバイスの上のアプリケーションとユーザ入力との組合せは、起動および/または制御のためのリモートアプリケーションファイルを選択することができる。
[00116] ブロック614において、アプリケーションに関連するリモートアプリケーションファイルの選択に応じて、ソースデバイスの上のモデルリモート制御モジュールは、アプリケーションを含むリモートデバイスに対してアプリケーション起動メッセージを送信する。いくつかの例においては、アプリケーション起動メッセージは、アプリケーションを含む1つまたは複数のリモートデバイスに対して送信されてもよい。アプリケーション起動メッセージは、特定のリモートデバイスが、アプリケーション発見クエリからの、アプリケーションをアクティブにし、また要求されたタスクを実行するための方向を含むことができる。いくつかの例においては、ソースデバイスの上のモデルリモート制御モジュールは、1つまたは複数のリモートデバイスに対してバックグラウンドタスク起動メッセージを送信することができる。
[00117] ブロック616において、ソースデバイスの上のモデルリモート制御モジュールは、1つまたは複数のリモートデバイスから起動応答メッセージを受信することができる。起動応答メッセージは、1つまたは複数のターゲットデバイスの上のアプリケーションの成功した起動についての通知を含むことができる。いくつかの例においては、起動応答メッセージは、1つまたは複数のターゲットデバイスの上のバックグラウンドタスクの成功した起動についての通知を含むことができる。様々な例においては、起動応答メッセージは、1つまたは複数のターゲットデバイスに関連するディスプレイの上のタスクの成功したプレゼンテーションについての通知を含むことができる。いくつかの例においては、起動応答メッセージは、タスクコンテキストデータが、ソースデバイスの上のディスプレイの上に提示され得るように、ストリーミングタスクコンテキストデータを含むことができる。
[00118] ブロック618において、ソースデバイスの上のモデルリモート制御モジュールは、アプリケーション制御メッセージを送信することができる。いくつかの例においては、ソースデバイスの上のモデルリモート制御モジュールは、バックグラウンドタスク制御メッセージを送信することができる。制御メッセージは、再生し、一時停止させ、再開し、停止させ、リフレッシュし、キャンセルし、かつ/またはアプリケーションおよび/またはバックグラウンドタスクの任意の他の寿命および/またはバックグラウンドタスクの管理機能を実行する命令を含むことができる。
[00119] ブロック620において、アプリケーションおよび/またはバックグラウンドタスク制御メッセージに応じて、ソースデバイスは、制御応答メッセージを受信する。制御応答メッセージは、アプリケーションの成功した制御についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、バックグラウンドタスクの成功した制御についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、ソースデバイスの上で表示されるタスクコンテキストデータが、アプリケーション制御を反映するように、アップデートされたストリーミングタスクコンテキストデータを含むことができる。
[00120] 図7は、クロスデバイスアプリケーション発見および起動システムを使用した、ターゲットデバイスからのアプリケーションの発見、起動および制御のプロセスフローを示すものである。図7は、1つのソースデバイスと、1つのターゲットデバイスとが存在するが、これは、単なる一例であるにすぎず、また複数のソースデバイス、および/または複数のターゲットデバイスが存在していてもよいというプロセスフローを示すものである。
[00121] ブロック702において、デバイス102、200、および/または304などのターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、ソースデバイスからアプリケーション発見クエリを受信する。アプリケーション発見クエリは、タスクを実行するアプリケーションの能力、アプリケーションの速度、および/または他のアプリケーション性能データを含めて、1つまたは複数の信頼されたデバイスの上のアプリケーション能力データについての要求を含むことができる。アプリケーション発見クエリは、1つまたは複数の信頼されたデバイスについてのデバイスメモリ、速度、および/またはディスプレイ能力などのデバイス能力データについての要求をさらに含むことができる。
[00122] アプリケーション発見クエリを受信することに応じて、アプリケーションモデル発見および制御マネージャモジュールは、アプリケーション能力データについて、ターゲットデバイスの上のアプリケーションリポジトリモジュールを探索することができる。いくつかの例においては、アプリケーションモデル発見および制御マネージャは、アプリケーションリポジトリモジュールからアプリケーション能力データを抽出することができる。いくつかの例においては、アプリケーションモデル発見および制御マネージャモジュールは、データストア208などのデータストアからデバイス能力データを抽出することができる。
[00123] ブロック704において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、発見応答メッセージをソースデバイスに対して送信する。発見応答メッセージは、ターゲットデバイスの上でタスクを実行することができる少なくとも1つのアプリケーション、少なくとも1つのアプリケーションについてのアプリケーション能力、および/またはターゲットデバイスについてのデバイス能力を含むことができる。いくつかの例においては、発見応答メッセージは、ターゲットデバイス、および/またはターゲットデバイスの上の1つまたは複数のアプリケーションが、タスクを実行することができないことを知らせる通知を含むことができる。
[00124] ブロック706において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、発見応答メッセージに少なくとも部分的に基づいて、アプリケーション起動メッセージを受信する。アプリケーション起動メッセージは、ターゲットデバイスが、ターゲットデバイスの上のアプリケーションをアクティブにするための命令を含むことができる。いくつかの例においては、アプリケーション起動メッセージは、ターゲットデバイスが、ターゲットデバイスの上のバックグラウンドタスクをアクティブにするための命令を含むことができる。
[00125] ブロック708において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、アプリケーションをアクティブにする。いくつかの例においては、アプリケーションモデル発見および制御マネージャモジュールは、バックグラウンドタスクをアクティブにすることができる。
[00126] ブロック710において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、起動応答メッセージをソースデバイスに対して送信する。起動応答メッセージは、ターゲットデバイスの上のアプリケーションの成功した起動についての通知を含むことができる。いくつかの例においては、起動応答メッセージは、ターゲットデバイスの上のバックグラウンドタスクの成功した起動についての通知を含むことができる。様々な例においては、起動応答メッセージは、ターゲットデバイスの上のディスプレイの上のタスクの成功したプレゼンテーションについての通知を含むことができる。いくつかの例においては、起動応答メッセージは、タスクコンテキストデータが、ソースデバイスの上のディスプレイの上に提示され得るように、ストリーミングタスクコンテキストデータを含むことができる。
[00127] ブロック712において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、アプリケーション制御メッセージを受信する。いくつかの例においては、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、バックグラウンドタスク制御メッセージを受信することができる。アプリケーションおよび/またはバックグラウンドタスク制御メッセージは、再生し、一時停止させ、再開し、停止させ、リフレッシュし、キャンセルし、かつ/またはアプリケーションおよび/またはバックグラウンドタスクの任意の他の寿命および/またはバックグラウンドタスクの管理機能を実行する命令を含むことができる。アプリケーションおよび/またはバックグラウンドタスク制御メッセージを受信することに応じて、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、アプリケーションおよび/またはバックグラウンドタスクを制御する命令を実行することができる。
[00128] ブロック714において、ターゲットデバイスの上のアプリケーションモデル発見および制御マネージャモジュールは、制御応答メッセージをソースデバイスに対して送信する。制御応答メッセージは、ターゲットデバイスの上のアプリケーションの成功した起動についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、ターゲットデバイスの上のバックグラウンドタスクの成功した起動についての通知を含むことができる。いくつかの例においては、制御応答メッセージは、ソースデバイスの上で表示されるタスクコンテキストデータが、アプリケーション制御を反映するように、アップデートされたストリーミングタスクコンテキストデータを含むことができる。
[00129] ソフトウェアとの関連では、オペレーションは、1つまたは複数のプロセッサによって実行されるときに、1つまたは複数のプロセッサが、列挙されたオペレーションを実行することを可能にする1つまたは複数のコンピュータ読取り可能ストレージ媒体の上に記憶されるコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造などを含む。プロセスはまた、分散型のコンピューティング環境において、実行される可能性もあり、ここでは、機能は、通信ネットワークを通してリンクされるリモート処理デバイスによって実行される。分散型のコンピューティング環境においては、コンピュータ実行可能命令は、メモリストレージデバイスを含めて、ローカルおよび/またはリモートのコンピュータストレージ媒体の中に位置していることができる。
[00130] ハードウェアとの関連では、ブロックのうちのいくつかまたはすべては、列挙されたオペレーションを実行する特定用途向け集積回路(ASIC)または他の物理コンポーネントを表すことができる。
[00131] オペレーションが、説明される順序は、限定として解釈されることを意図してはおらず、また任意の数の説明されたオペレーションは、任意の順序で実行され、任意の順序で組み合わされ、複数のサブオペレーションへと部分分割される可能性があり、かつ/または並列に実行されて、説明されたプロセスを実行することができる。
例示の条項
[00132] A: プロセッサと、メモリと、前記メモリに記憶され、また前記プロセッサによって少なくとも部分的に実行される1つまたは複数のアプリケーションと、前記メモリに記憶されるクロスデバイスリモート制御モジュールであって、前記クロスデバイスリモート制御モジュールは、1つまたは複数のターゲットデバイスの上でリモートアプリケーションを発見するように構成されている、クロスデバイスリモート制御モジュールとを備えており、またネットワークを経由してメッセージを送信し、また受信するように構成されたクロスデバイスアプリケーションモデルクライアントと、少なくともアプリケーション能力を含んでいるリモートアプリケーション情報を処理するように構成されたリモートアプリケーション発見クライアントとを備えているシステム。
[00133] B: 前記クロスデバイスアプリケーションモデルクライアントは、さらに、前記ネットワークを経由して前記1つまたは複数のターゲットデバイスに接続し、前記1つまたは複数のターゲットデバイスの信頼性を決定し、前記信頼性に少なくとも部分的に基づいて、前記1つまたは複数のターゲットデバイスに対してアプリケーション発見クエリを送信し、また前記1つまたは複数のターゲットデバイスから1つまたは複数のアプリケーション発見応答を受信するように構成されている、パラグラフAに記載のシステム。
[00134] C: 前記1つまたは複数のアプリケーション発見応答は、アプリケーション情報であって、前記アプリケーション情報は、特定のタスクを遂行する少なくともアプリケーション能力から構成される、アプリケーション情報と、デバイス情報であって、前記デバイス情報は、前記特定のタスクを遂行する少なくともデバイス能力から構成される、デバイス情報とから構成される、パラグラフBに記載のシステム。
[00135] D: 前記リモートアプリケーション発見クライアントは、さらに、1つまたは複数のアプリケーション発見応答を受信し、前記特定のタスクを遂行することができる1つまたは複数のアプリケーションに関連する1つまたは複数のリモートアプリケーションファイルを決定し、また1つまたは複数のリモートアプリケーションファイルをリミッタに対して送信するように構成されている、パラグラフAからCまでに記載のシステム。
[00136] E: 前記クロスデバイスモデルリモート制御は、さらに、前記1つまたは複数のターゲットデバイスにアプリケーションをアクティブにするように指示するように構成されている、パラグラフA〜Dに記載のシステム。
[00137] F: 前記クロスデバイスモデルリモート制御は、さらに、マスタスレーブ構成においてリモートアプリケーションを制御するように構成されている、パラグラフA〜Eに記載のシステム。
[00138] G: 前記クロスデバイスモデルリモート制御は、1つまたは複数のリモートアプリケーションファイルを受信し、また特定のリモートアプリケーションファイルを選択するように構成されたリミッタをさらに備えている、パラグラフA〜Fに記載のシステム。
[00139] H: 前記リモートアプリケーションファイルの前記選択は、ユーザ入力を経由して遂行される、パラグラフGに記載のシステム。
[00140] I: 前記リモートアプリケーションファイルの前記選択は、発見クエリに少なくとも部分的に基づいて、アプリケーションによって遂行される、パラグラフGに記載のシステム。
[00141] J: 前記クロスデバイスアプリケーションモデルクライアントは、リモートアプリケーションファイルを受信し、起動メッセージであって、前記起動メッセージは、前記1つまたは複数のターゲットデバイスの上でアプリケーションをアクティブにするように前記ターゲットデバイスに指示する、起動メッセージを前記1つまたは複数のターゲットデバイスに対して送信し、また起動応答メッセージであって、前記起動応答メッセージは、タスクが前記アプリケーションの上で実行されることについての通知と、ディスプレイの上のプレゼンテーションのためのタスクコンテキストデータとから少なくとも構成される、起動応答メッセージを前記1つまたは複数のターゲットデバイスから受信するように構成されている、パラグラフA〜Iのいずれかに記載のシステム。
[00142] K: 前記クロスデバイスアプリケーションモデルクライアントは、前記リミッタからリモートアプリケーションファイルを受信し、起動メッセージであって、前記起動メッセージは、ターゲットデバイスの上でアプリケーションをアクティブにするように前記ターゲットデバイスに指示する、起動メッセージを前記ターゲットデバイスに対して送信し、また起動応答メッセージであって、前記起動応答メッセージは、タスクが前記アプリケーションの上で実行されることについての通知と、タスクコンテキストデータが、前記ターゲットデバイスのディスプレイの上で提示されることについての通知とから構成される、起動応答メッセージを前記1つまたは複数のターゲットデバイスから受信するように構成されている、パラグラフA〜Jのいずれかに記載のシステム。
[00143] L: 実行に応答して、パラグラフA〜Kのいずれか1項に記載のシステムを実行するようにコンピュータを構成するコンピュータ実行可能命令を有するコンピュータ読取り可能媒体。
[00144] M: プロセッサと、前記プロセッサに結合されたコンピュータ読取り可能媒体とを備えており、前記コンピュータ読取り可能媒体は、パラグラフA〜Kのいずれかに記載の方法を実行するように1つまたは複数のデバイスを構成する命令を含んでいる、デバイスまたは方法。
[00145] N: 処理するための手段と、処理するための前記手段に結合された記憶するための手段とを備えており、記憶するための前記手段は、パラグラフA〜Kのいずれかに記載の方法を実行するように1つまたは複数のデバイスを構成する命令を記憶している、デバイスまたは方法。
[00146] O: タスクを実行する能力に関連する情報を要求するアプリケーション発見クエリをソースデバイスから受信するステップと、前記ソースデバイスの信頼性を決定するステップと、ターゲットデバイスが前記タスクを実行することができるかどうかを決定するステップと、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定するステップと、発見応答メッセージを前記ソースデバイスに対して送信するステップとを含み、前記発見応答メッセージは、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定する前記ステップと、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定する前記ステップとに関連する結果に基づいており、また前記発見応答メッセージは、少なくともデバイス能力と、アプリケーション能力とを含む、方法。
[00147] P: アプリケーション起動メッセージを受信するステップと、前記アプリケーション起動メッセージを受信するステップに応じて、前記ターゲットデバイスの上でアプリケーションをアクティブにするステップとをさらに含む、パラグラフOに記載の方法。
[00148] Q: 前記デバイスの上で前記アプリケーションの、関連するタスクコンテキストデータを有するタスクを実行するステップと、アプリケーション応答メッセージを前記ソースデバイスに対して送信するステップとをさらに含み、前記アプリケーション応答メッセージは、前記アプリケーションに関連する前記タスクが、前記デバイスの上で実行されることについての通知と、前記ソースデバイスによるプレゼンテーションのための前記タスクコンテキストデータとから少なくとも構成される、パラグラフPに記載の方法。
[00149] R: 前記デバイスの上で前記アプリケーションの、関連するタスクコンテキストデータを有するタスクを実行するステップと、アプリケーション応答メッセージを前記ソースデバイスに対して送信するステップとをさらに含み、前記アプリケーション応答メッセージは、前記アプリケーションに関連する前記タスクが、前記デバイスの上で実行されることについての通知と、前記ターゲットデバイスによって提示されている前記タスクコンテキストデータとから少なくとも構成される、パラグラフPに記載の方法。
[00150] S: 前記ソースデバイスからバックグラウンドタスク起動メッセージを受信するステップと、前記バックグラウンドタスク起動メッセージを受信する前記ステップに応じて、前記デバイスの上でバックグラウンドタスクをアクティブにするステップと、バックグラウンドタスクの応答メッセージを前記ソースデバイスに対して送信するステップとをさらに含む、パラグラフO〜Qのいずれかに記載の方法。
[00151] T: 実行に応答して、パラグラフO〜Sのいずれか1項に記載の方法を実行するようにコンピュータを構成するコンピュータ実行可能命令を有するコンピュータ読取り可能媒体。
[00152] U: プロセッサと、前記プロセッサに結合されたコンピュータ読取り可能媒体とを備えており、前記コンピュータ読取り可能媒体は、パラグラフO〜Sのいずれかに記載の方法を実行するように1つまたは複数のデバイスを構成する命令を含んでいる、デバイスまたはシステム。
[00153] V: 処理するための手段と、処理するための前記手段に結合された記憶するための手段とを備えており、記憶するための前記手段は、パラグラフO〜Sのいずれかに記載の方法を実行するように1つまたは複数のデバイスを構成する命令を記憶する、デバイスまたはシステム。
[00154] W: コンピュータ実行可能命令を有するコンピュータ読取り可能媒体であって、前記コンピュータ実行可能命令は、実行に応答して、1つまたは複数のリモートデバイスを識別するステップと、前記1つまたは複数のリモートデバイスのそれぞれの信頼性を決定するステップと、前記1つまたは複数のリモートデバイスのそれぞれの前記信頼性に少なくとも部分的に基づいて、前記1つまたは複数のリモートデバイスのうちの少なくとも1つに対してアプリケーション発見クエリを送信するステップと、前記1つまたは複数のリモートデバイスのうちの少なくとも1つから、デバイス能力と、アプリケーション能力とを示す情報を含むアプリケーション発見応答メッセージを受信するステップとを含むオペレーションを実行するようにデバイスを構成する、コンピュータ読取り可能媒体。
[00155] X: 前記デバイス能力は、リモートデバイスメモリ、リモートデバイス速度、またはリモートデバイスプレゼンテーション能力のうちの少なくとも1つを含む、パラグラフWに記載のコンピュータ読取り可能媒体。
[00156] Y: 前記オペレーションは、前記1つまたは複数のリモートデバイスから特定のリモートデバイスを選択するステップであって、特定のリモートデバイスを選択する前記ステップは、前記発見応答メッセージに少なくとも部分的に基づいたものである、選択するステップと、アプリケーションをアクティブにするように前記特定のリモートデバイスに指示するアプリケーション起動メッセージを前記特定のリモートデバイスに対して送信するステップと、アプリケーションの起動応答メッセージを受信するステップであって、前記起動応答メッセージは、前記アプリケーションが前記特定のリモートデバイスの上でアクティブにされてきていることについての通知から構成されている、受信するステップと、前記デバイスから前記特定のリモートデバイスの上の前記アプリケーションを制御するステップとをさらに含む、パラグラフWまたはXのいずれかに記載のコンピュータ読取り可能媒体。
[00157] Z: 前記オペレーションは、前記特定のリモートデバイスからタスクコンテキストデータを受信するステップと、前記デバイスを経由して、前記タスクコンテキストデータを提示するステップとをさらに含む、パラグラフYに記載のコンピュータ読取り可能媒体。
[00158] AA: プロセッサと、前記プロセッサに結合された、パラグラフW〜Zのいずれかに記載のコンピュータ読取り可能媒体とを備えているデバイスまたはシステム。
[00159] AB: 処理するための手段と、処理するための前記手段に結合された記憶するための手段とを備えており、記憶するための前記手段は、パラグラフW〜Zのいずれかに記載の方法を実行するように1つまたは複数のデバイスを構成する命令を記憶する、デバイスまたはシステム。
[00160] AC: 1つまたは複数のリモートデバイスを発見するように構成されたリモートデバイス発見モジュールと、前記1つまたは複数のリモートデバイスの信頼性を決定するように構成されたクロスデバイスリモート制御モジュールとを備えているデバイス。
[00161] AD: 前記信頼性は、ユーザプロファイル、グループプロファイル、またはユーザ嗜好のうちの少なくとも1つに基づいている、パラグラフACに記載のデバイス。
[00162] AE: 前記クロスデバイスリモート制御モジュールは、少なくともリモートアプリケーション発見クライアントから構成されており、前記リモートアプリケーション発見クライアントは、前記1つまたは複数のリモートデバイスの上で1つまたは複数のアプリケーションを発見するように構成されている、パラグラフACまたはADのいずれかに記載のデバイス。
[00163] AF: 前記クロスデバイスリモート制御モジュールは、さらに、ターゲットデバイスの上でアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを前記ターゲットデバイスに対して送信し、タスクが前記アプリケーションの上で実行されることについての少なくとも通知を含む起動応答メッセージを前記ターゲットデバイスから受信し、前記ターゲットデバイスの上の前記アプリケーションを制御するように前記ターゲットデバイスに指示するアプリケーション制御メッセージを送信し、またタスクが、前記アプリケーションの上で制御されていることについての少なくとも通知を含む制御応答メッセージを受信するように構成されている、パラグラフAC〜AEのいずれかに記載のデバイス。
[00164] AG: 前記アプリケーション制御メッセージは、一時停止、停止、再開、巻き戻し、または早送りを示す命令から構成される、パラグラフAFに記載のデバイス。
[00165] AH: 1つまたは複数のデバイスと通信するように構成されたリモートデバイス発見モジュールと、1つまたは複数のアプリケーションと、タスクを実行する能力に関連する情報についての少なくとも要求を含む発見クエリを受信し、前記1つまたは複数のアプリケーションが、前記タスクを実行することができるかどうかを決定し、前記1つまたは複数のアプリケーションが、前記タスクを実行することができるかどうかを決定する前記ステップに関連する結果に基づいている発見応答メッセージを送信するように構成されたクロスデバイスアプリケーション発見および制御マネージャモジュールと、を備えているデバイス。
結論
[00166] 主題は、構造的な特徴および/または方法の動作に特有の言語で説明されてきているが、添付の特許請求の範囲において規定される主題は、必ずしも説明される特定の特徴または動作だけに限定されるとは限らないことを理解すべきである。もっと正確に言えば、特定の特徴および動作は、特許請求の範囲を実装する例示的な形態として開示される。
[00167] 他のうちでも、「することができる」「することが可能である」「する可能性がある」または「することもある」など、条件付きの言語は、それ以外の方法で具体的に述べられていない限り、ある種の例が、他の例が含んではいないが、ある種の特徴、要素、および/またはステップを含むことを提示するために一般に使用されるような文脈の内部で、それ以外の方法で、理解される。それゆえに、そのような条件付きの言語は、特徴、要素、および/またはステップが、形はどうであれ、1つまたは複数の例のために必要とされること、あるいは1つまたは複数の例が、ユーザの入力またはプロンプトと共に、またはユーザの入力またはプロンプトなしに、これらの特徴、要素、および/またはステップが、含まれるかどうか、または任意の特定の例の中で実行されるべきかどうかを決定するためのロジックを必ずしも含んでいることを意味することを一般に意図してはいない。
[00168] 熟語「X、YまたはZのうちの少なくとも1つ」などの連言的な言葉は、それ以外の方法で具体的に述べられていない限り、項目、用語などは、X、Y、またはZ、あるいはそれらの組合せのいずれかとすることができることを提示するように理解されるべきである。
[00169] 本明細書において説明され、かつ/または添付の図面に示される流れ図の中の任意のルーチンの記述、要素またはブロックは、ルーチンの中の、特定の論理の機能または要素を実装するための1つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部分を表す可能性があるように理解されるべきである。代わりの例は、本明細書において説明される例の範囲内に含まれ、そこでは要素または機能は、当業者によって理解されることになるような必要とされる機能に応じて、実質的に同期していること、または逆の順序であることを含めて、示される、または考察される順序からの順序をはずれて、削除され、または実行され得る。
[00170] 多数の変形形態および修正形態が、上記で説明された例に対して行われる可能性があり、これらの例のうちの要素は、他の受け入れ可能な例の中にあるように、理解されるべきであることが、強調されるべきである。すべてのそのような修正形態および変形形態は、本明細書においてこの開示の範囲内に含まれ、また添付の特許請求の範囲によって保護されることを意図している。

Claims (15)

  1. ソースデバイスにより、ターゲットデバイスを識別するステップと、
    前記ソースデバイスにおいて、前記ターゲットデバイスの信頼性レベルを決定するステップと、
    前記ターゲットデバイスに対して、タスクを実行する能力に関連する情報を要求するアプリケーション発見クエリを送信するステップと、
    前記ターゲットデバイスにおいて、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定するステップと、
    前記ターゲットデバイスにおいて、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定するステップと、
    前記ソースデバイスにおいて、前記ターゲットデバイスから発見応答メッセージを受信するステップであって、前記発見応答メッセージは、前記ターゲットデバイスが前記タスクを実行することができるかどうかを決定する前記ステップと、前記ターゲットデバイスが前記タスクを実行することができるアプリケーションを有するかどうかを決定する前記ステップとに関連する結果に基づいており、また前記発見応答メッセージは、少なくともデバイス能力とアプリケーション能力とを含む、受信するステップと
    を含む方法。
  2. 前記ターゲットデバイスにおいて、アプリケーション起動メッセージを受信するステップと、
    前記アプリケーション起動メッセージを受信するステップに応じて、前記ターゲットデバイスの上のアプリケーションをアクティブにするステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記ターゲットデバイスの上で前記アプリケーションの前記タスクを実行するステップであって、前記タスクは、関連するタスクコンテキストデータを有する、実行するステップと、
    前記ソースデバイスに対してアプリケーション応答メッセージを送信するステップとをさらに含み、前記アプリケーション応答メッセージは、
    前記アプリケーションに関連する前記タスクが前記デバイスの上で実行されることについての通知、および
    前記ソースデバイスによるプレゼンテーションのための前記タスクコンテキストデータ
    のうちの少なくとも一方を含む、請求項2に記載の方法。
  4. コンピュータ実行可能命令を有するコンピュータ読取り可能媒体であって、前記コンピュータ実行可能命令は、実行に応答して、
    1つまたは複数のリモートデバイスを識別するステップと、
    前記1つまたは複数のリモートデバイスのそれぞれの信頼性を決定するステップと、
    前記1つまたは複数のリモートデバイスのそれぞれの前記信頼性に少なくとも部分的に基づいて、前記1つまたは複数のリモートデバイスのうちの少なくとも1つに対してアプリケーション発見クエリを送信するステップであって、前記アプリケーション発見クエリは、前記1つまたは複数のリモートデバイスのうちの前記少なくとも1つからの情報についての要求である、送信するステップと、
    前記1つまたは複数のリモートデバイスのうちの前記少なくとも1つからアプリケーション発見応答メッセージを受信するステップであって、前記アプリケーション発見応答メッセージは、
    デバイス能力と、
    アプリケーション能力と
    を示す情報を含む、受信するステップと
    を含むオペレーションを実行するようにデバイスを構成する、コンピュータ読取り可能媒体。
  5. 前記デバイス能力は、
    リモートデバイスメモリ、
    リモートデバイス速度、または
    リモートデバイスプレゼンテーション能力
    のうちの少なくとも1つを含む、請求項4に記載のコンピュータ読取り可能媒体。
  6. 前記オペレーションは、
    前記1つまたは複数のリモートデバイスから特定のリモートデバイスを選択するステップであって、特定のリモートデバイスを選択する前記ステップは、前記発見応答メッセージに少なくとも部分的に基づいている、選択するステップと、
    前記特定のリモートデバイスに対してアプリケーション起動メッセージを送信するステップであって、前記アプリケーション起動メッセージは、アプリケーションをアクティブにするように前記特定のリモートデバイスに指示する、送信するステップと、
    アプリケーションの起動応答メッセージを受信するステップであって、前記起動応答メッセージは、前記アプリケーションが、前記特定のリモートデバイスの上でアクティブにされてきていることについての通知から構成されている、受信するステップと、
    前記特定のリモートデバイスの上の前記アプリケーションを前記デバイスから制御するステップと
    をさらに含む、請求項4または5に記載のコンピュータ読取り可能媒体。
  7. プロセッサと、
    メモリと、
    前記メモリに記憶され、また前記プロセッサにより、少なくとも部分的に、実行される1つまたは複数のアプリケーションと、
    前記メモリに記憶されるクロスデバイスリモート制御モジュールと
    を備えており、前記クロスデバイスリモート制御モジュールは、1つまたは複数のターゲットデバイスの上でリモートアプリケーションを発見するように構成されており、また
    ネットワークを経由してメッセージを送信し、また受信するように構成されたクロスデバイスアプリケーションモデルクライアントと
    少なくともアプリケーション能力を含むリモートアプリケーション情報を処理するように構成されたリモートアプリケーション発見クライアントと
    を備えている、システム。
  8. 前記クロスデバイスアプリケーションモデルクライアントは、さらに、
    前記ネットワークを経由して前記1つまたは複数のターゲットデバイスに接続し、
    前記1つまたは複数のターゲットデバイスの信頼性を決定し、
    前記信頼性に少なくとも部分的に基づいて、前記1つまたは複数のターゲットデバイスに対してアプリケーション発見クエリを送信し、また
    前記1つまたは複数のターゲットデバイスから1つまたは複数のアプリケーション発見応答を受信する
    ように構成されている、請求項7に記載のシステム。
  9. 前記1つまたは複数のアプリケーション発見応答は、
    特定のタスクを遂行する少なくともアプリケーション能力から構成されるアプリケーション情報と、
    前記特定のタスクを遂行する少なくともデバイス能力から構成されるデバイス情報と
    から構成される、請求項8に記載のシステム。
  10. 前記リモートアプリケーション発見クライアントは、さらに、
    1つまたは複数のアプリケーション発見応答を受信し、
    前記特定のタスクを遂行することができる1つまたは複数のアプリケーションに関連する1つまたは複数のリモートアプリケーションファイルを決定し、また
    1つまたは複数のリモートアプリケーションファイルをリミッタに対して送信する
    ように構成されている、請求項7、8、または9のいずれか1項に記載のシステム。
  11. 前記クロスデバイスモデルリモート制御は、さらに、
    1つまたは複数のリモートアプリケーションファイルを受信し、また
    特定のリモートアプリケーションファイルを選択する
    ように構成されたリミッタをさらに備えている、請求項7、8、9または10のいずれか1項に記載のシステム。
  12. 前記クロスデバイスアプリケーションモデルクライアントは、
    リモートアプリケーションファイルを受信し、
    前記1つまたは複数のターゲットデバイスの上のアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを前記1つまたは複数のターゲットデバイスに対して送信し、また
    前記1つまたは複数のターゲットデバイスから起動応答メッセージを受信する
    ように構成されており、前記起動応答メッセージは、
    タスクが前記アプリケーションの上で実行されることについての通知と、
    ディスプレイの上のプレゼンテーションのためのタスクコンテキストデータと
    から少なくとも構成される、請求項7、8、9または10のいずれか1項に記載のシステム。
  13. 前記クロスデバイスアプリケーションモデルクライアントは、
    リミッタからリモートアプリケーションファイルを受信し、
    ターゲットデバイスに対して、前記ターゲットデバイスの上のアプリケーションをアクティブにするように前記ターゲットデバイスに指示する起動メッセージを送信し、また
    前記ターゲットデバイスから起動応答メッセージを受信する
    ように構成されており、前記起動応答メッセージは、
    タスクが前記アプリケーションの上で実行されることについての通知と、
    タスクコンテキストデータが、前記ターゲットデバイスのディスプレイの上で提示されることについての通知と
    から構成される、請求項7、8、9、または10のいずれか1項に記載のシステム。
  14. 前記クロスデバイスモデルリモート制御モジュールは、さらに、マスタスレーブ構成で1つまたは複数のターゲットデバイスの上の前記リモートアプリケーションを制御するように構成されている、請求項7に記載のシステム。
  15. 前記特定のリモートアプリケーションファイルの前記選択は、発見クエリに少なくとも部分的に基づいて、ユーザ入力を経由して、またはアプリケーションによって遂行される、請求項11に記載のシステム。
JP2017512384A 2014-09-12 2015-09-11 クロスデバイスアプリケーションの発見および制御 Pending JP2017532651A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462049979P 2014-09-12 2014-09-12
US62/049,979 2014-09-12
US14/508,801 2014-10-07
US14/508,801 US10171558B2 (en) 2014-09-12 2014-10-07 Cross device application discovery and control
PCT/US2015/049547 WO2016040721A1 (en) 2014-09-12 2015-09-11 Cross device application discovery and control

Publications (1)

Publication Number Publication Date
JP2017532651A true JP2017532651A (ja) 2017-11-02

Family

ID=55456013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017512384A Pending JP2017532651A (ja) 2014-09-12 2015-09-11 クロスデバイスアプリケーションの発見および制御

Country Status (7)

Country Link
US (5) US10171558B2 (ja)
EP (1) EP3191952B1 (ja)
JP (1) JP2017532651A (ja)
CN (1) CN106687932A (ja)
BR (1) BR112017003476A2 (ja)
RU (1) RU2017107509A (ja)
WO (1) WO2016040721A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020088413A (ja) * 2018-11-15 2020-06-04 Necプラットフォームズ株式会社 電子機器、情報収集システム、情報収集方法、及びプログラム

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10706373B2 (en) 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
KR20240132105A (ko) 2013-02-07 2024-09-02 애플 인크. 디지털 어시스턴트를 위한 음성 트리거
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
KR101772152B1 (ko) 2013-06-09 2017-08-28 애플 인크. 디지털 어시스턴트의 둘 이상의 인스턴스들에 걸친 대화 지속성을 가능하게 하기 위한 디바이스, 방법 및 그래픽 사용자 인터페이스
DE112014003653B4 (de) 2013-08-06 2024-04-18 Apple Inc. Automatisch aktivierende intelligente Antworten auf der Grundlage von Aktivitäten von entfernt angeordneten Vorrichtungen
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
CN110797019B (zh) 2014-05-30 2023-08-29 苹果公司 多命令单一话语输入方法
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US10171558B2 (en) * 2014-09-12 2019-01-01 Microsoft Technology Licensing, Llc Cross device application discovery and control
US9485615B2 (en) * 2014-09-26 2016-11-01 At&T Intellectual Property I, L.P. Local peer-to-peer network for providing recommendations and enforcing security policies
US10673852B2 (en) * 2014-12-23 2020-06-02 Mcafee, Llc Self-organizing trusted networks
US9621948B2 (en) * 2015-01-29 2017-04-11 Universal Electronics Inc. System and method for prioritizing and filtering CEC commands
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
KR102499378B1 (ko) * 2016-08-30 2023-02-13 삼성전자주식회사 통신 장치 및 통신 방법
US10834231B2 (en) * 2016-10-11 2020-11-10 Synergex Group Methods, systems, and media for pairing devices to complete a task using an application request
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK201770428A1 (en) 2017-05-12 2019-02-18 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
EP3806092B1 (en) * 2017-05-12 2022-07-20 Apple Inc. Task delegation of a digital assistant
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. MULTI-MODAL INTERFACES
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US11385930B2 (en) * 2017-06-21 2022-07-12 Citrix Systems, Inc. Automatic workflow-based device switching
US10831441B2 (en) * 2017-07-05 2020-11-10 Kt Corporation Method for controlling and accessing application based on active voice input
EP3692441A1 (en) * 2017-10-06 2020-08-12 Convida Wireless, LLC Enabling a fog service layer with application to smart transport systems
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
DK201970511A1 (en) 2019-05-31 2021-02-15 Apple Inc Voice identification in digital assistant systems
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11218374B2 (en) * 2019-07-30 2022-01-04 Microsoft Technology Licensing, Llc Discovery and resolution of network connected devices
US11438452B1 (en) 2019-08-09 2022-09-06 Apple Inc. Propagating context information in a privacy preserving manner
WO2021068115A1 (en) 2019-10-08 2021-04-15 Citrix Systems, Inc. Application and device recommendation engine
KR20210112662A (ko) 2020-03-05 2021-09-15 삼성전자주식회사 외부 전자 장치의 어플리케이션을 제어하는 방법 및 이를 지원하는 전자 장치
US20210304904A1 (en) * 2020-03-27 2021-09-30 Samsung Electronics Co., Ltd. Method and system for managing queries of user in iot network
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11038934B1 (en) 2020-05-11 2021-06-15 Apple Inc. Digital assistant hardware abstraction
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
JP2022022723A (ja) * 2020-07-02 2022-02-07 キヤノン株式会社 通信システム、制御方法およびプログラム
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
CN114579819A (zh) * 2020-11-30 2022-06-03 华为技术有限公司 一种信息排序方法及电子设备
KR20220142198A (ko) * 2021-04-14 2022-10-21 삼성전자주식회사 전자 장치 및 외부 장치를 이용한 화면 재구성 방법
CN115248885A (zh) * 2021-04-26 2022-10-28 华为技术有限公司 设备发现方法、系统及其电子设备
US11704484B2 (en) 2021-04-30 2023-07-18 Bank Of America Corporation Cross channel digital data parsing and generation system
EP4089523A1 (en) * 2021-05-10 2022-11-16 Koninklijke Philips N.V. Medical system and method
CN114356272B (zh) * 2022-03-17 2022-08-23 北京荣耀终端有限公司 一种数据传输方法及系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2350971A (en) * 1999-06-07 2000-12-13 Nokia Mobile Phones Ltd Security Architecture
US7836494B2 (en) * 1999-12-29 2010-11-16 Intel Corporation System and method for regulating the flow of information to or from an application
US20020089994A1 (en) * 2001-01-11 2002-07-11 Leach, David J. System and method of repetitive transmission of frames for frame-based communications
WO2003014867A2 (en) 2001-08-03 2003-02-20 John Allen Ananian Personalized interactive digital catalog profiling
US7386889B2 (en) * 2002-11-18 2008-06-10 Trusted Network Technologies, Inc. System and method for intrusion prevention in a communications network
US7646755B2 (en) 2005-06-30 2010-01-12 Microsoft Corporation Seamless integration of portable computing devices and desktop computers
US20070191969A1 (en) * 2006-02-13 2007-08-16 Jianying Shi Automated state change notification
US8505036B2 (en) 2006-09-29 2013-08-06 Fisher-Rosemount Systems, Inc. Unified application programming interface for a process control system network
US20080282205A1 (en) 2007-02-06 2008-11-13 Access Systems Americas, Inc. Unified launcher user interface system and method for integrating multiple disparate environments on an electronic device
JP5137434B2 (ja) * 2007-03-28 2013-02-06 株式会社ソニー・コンピュータエンタテインメント データ処理装置、分散処理システム、データ処理方法、及びデータ処理プログラム
US8001553B2 (en) 2007-06-25 2011-08-16 Microsoft Corporation Aggregate computer system via coupling of computing machines
EP2218244A2 (en) * 2007-11-06 2010-08-18 Gemalto SA Sharing or reselling nfc applications among mobile communication devices
US8510804B1 (en) * 2008-03-25 2013-08-13 Sprint Communications Company L.P. Authorizing application use by a mobile device
US20100250653A1 (en) 2009-01-29 2010-09-30 Brandon Hudgeons Method and system for providing cross-domain communication
US20120166665A1 (en) * 2010-12-22 2012-06-28 Research In Motion Limited Method and system for selectively performing proxy services
US9497688B2 (en) * 2011-09-23 2016-11-15 Certicom Corp. Managing mobile device applications in a wireless network
US20130339454A1 (en) * 2012-06-15 2013-12-19 Michael Walker Systems and methods for communicating between multiple access devices
US8983669B2 (en) * 2012-07-31 2015-03-17 Causam Energy, Inc. System, method, and data packets for messaging for electric power grid elements over a secure internet protocol network
US9386045B2 (en) * 2012-12-19 2016-07-05 Visa International Service Association Device communication based on device trustworthiness
US10324987B2 (en) * 2013-12-31 2019-06-18 Samsung Electronics Co., Ltd. Application search using device capabilities
US10509639B2 (en) * 2014-06-04 2019-12-17 Rimini Street, Inc. Automatic software-update framework
US10171558B2 (en) 2014-09-12 2019-01-01 Microsoft Technology Licensing, Llc Cross device application discovery and control

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020088413A (ja) * 2018-11-15 2020-06-04 Necプラットフォームズ株式会社 電子機器、情報収集システム、情報収集方法、及びプログラム

Also Published As

Publication number Publication date
EP3191952B1 (en) 2018-10-24
CN106687932A (zh) 2017-05-17
US20200358845A1 (en) 2020-11-12
US10171558B2 (en) 2019-01-01
US10728314B2 (en) 2020-07-28
US20160080475A1 (en) 2016-03-17
US20240031426A1 (en) 2024-01-25
US20220141284A1 (en) 2022-05-05
RU2017107509A (ru) 2018-09-07
WO2016040721A1 (en) 2016-03-17
EP3191952A1 (en) 2017-07-19
BR112017003476A2 (pt) 2017-12-05
US11818199B2 (en) 2023-11-14
US11228640B2 (en) 2022-01-18
US20170289241A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
US11818199B2 (en) Cross device application discovery and control
KR102452780B1 (ko) 크로스 디바이스 작업 연속성
CN111278012B (zh) 在无线网络中的设备隔离
US10771592B2 (en) Interoperability of discovery and connection protocols between client devices and first screen devices
US20160261671A1 (en) Local Operation of Remotely Executed Applications
TW201637465A (zh) 對於無線網路的地理資訊
TW201403351A (zh) 用於以工作爲基礎之遠端服務之方法及裝置
US20240323272A1 (en) Modifying the type of interaction between a mobile computing device and a peripheral device based on proximity
US20170103009A1 (en) Monitoring a device status for an application
US20240340612A1 (en) Proximity based output selection for computing devices