(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-03
(54)【発明の名称】エンドポイントデバイス間でのアプリケーション共有
(51)【国際特許分類】
H04N 21/435 20110101AFI20241126BHJP
H04N 7/14 20060101ALI20241126BHJP
H04N 21/443 20110101ALI20241126BHJP
H04M 1/72 20210101ALI20241126BHJP
H04M 1/00 20060101ALI20241126BHJP
【FI】
H04N21/435
H04N7/14 110
H04N21/443
H04M1/72
H04M1/00 Q
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024523725
(86)(22)【出願日】2022-10-21
(85)【翻訳文提出日】2024-06-10
(86)【国際出願番号】 US2022047402
(87)【国際公開番号】W WO2023069693
(87)【国際公開日】2023-04-27
(32)【優先日】2021-10-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ベセット,テイラー
(72)【発明者】
【氏名】ラム,ユク・イン・モーリス
(72)【発明者】
【氏名】マ,リザ
(72)【発明者】
【氏名】ニシ,ダニエル
(72)【発明者】
【氏名】チョウ,フアン-チー
【テーマコード(参考)】
5C164
5K127
【Fターム(参考)】
5C164FA09
5C164MA08S
5C164UB10P
5C164UB51P
5C164VA17P
5K127BA03
5K127GA12
5K127GA35
5K127GB74
5K127HA28
(57)【要約】
エンドポイントフレームワークは、1つまたは複数のエンドポイントデバイス間で1つまたは複数のアプリケーションを共有するために実装される。アプリケーションの共有を開始するために、システムは、実行中のアプリケーションの状態またはステータスに基づいて通知を生成するアプリケーションを実行している第1のエンドポイントデバイスを含む。第1のエンドポイントデバイスは、第2のエンドポイントデバイスによって出力されるこれらの通知を第2のエンドポイントデバイスに提供する。第2のエンドポイントデバイスは、出力された通知とのインタラクションを受信し、これらのインタラクションを第1のエンドポイントデバイスに提供する。アプリケーション共有の開始を示すインタラクションに応答して、第1のエンドポイントデバイスは、実行されているアプリケーションに関連するアプリケーションストリームを生成し、これを第2のエンドポイントデバイスに提供する。
【特許請求の範囲】
【請求項1】
第1のエンドポイントデバイス上で実行されているアプリケーションに関連する通知を生成することと、
第2のエンドポイントデバイスから、前記通知とのインタラクションを表す信号を受信することと、
前記通知との前記インタラクションに基づいてアプリケーションストリームを開始することと、
前記第1のエンドポイントデバイスによって、前記アプリケーションストリームを前記第2のエンドポイントデバイスに送信することとを含む、方法。
【請求項2】
前記第1のエンドポイントデバイス上で実行されている前記アプリケーションの状態を判定すること、をさらに含み、
前記アプリケーションに関連する前記通知は、前記アプリケーションの前記状態に基づいて生成される、請求項1に記載の方法。
【請求項3】
前記状態は、着信電話を含む、請求項2に記載の方法。
【請求項4】
前記通知との前記インタラクションに基づいてアプリケーション制御を決定すること、をさらに含み、
前記アプリケーションストリームは、さらに前記アプリケーション制御に基づいて開始される、請求項1~請求項3のいずれかに記載の方法。
【請求項5】
前記アプリケーション制御は、アプリケーションストリームの開始、アプリケーションの終了、アプリケーションの無視、またはアプリケーションコマンドのうちの少なくとも1つを含む、請求項4に記載の方法。
【請求項6】
前記第1のエンドポイントデバイス上で実行されている前記アプリケーションに基づいて複数のアプリケーションフレームをレンダリングすることと、
前記複数のアプリケーションフレームをエンコードして、前記アプリケーションストリームの少なくとも一部を生成することとをさらに含む、請求項1~請求項5のいずれかに記載の方法。
【請求項7】
前記アプリケーションストリームは、ビデオ通話の少なくとも一部を含む、請求項6に記載の方法。
【請求項8】
前記第1のエンドポイントデバイス上で実行されている前記アプリケーションに基づいてオーディオデータをレンダリングすることと、
前記オーディオデータをエンコードして、前記アプリケーションストリームの少なくとも一部を生成することとをさらに含む、請求項1~請求項7のいずれかに記載の方法。
【請求項9】
前記アプリケーションストリームは、着信電話の少なくとも一部を含む、請求項8に記載の方法。
【請求項10】
第1のエンドポイントデバイス上で実行されているアプリケーションに関連する通知を第2のエンドポイントデバイスに送信することと、
前記第2のエンドポイントデバイスから、前記通知とのインタラクションを示すデータを受信することと、
前記通知との前記インタラクションを示す前記データに応答して、前記第1のエンドポイントデバイス上で実行されている前記アプリケーションの少なくとも一部を表すアプリケーションストリームを生成することと、
前記アプリケーションストリームを前記第2のエンドポイントデバイスに送信することとを含む、方法。
【請求項11】
前記第1のエンドポイントデバイス上で実行されている前記アプリケーションの状態を判定することと、
前記アプリケーションの前記状態を判定したことに応答して、前記アプリケーションに関連する前記通知を生成することとをさらに含む、請求項10に記載の方法。
【請求項12】
前記第1のエンドポイントデバイス上で実行されている前記アプリケーションに基づいてオーディオデータをレンダリングすることと、
前記オーディオデータをエンコードして、エンコードされたオーディオストリームを生成することとをさらに含む、請求項10または請求項11に記載の方法。
【請求項13】
前記アプリケーションストリームは、エンコードされた前記オーディオストリームを含む、請求項12に記載の方法。
【請求項14】
前記第1のエンドポイントデバイス上で実行されている前記アプリケーションに基づいてフレームをレンダリングすることと、
前記フレームをエンコードして、エンコードされたビデオストリームを生成することとをさらに含む、請求項10または請求項11に記載の方法。
【請求項15】
前記アプリケーションストリームは、前記エンコードされた前記ビデオストリームを含む、請求項14に記載の方法。
【請求項16】
前記通知は、コールを受け入れるためのプロンプトを含む、請求項1~請求項15のいずれかに記載の方法。
【請求項17】
前記通知は、前記第2のエンドポイントデバイスの入力デバイスを起動するプロンプトを含む、請求項1~請求項16のいずれかに記載の方法。
【請求項18】
前記第1のエンドポイントデバイスにおいて、前記第2のエンドポイントデバイスからの前記アプリケーションストリームの少なくとも一部とのインタラクションを表すデータを受信すること、をさらに含む、請求項1~請求項17のいずれかに記載の方法。
【請求項19】
前記アプリケーションストリームの少なくとも一部との前記インタラクションに基づいて、前記第1のエンドポイントデバイス上で実行されている前記アプリケーションを修正すること、をさらに含む、請求項18に記載の方法。
【請求項20】
前記アプリケーションストリームの少なくとも一部との前記インタラクションに基づいて、修正されたアプリケーションストリームを生成することと、
前記修正された前記アプリケーションストリームを前記第2のエンドポイントデバイスに送信することとをさらに含む、請求項18または請求項19に記載の方法。
【請求項21】
第2のエンドポイントデバイス上で実行されているアプリケーションに関連する通知を第1のエンドポイントデバイスに出力することと、
前記通知とのインタラクションを受信することと、
前記通知との前記インタラクションを表すデータを前記第1のエンドポイントデバイスに送信することと、
前記第2のエンドポイントデバイス上で実行されている前記アプリケーションに関連するアプリケーションストリームを、前記第2のエンドポイントデバイスから受信することとを含む、方法。
【請求項22】
前記通知は、ディスプレイまたはスピーカのうちの少なくとも一方を含む出力デバイスによって出力される、請求項21に記載の方法。
【請求項23】
前記出力デバイスによって前記アプリケーションストリームの少なくとも一部を出力すること、をさらに含む、請求項22に記載の方法。
【請求項24】
前記インタラクションは、タッチスクリーン、マウス、キーボード、リモートコントロール、またはマイクロフォンのうちの少なくとも1つを含む入力デバイスによって受信される、請求項21~請求項23のいずれかに記載の方法。
【請求項25】
前記入力デバイスによって前記アプリケーションストリームとのインタラクションを受信することと、
前記アプリケーションストリームとの前記インタラクションを表すデータを前記第2のエンドポイントデバイスに送信することとをさらに含む、請求項24に記載の方法。
【請求項26】
前記アプリケーションストリームとの前記インタラクションに基づいて修正されたアプリケーションストリームを前記第2のエンドポイントデバイスから受信すること、をさらに含む、請求項25に記載の方法。
【請求項27】
前記アプリケーションストリームの少なくとも一部をデコードして、デコードされたビデオストリームを生成すること、をさらに含む、請求項21~請求項26のいずれかに記載の方法。
【請求項28】
前記アプリケーションストリームの少なくとも一部をデコードして、デコードされたオーディオストリームを生成すること、をさらに含む、請求項21~請求項27のいずれかに記載の方法。
【請求項29】
前記通知は、コールを受け入れるためのプロンプトを含む、請求項21~請求項28のいずれかに記載の方法。
【請求項30】
前記アプリケーションストリームは、着信電話の少なくとも一部を含む、請求項21~請求項29のいずれかに記載の方法。
【請求項31】
前記第1のエンドポイントデバイスは第1のオペレーティングシステムを有し、前記第2のエンドポイントデバイスは第2の異なるオペレーティングシステムを有する、請求項1~請求項30のいずれかに記載の方法。
【請求項32】
前記第2の異なるオペレーティングシステムは、前記第1のオペレーティングシステムとは異なる少なくとも1つのインターフェース、言語、メモリ管理技術、通信プロトコル、暗号化、またはネットワークスタックを有する、請求項31に記載の方法。
【請求項33】
1つまたは複数のプロセッサを含み、請求項1~請求項32のいずれかに記載の方法を実行するために前記1つまたは複数のプロセッサを操作するように構成された実行可能命令を記憶する第1のエンドポイントデバイス、を含む、システム。
【請求項34】
1つまたは複数の他のエンドポイントデバイスに通信可能に結合された1つまたは複数のエンドポイントデバイスを含むエンドポイントデバイスフレームワークを含むシステムであって、
請求項1~請求項32のいずれかに記載の方法を実行するように構成される、システム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
デバイスエコシステムでは、各々がそれぞれの機能を有し、それらの機能に関連付けられたそれぞれのアプリケーションを実行する複数のデバイスが、1人または複数のユーザにそれらの機能を提供するためにネットワーク接続される。従来、デバイスエコシステムに新しい機能を追加するには、ネットワークから要求されたときにそれぞれのアプリケーションを実行することによって新しい機能を実行する新しいデバイスがネットワークに追加される。しかし、デバイスエコシステムに新しいデバイスを追加することは、閉じたデバイスエコシステムのように、デバイスエコシステムによってサポートされるオペレーティングシステムおよび通信プロトコルが限られているため、面倒で制限的な場合がある。また、デバイスエコシステムに継続的にデバイスを追加すると、デバイスエコシステム内の各デバイスの機能を管理する複雑さが増す。
【0002】
さらに、デバイスエコシステムに追加されるデバイスは、多くの場合、ユーザデータに結び付けられ、デバイスが参加することを許可されるデバイスエコシステムを制限する。さらに、多くのデバイスエコシステムは、各デバイスがその機能に関連付けられたアプリケーションのみを実行することを要求する。
【0003】
本開示は、添付の図面を参照することによって、よりよく理解され、その多数の特徴および利点が当業者に明らかになる。異なる図面における同じ参照符号の使用は、類似または同一の項目を示す。
【図面の簡単な説明】
【0004】
【
図1】いくつかの実施形態による、1つまたは複数のアプリケーションを共有するためのエンドポイントデバイスフレームワークのブロック図である。
【
図2】いくつかの実施形態による、
図1のエンドポイントデバイスフレームワーク内で1つまたは複数のアプリケーションを共有するか、または1つまたは複数の共有アプリケーションを受信するように構成されたエンドポイントデバイスのブロック図である。
【
図3】いくつかの実施形態による、エンドポイントデバイスのための例示的なアプリケーション共有開始動作を示す信号フロー図である。
【
図4】いくつかの実施形態による、エンドポイントデバイスのための例示的なアプリケーション共有動作を示す信号フロー図である。
【
図5】いくつかの実施形態による、エンドポイントデバイスにわたって1つまたは複数のアプリケーションを共有するためのプロセスを示すフロー図である。
【発明を実施するための形態】
【0005】
実施形態の概要
本明細書で説明する技術およびシステムは、エンドポイントデバイスの1つまたは複数にわたるアプリケーションの共有を通じて、エンドポイントデバイスのデバイスエコシステムにおいて柔軟性を提供することに向けられている。例示的な実施形態によれば、方法は、第1のエンドポイントデバイス上で実行されているアプリケーションに関連する通知を生成することを含むことができる。さらに、本方法は、第2のエンドポイントデバイスから、通知とのインタラクションを表す信号を受信することを含むことができる。さらに、本方法は、通知とのインタラクションに基づいてアプリケーションストリームを開始することと、第1のエンドポイントデバイスによって、アプリケーションストリームを第2のエンドポイントデバイスに送信することとを含むことができる。
【0006】
実施形態において、本方法は、第1のエンドポイントデバイス上で実行されているアプリケーションの状態(例えば、アプリケーションが期限切れである、アプリケーションが実行中である、アプリケーションが中断されている、アプリケーションが終了した)を判定する(determining)ことをさらに含むことができる。アプリケーションに関連する通知は、アプリケーションの状態に基づいて生成され得る。さらに、状態は、アプリケーションに対する着信電話(phone call)を含み得る。本方法は、通知とのインタラクションに基づいてアプリケーション制御を決定することをさらに含み得る。アプリケーションストリームはまた、アプリケーション制御に基づいて開始され得る。また、アプリケーション制御は、アプリケーションストリームの開始、アプリケーションの終了、アプリケーションの無視、アプリケーションコマンド、またはそれらの任意の組合せのうちの少なくとも1つを含むことができる。
【0007】
さらに、本方法は、第1のエンドポイントデバイス上で実行されているアプリケーションに基づいて複数のアプリケーションフレームをレンダリングすることを含むことができる。本方法はさらに、複数のアプリケーションフレームをエンコードして、アプリケーションストリームの少なくとも一部を生成することを含み得る。実施形態において、アプリケーションストリームは、ビデオ通話の少なくとも一部を含むことができる。さらに、本方法は、第1のエンドポイントデバイス上で実行されているアプリケーションに基づいてオーディオデータをレンダリングすることと、オーディオデータをエンコードして、アプリケーションストリームの少なくとも一部を生成することとを含むことができる。さらに、アプリケーションストリームは、着信電話の少なくとも一部を含むことができる。
【0008】
別の例示的な実施形態では、方法は、第1のエンドポイントデバイス上で実行されているアプリケーションに関連する通知を第2のエンドポイントデバイスに送信することを含むことができる。さらに、本方法は、第2のエンドポイントデバイスから、通知とのインタラクションを示すデータを受信することを含むことができる。本方法はまた、通知とのインタラクションを示すデータに応答して、第1のエンドポイントデバイス上で実行されているアプリケーションの少なくとも一部を表すアプリケーションストリームを生成することと、アプリケーションストリームを第2のエンドポイントデバイスに送信することとを含むことができる。
【0009】
実施形態において、本方法は、第1のエンドポイントデバイス上で実行されているアプリケーションの状態(例えば、アプリケーションが期限切れである、アプリケーションが実行中である、アプリケーションが中断されている、アプリケーションが終了した)を判定することと、アプリケーションの状態を判定することに応答して、アプリケーションに関連する通知を生成することとをさらに含み得る。本方法は、第1のエンドポイントデバイス上で実行されているアプリケーションに基づいてオーディオデータをレンダリングすることと、オーディオデータをエンコードして、エンコードされたオーディオストリームを生成することとをさらに含み得る。実施形態において、アプリケーションストリームはオーディオストリーム(audio stream)を含み得る。本方法はまた、第1のエンドポイントデバイス上で実行されているアプリケーションに基づいてフレームをレンダリングすることと、フレームをエンコードして、エンコードされたビデオストリームを生成することとを含むことができる。実施形態において、アプリケーションストリームは、エンコードされたビデオストリームを含み得る。
【0010】
一般に、通知は、コールを受け入れるためのプロンプトを含むことができる。さらに、通知は、第2のエンドポイントデバイスの入力デバイスを起動するプロンプトを含むことができる。方法はまた、第1のエンドポイントデバイスにおいて、第2のエンドポイントデバイスからのアプリケーションストリームの少なくとも一部とのインタラクションを表すデータを受信することを含むことができる。さらに、本方法は、アプリケーションストリームの少なくとも一部とのインタラクションに基づいて、第1のエンドポイントデバイス上で実行されているアプリケーションを修正することも含むことができる。さらに、本方法は、アプリケーションストリームの少なくとも一部とのインタラクションに基づいて、修正されたアプリケーションストリームを生成することと、修正されたアプリケーションストリームを第2のエンドポイントデバイスに送信することとを含むことができる。
【0011】
追加の例示的実施形態では、方法は、第2のエンドポイントデバイス上で実行されているアプリケーションに関連する通知を第1のエンドポイントデバイスに出力することを含むことができる。さらに、本方法は、通知とのインタラクションを受信することと、通知とのインタラクションを表すデータを第1のエンドポイントデバイスに送信することとを含むことができる。さらに、本方法は、第2のエンドポイントデバイス上で実行されているアプリケーションに関連するアプリケーションストリームを第2のエンドポイントデバイスから受信することを含むことができる。
【0012】
実施形態では、通知は、ディスプレイまたはスピーカのうちの少なくとも一方を含む出力デバイスによって出力され得る。さらに、本方法は、出力デバイスによってアプリケーションストリームの少なくとも一部を出力することを含むことができる。また、インタラクションは、タッチスクリーン、マウス、キーボード、リモートコントロール、マイクロフォン、またはそれらの任意の組合せを含む入力デバイスによって受信され得る。
【0013】
さらに、本方法は、入力デバイスによってアプリケーションストリームとのインタラクションを受信することと、アプリケーションストリームとのインタラクションを表すデータを第2のエンドポイントデバイスに送信することとを含むことができる。本方法はまた、アプリケーションストリームとのインタラクションに基づいて修正されたアプリケーションストリームを第2のエンドポイントデバイスから受信することを含むことができる。さらに、本方法は、アプリケーションストリームの少なくとも一部をデコードして、デコードされたビデオストリームを生成することを含み得る。本方法はまた、アプリケーションストリームの少なくとも一部をデコードして、デコードされたビデオストリーム(video stream)を生成することを含むことができる。実施形態において、通知は、コールを受け入れるためのプロンプトを含み得る。さらに、アプリケーションストリームは、着信電話の少なくとも一部を含み得る。
【0014】
一般に、第1のエンドポイントデバイスは第1のオペレーティングシステムを有することができ、第2のエンドポイントデバイスは第2の異なるオペレーティングシステムを有することができる。第2の異なるオペレーティングシステムは、第1のオペレーティングシステムとは異なるインターフェース、言語、メモリ管理技術、通信プロトコル、暗号化、ネットワークスタック、またはそれらの任意の組合せを有することができる。
【0015】
例示的な実施形態では、システムは、1つまたは複数のプロセッサを含み、本明細書に開示される方法の1つまたは複数を実行するために1つまたは複数のプロセッサを操作するように構成された実行可能命令を記憶する第1のエンドポイントデバイスを含むことができる。
【0016】
他の例示的な実施形態では、システムは、1つまたは複数の他のエンドポイントデバイスに通信可能に結合された1つまたは複数のエンドポイントデバイスを含むエンドポイントデバイスフレームワークを含むことができ、システムは、本明細書に開示される1つまたは複数の方法を実行するように構成される。
【0017】
詳細な説明
本明細書に記載の技術およびシステムは、エンドポイントデバイスの1つまたは複数にわたるアプリケーションの共有を通じて、エンドポイントデバイスのデバイスエコシステムにおける柔軟性を提供する。具体的には、本明細書に記載されるそのような技術およびシステムは、エンドポイントデバイスがアプリケーションを実行し、アプリケーションが他のエンドポイントデバイス上で操作され、部分的に操作され、対話可能であり、または部分的にシミュレートされるように、そのアプリケーションを1つまたは複数の他のエンドポイントデバイスと共有することを可能にする。アプリケーションの共有を開始するために、アプリケーションを実行している第1のエンドポイントデバイスは、実行中のアプリケーションの状態またはステータスに基づいて通知を生成する。これらの通知は、第2のエンドポイントデバイスに提供され、第2のエンドポイントデバイスによって出力される。第2のエンドポイントデバイスは、出力された通知とのインタラクションを受信し、これらのインタラクションを第1のエンドポイントデバイスに提供する。アプリケーション共有の開始を示すインタラクションに応答して、第1のエンドポイントデバイスは、実行中のアプリケーションに関連するアプリケーションストリームを生成し、これを第2のエンドポイントデバイスに提供する。このようにして、アプリケーション共有は、デバイス間で共有されているアプリケーションに関連する通知を通じて、エンドポイントデバイス間で開始される。
【0018】
さらに、エンドポイントデバイス間でアプリケーションを共有するために、第1のエンドポイントデバイスは、第1のエンドポイントデバイス上で実行されているアプリケーションに基づいてアプリケーションストリームを生成し、これを第2のエンドポイントデバイスに提供する。第2のエンドポイントデバイスはアプリケーションストリームを出力し、出力されたアプリケーションストリームとのインタラクションを受信する。第2のエンドポイントデバイスは、アプリケーションストリームとのインタラクションを第1のエンドポイントデバイスに提供する。次いで、第1のエンドポイントデバイスは、アプリケーションストリームとのインタラクションに基づいて、第1のエンドポイントデバイス上で実行されているアプリケーションを修正し、修正されたアプリケーションに基づいて修正されたアプリケーションストリームを生成する。このようにして、第1のエンドポイントデバイス上で実行されているアプリケーションは、第2のエンドポイントデバイス上でアプリケーションが操作され、部分的に操作され、対話可能であり、または部分的にシミュレートされるように、第2のエンドポイントデバイスと共有される。
【0019】
さらに、本明細書で説明する技術およびシステムは、エンドポイントデバイス間でオペレーティングシステムにとらわれないシステムアプリケーションの共有を可能にする。すなわち、第1のオペレーティングシステムを有するエンドポイントデバイスは、1つまたは複数の異なるオペレーティングシステムを有する1つまたは複数のエンドポイントデバイスとアプリケーションを共有する。このようなフレームワークは、デバイスエコシステム内でアプリケーションを共有する際の柔軟性を高めることを可能にする。
【0020】
図1は、いくつかの実施形態による、クロスデバイスアプリケーション共有のためのエンドポイントデバイスフレームワーク100を示す図である。エンドポイントデバイスフレームワーク100は、各々が少なくとも1つの他のエンドポイントデバイス110に通信可能に結合された1つまたは複数の共有エンドポイントデバイス102を含み、1つまたは複数の共有エンドポイントデバイス102と1つまたは複数の他のエンドポイントデバイス110との間で1つまたは複数のアプリケーションを共有できるように構成される。そのようなアプリケーションには、例えば、数例を挙げると、電気通信アプリケーション(例えば、着信電話、ビデオ通話、ボイスオーバーインターネットプロトコル(VoIP)アプリケーション)、メッセージングアプリケーション、メディアプレゼンテーションアプリケーション、仮想アシスタントアプリケーション、ゲーミングアプリケーション、ショッピングアプリケーション、暗号化アプリケーション、復号化アプリケーション、ウェブブラウザアプリケーション、およびナビゲーションアプリケーションが含まれる。通信可能に結合されるとは、例えば、数例を挙げると、有線通信、無線通信、ネットワーク通信、ブリッジ通信などによって、それらの間でデータの送信、データの受信、またはその両方を可能にするように各々が構成された2つ以上のデバイスを含む。本明細書で使用される「共有エンドポイントデバイス」および「エンドポイントデバイス」は各々、1つまたは複数のアプリケーションを実行するように構成されたハードウェアおよびソフトウェアリソースを含み、例えば、1つまたは複数のデスクトップコンピュータ、サーバ、仮想サーバ、ノートブックコンピュータ、タブレットコンピュータ、仮想現実システム、拡張現実システム、コンピュータ対応携帯電話(すなわち、「スマートフォン」)、コンピュータ対応ウェアラブルデバイス(すなわち、「ウェアラブル」)、通信ハブ、車両統合ディスプレイ、コンピュータ対応ディスプレイ(すなわち、「スマートディスプレイ」)、コンピュータ対応テレビ(すなわち、「スマートテレビ」)、コンピュータ対応メガネ、コンピュータ対応スピーカ、コンピュータ対応カメラ、コンピュータ対応アラーム、ドローン、またはこれらの任意の組合せを含む。
【0021】
実施形態では、1つまたは複数の共有エンドポイントデバイス102は、共有アプリケーションがエンドポイントデバイス110上で操作され、部分的に操作され、対話可能であり、または部分的にシミュレートされるように、1つまたは複数のアプリケーションを実行し、1つまたは複数の他の通信可能に結合されたエンドポイントデバイス110と共有するように構成される。例えば、
図1に示される例示的な実施形態では、共有、すなわち第1のエンドポイントデバイス102は、アプリケーションが第2のエンドポイントデバイス110上で操作され、部分的に操作され、対話可能であり、または部分的にシミュレートされるように、1つまたは複数のアプリケーションを第2のエンドポイントデバイス110と共有するように構成される。別のエンドポイントデバイス110へのアプリケーションの共有を容易にするために、共有エンドポイントデバイス102は、共有される各アプリケーションに、対応するアプリケーションインスタンス104を実行するように構成される。アプリケーションインスタンス104は、別のエンドポイントデバイス110に共有されるアプリケーションの少なくとも一部の実行を容易にするためのソフトウェアおよびハードウェアを含む。このような促進には、例えば、数例を挙げると、ビデオフレームのレンダリング、オーディオデータのレンダリング、データストリームの制御、コール処理、メッセージ処理、ネットワーク管理、通信管理、認証処理、通知生成、またはそれらの任意の組合せなど、アプリケーションの1つまたは複数の動作を実行することが含まれる。実施形態によれば、アプリケーションインスタンス104によって実行される動作の結果として得られるデータは、アプリケーションストリーム108として、1つまたは複数の通信可能に結合されたエンドポイントデバイス110に提供される。本明細書で使用されるように、「アプリケーションストリーム」は、アプリケーションが1つまたは複数の他のエンドポイントデバイス上で操作されること、部分的に操作されること、対話可能であること、または部分的にシミュレートされることを可能にする1つまたは複数のデータストリームを含む。このようなデータストリームには、例えば、数例を挙げると、ビデオストリーム、オーディオストリーム、制御データストリーム、暗号化データストリーム、またはそれらの任意の組合せが含まれる。例えば、共有エンドポイントデバイス102は、エンコードされたビデオストリームおよびビデオ通話のエンコードされたオーディオストリームを含むアプリケーションストリーム108をエンドポイントデバイス110に提供する。
【0022】
実施形態によれば、1つまたは複数の共有エンドポイントデバイス102は各々、共有エンドポイントデバイス102上で実行されているアプリケーションに関連する1つまたは複数のアプリケーション通知を生成するように構成された通知エンジン106を含む。通知エンジン106によって生成されるアプリケーション通知には、例えば、ユーザプロンプト(例えば、情報を入力するプロンプト、サービスを有効にするプロンプト、ハードウェアをアクティブにするプロンプト、選択するプロンプト、確認するプロンプト)、アプリケーションステータス(例えば、アプリケーションによって受信されるデータ、アプリケーションの認可、アプリケーションのアクティブ化、アプリケーションの非アクティブ化)、アプリケーション出力(例えば、アプリケーションによって生成されるデータ、アプリケーションによって計算される値、ビデオデータ、オーディオデータ)、またはそれらの任意の組合せが含まれる。実施形態では、通知エンジン106によって生成されたアプリケーション通知は、エンドポイントデバイスによって視覚的、聴覚的、または触覚的に出力されるように構成される。例えば、通知エンジン106によって生成されたアプリケーション通知は、スクリーン上に表示されるように構成される。別の例として、通知エンジン106によって生成されるアプリケーション通知は、エンドポイントデバイスの振動を誘発するように構成される。実施形態によれば、通知エンジン106によって生成されるアプリケーション通知は、1つまたは複数のプッシュ通知を含む。実施形態において、共有エンドポイントデバイス102は、通知エンジン106によって生成された1つまたは複数のアプリケーション通知を、通信可能に結合されたエンドポイントデバイス110に送信するように構成される。例えば、共有エンドポイントデバイス102は、共有エンドポイントデバイス102上で実行されているアプリケーションによってコールが受信されていることを示すアプリケーション通知をエンドポイントデバイス110に送信するように構成される。別の例として、共有エンドポイントデバイス102は、エンドポイントデバイス110のカメラをオンにするようユーザに促すアプリケーション通知をエンドポイントデバイス110に送信するように構成される。実施形態によれば、共有エンドポイントデバイス102は、共有エンドポイントデバイス102の通知エンジン106によって生成された1つまたは複数の通知を出力し、1つまたは複数の入力デバイスを使用して出力通知との1つまたは複数のインタラクションを受信するように構成される。
【0023】
共有エンドポイントデバイス102からアプリケーションストリーム108またはアプリケーション通知を受信するエンドポイントデバイス110は、受信したアプリケーションストリーム108または受信したアプリケーション通知の少なくとも一部を出力するように構成された出力デバイス112を含む。出力デバイスには、例えば、1つまたは複数のディスプレイ(例えば、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)、有機発光ダイオード(OLED)、およびプラズマディスプレイ)、オーディオデバイス(例えば、フルレンジドライバ、ミッドレンジドライバ、同軸ドライバ、ラウドスピーカ、ツイータ、ウーファ、サブウーファ、およびクロスオーバー)、触覚出力デバイス(例えば、運動感覚コミュニケーションデバイス、触覚フィードバックデバイス、または振動モータ)が含まれる。一例として、エンドポイントデバイス110は、受信したアプリケーションストリーム108のビデオストリームを出力するように構成されたディスプレイを含む。別の例として、エンドポイントデバイス110は、受信したアプリケーションストリーム108からの着信電話のオーディオストリームを出力するように構成されたスピーカを含む。さらに別の例として、エンドポイントデバイスは、エンドポイントデバイス110のカメラを起動するユーザプロンプトを含む通知を出力するように構成されたディスプレイを含む。
【0024】
実施形態では、エンドポイントデバイス110は、1つまたは複数のインタラクションを受信するように構成された入力デバイス114を含む。入力デバイスには、例えば、タッチスクリーン、キーボード、リモートコントロール、仮想キーボード、マウス、ジョイスティック、コントローラパッド、マイクロフォン、加速度計、近接センサ、カメラなど、ユーザのインタラクションを受け取るように構成された1つまたは複数のデバイスが含まれる。インタラクションには、例えば、数例を挙げると、タッチスクリーン上のジェスチャ、マウスクリック、ボタン押下、ホイールクリック、キーボードストローク、マイクロフォンへの音声、エンドポイントデバイスの動き、ハンドジェスチャ、またはそれらの任意の組合せが含まれる。実施形態では、受信したアプリケーションストリーム108の少なくとも一部を出力するエンドポイントデバイス110は、出力されるアプリケーションストリーム108の一部に関連する1つまたは複数のインタラクションを受信するように構成される。すなわち、エンドポイントデバイス110は、出力される受信したアプリケーションストリーム108によって表されるアプリケーションとのインタラクションを受信するように構成される。一例として、エンドポイントデバイス110は、共有エンドポイントデバイス102上で実行され、ビデオストリームを含むアプリケーションを表すアプリケーションストリーム108を受信する。エンドポイントデバイス110がアプリケーションストリーム108のビデオストリームを出力する間、エンドポイントデバイス110は、出力されたビデオストリームに関連するインタラクション、例えば、タッチスクリーン上のジェスチャ、マウスクリック、リモートコントロールボタンの押下(例えば、リモートコントロールのボタンとのインタラクション)、またはそれらの任意の組合せを受信する。同様に、受信通知を出力するエンドポイントデバイス110は、出力通知に関連する1つまたは複数のインタラクションを受信するように構成される。言い換えれば、エンドポイントデバイス110は、エンドポイントデバイス110によって出力されている通知とのインタラクションを受信する。一例として、ユーザプロンプトを含む通知を表示するエンドポイントデバイス110は、ユーザプロンプトに関連するインタラクション、例えば、タッチスクリーン上のジェスチャ、マウスクリック、リモートコントロールボタンの押下(例えば、リモートコントロールのボタンとのインタラクション)、またはそれらの任意の組合せを受信する。
【0025】
エンドポイントデバイス110は、アプリケーションに関連する1つまたは複数のアプリケーションインタラクション116を、アプリケーションを共有する共有エンドポイントデバイス102に送信するように構成される。「アプリケーションインタラクション」は、本明細書で使用される場合、エンドポイントデバイス110によって出力されるアプリケーションストリーム108の一部との1つまたは複数のインタラクションを表すデータを含む。実施形態によれば、アプリケーションインスタンス104は、受信したアプリケーションインタラクション116に基づいて、アプリケーションインスタンス104上で実行されている共有アプリケーションの実行を修正するように構成される。例えば、アプリケーションインスタンス104は、アプリケーションインタラクション116を1つまたは複数の入力として共有アプリケーションに提供する、アプリケーションインタラクションに基づいて共有アプリケーションのための1つまたは複数の入力を決定する、共有アプリケーションの実行を終了する、別のアプリケーションを起動する、共有アプリケーションの別の部分を実行する、またはそれらの任意の組合せを実行する。このようにして、共有エンドポイントデバイス102上で実行されているアプリケーションは、エンドポイントデバイス110上で操作され、部分的に操作され、対話可能であり、または部分的にシミュレートされる。一例として、共有エンドポイントデバイス102のアプリケーションインスタンス104は、ビデオ通話のオーディオおよびビデオストリームをレンダリングし、オーディオおよびビデオストリームをアプリケーションストリーム108としてエンドポイントデバイス110に提供する。エンドポイントデバイス110は、ビデオストリームのオーディオとビデオを出力し、マイクロフォンを介してオーディオのユーザ入力を受信する。次いで、エンドポイントデバイス110は、ユーザ入力をアプリケーションインタラクション116として、アプリケーションストリーム108を提供する共有エンドポイントデバイス102に送信する。次いで、アプリケーションインスタンス104は、例えば、ビデオ通話に関連する別のデバイスにユーザ入力のオーディオを提供することによって、受信したユーザ入力に基づいて共有アプリケーションを修正する。
【0026】
実施形態によれば、エンドポイントデバイス110は、1つまたは複数の通知インタラクションを、共有エンドポイントデバイス102、例えば、アプリケーション通知を生成した共有エンドポイントデバイスに送信するように構成される。「通知インタラクション」は、本明細書で使用される場合、エンドポイントデバイス110によって出力された通知との1つまたは複数のインタラクションを表すデータを含む。実施形態では、共有エンドポイントデバイス102のアプリケーションインスタンス104は、1つまたは複数の通知インタラクションに基づいてアプリケーション共有セッションを開始するように構成される。アプリケーション共有セッションを開始することは、例えば、アプリケーションストリームを開始すること、アプリケーションへの入力として通知インタラクションを提供すること、アプリケーションへの入力を決定すること、アプリケーションを起動すること、アプリケーションの少なくとも一部を実行すること、1つまたは複数の後続のアプリケーション通知を生成すること、またはそれらの任意の組合せを含む。例えば、共有エンドポイントデバイス102は、着信に応答するか拒否するかをユーザに促す通知を生成し、通知をエンドポイントデバイス110に送信する。エンドポイントデバイス110は、通知を表示し、タッチスクリーン上のジェスチャとしてのプロンプトに対するユーザのインタラクションを受信し、この通知のインタラクションを共有エンドポイントデバイス102に送信する。通知インタラクションを受信することに応答して、アプリケーションインスタンス104は、アプリケーションストリーム108を開始し、エンドポイントデバイス110に送信することによって、アプリケーション共有を開始する。
【0027】
実施形態では、エンドポイントデバイスフレームワーク100の各共有エンドポイントデバイス102およびエンドポイントデバイス110は、各々が例えば、数例を挙げると、1つまたは複数のインターフェース、言語、メモリ管理技術、通信プロトコル、暗号化、ネットワークスタック、またはそれらの任意の組合せを有する、1つまたは複数のオペレーティングシステムを含む。実施形態によれば、エンドポイントデバイスフレームワーク100は、オペレーティングシステムにとらわれないように構成される。「オペレーティングシステムにとらわれない」とは、本明細書で使用される場合、第1のオペレーティングシステムを有する少なくとも1つの共有エンドポイントデバイス102および第2の別個のオペレーティングシステムを有する少なくとも1つの他のエンドポイントデバイス110をサポートするように構成されたエンドポイントデバイスフレームワーク100を含む。すなわち、エンドポイントデバイスフレームワーク100内で、第1のオペレーティングシステムを有する共有エンドポイントデバイス102は、第1のオペレーティングシステムとは異なる1つまたは複数のインターフェース、メモリ管理技術、通信プロトコル、ネットワークスタック、またはそれらの任意の組合せを含む第2の異なるオペレーティングシステムを有するエンドポイントデバイス110と、1つまたは複数のアプリケーションを共有する。例えば、共有エンドポイントデバイス102は、第1のインターフェースおよび第1のメモリ管理システムを有する第1のオペレーティングシステムを含む。エンドポイントデバイスフレームワーク100内で、共有エンドポイントデバイス102は、第2の異なるインターフェースおよび第2の異なるメモリ管理システムを有する第2の異なるオペレーティングシステムを有するエンドポイントデバイス110と、1つまたは複数のアプリケーションを共有する。エンドポイントデバイスフレームワーク100内のエンドポイントデバイス間で送信される1つまたは複数の通知を使用してアプリケーション共有を開始することにより、エンドポイントデバイスフレームワーク100は、オペレーティングシステムにとらわれない。例えば、1つまたは複数の標準通信プロトコル(例えば、Bluetooth、Wi-Fi、LTE)を使用して、共有エンドポイントデバイス102は、通知と相互作用するように構成された別のエンドポイントデバイス110に1つまたは複数の通知を送信する。これらのインタラクションを表すデータが標準通信プロトコルを介して共有エンドポイントデバイスに送信されると、共有エンドポイントデバイス102は、例えば、アプリケーションストリーム108を開始すること、標準通信プロトコルを使用してアプリケーションストリームを他のエンドポイントデバイスに送信することなど、インタラクションに対する1つまたは複数の応答を決定する。このようにして、エンドポイントデバイスフレームワーク100内の共有エンドポイントデバイス102は、オペレーティングシステムに依存しない方法で、1つまたは複数のアプリケーションを1つまたは複数の他のエンドポイントデバイスと共有する。
【0028】
ここで
図2を参照すると、1つまたは複数のアプリケーションを共有するように構成された例示的なエンドポイントデバイス202が示されている。実施形態では、エンドポイントデバイス202は、
図1に記載されるようなエンドポイントデバイスフレームワーク100の態様を実装する。例えば、エンドポイントデバイス202は、
図1に記載された共有エンドポイントデバイス102またはエンドポイントデバイス110と同様であってもよいか、同じであってもよい。いくつかの実施形態によれば、エンドポイントデバイス202は、例えば、数例を挙げると、デスクトップコンピュータ、ノートブックコンピュータ、ドローン、タブレットコンピュータ、仮想現実システム、拡張現実システム、スマートフォン、通信ハブ、スマートディスプレイ、またはスマートテレビを含む、アプリケーションの共有をサポートする電子デバイスの一部である。
【0029】
実施形態では、エンドポイントデバイス202は、メモリ232に通信可能に結合された処理要素240を含む。メモリ232は、電子記憶デバイス、例えば、ソリッドステートドライブ、ハードディスクドライブ、ランダムアクセスメモリ(「RAM」)、読み取り専用メモリ(「ROM」)、電子的に消去可能なプログラマブルROM(「EEPROM」)、光学記憶デバイス、またはそれらの任意の組合せを含む。メモリ232は、1つまたは複数のアプリケーションの実行および1つまたは複数のアプリケーションの共有に関連する命令およびデータ、例えば、数例を挙げると、デバイス識別データ、コーデック、メッセージングプロトコル、暗号化データ、復号化データ、参照フレーム、またはそれらの任意の組合せを含む。
【0030】
実施形態によれば、処理要素240は、1つまたは複数の制御処理ユニット(CPU)、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックス処理ユニット(GPU)、特定用途向け集積回路(ASIC)、またはそれらの任意の組合せを含み、1つまたは複数の他のエンドポイントデバイスに1つまたは複数のシステムサービスをインポートするおよびそれらのデバイスからそれらのサービスをエクスポートするように構成される。実施形態では、エンドポイントデバイス202は、アプリケーションインスタンス104と同様または同一のアプリケーションインスタンス204を含み、1つまたは複数のアプリケーション242の少なくとも一部を実行するように構成されたハードウェアおよびソフトウェアを含む。実施形態によれば、アプリケーションインスタンス204は、アプリケーションインスタンス204によって実行される1つまたは複数のアプリケーション242に基づいて、1つまたは複数のアプリケーションフレーム218をレンダリングするように構成される。実施形態において、各レンダリングされたアプリケーションフレーム218は、アプリケーション242に関連する視覚環境の少なくとも一部を表し、例えば、数例を挙げると、ビデオ通話、映画シーン、テレビシーン、ヘッドアップディスプレイ(HUD)、グラフィカルユーザインターフェース(GUI)、またはそれらの任意の組合せである。実施形態において、アプリケーションインスタンス204は、アプリケーションインスタンス204によって実行される1つまたは複数のアプリケーションに基づいてアプリケーションオーディオ220をレンダリングするように構成される。実施形態によれば、レンダリングされたアプリケーションオーディオ220は、例えば、数例を挙げると、電話からのオーディオ、ビデオ通話からのオーディオ、歌、効果音、またはその任意の組合せなど、アプリケーション242に関連する音、音楽、またはダイアログを表す。
【0031】
実施形態では、処理要素240は、それぞれのビデオストリームおよびオーディオストリームを生成するように、アプリケーションインスタンス204によってレンダリングされたアプリケーションフレーム218およびアプリケーションオーディオ220をエンコードするように構成されたハードウェアおよびソフトウェアを含む、1つまたは複数のエンコーダ228を含む。エンコーダ228は、例えば、アプリケーションフレーム218およびアプリケーションオーディオ220の圧縮、再編成、および操作を通じて、アプリケーションフレーム218およびアプリケーションオーディオ220をエンコードするように構成される。実施形態によれば、各エンコーダ228は、アプリケーションフレーム218およびアプリケーションオーディオ220をエンコードするために、1つまたは複数のコーデックを実装する。実施形態において、エンコーダ228によって生成されたビデオストリームおよびオーディオストリームは、アプリケーションストリーム108の少なくとも一部として別のエンドポイントデバイスに送信される。このようにして、それぞれのアプリケーション242のビデオおよびオーディオは、エンドポイントデバイス202上でレンダリングされ、別のエンドポイントデバイスと共有され、それぞれのアプリケーション242が、別のエンドポイントデバイス上で操作され、部分的に操作され、対話可能であり、または部分的にシミュレートされることを可能にする。
【0032】
実施形態によれば、エンドポイントデバイス202は、受信したアプリケーションストリーム108の少なくとも一部を出力するように構成された、出力デバイス112と同様または同じである、1つまたは複数の出力デバイス238を含むか、または出力デバイス238と通信可能に結合される。例えば、数例を挙げると、アプリケーションストリーム108のビデオストリームを出力するディスプレイ、アプリケーションストリーム108のオーディオストリームを出力するスピーカ、またはGUIを出力するタッチスクリーンなどである。実施形態では、エンドポイントデバイス202は、出力デバイス238によって出力されたアプリケーションストリーム108の部分とのインタラクションを受信するように構成された、入力デバイス114と同様または同一の、1つまたは複数の入力デバイス236を含むか、または入力デバイス236と通信可能に結合される。すなわち、入力デバイス236は、エンドポイントデバイス202と共有される1つまたは複数のアプリケーション242とのインタラクションを受信するように構成される。例えば、数例を挙げると、ディスプレイ上に出力されるアプリケーションストリーム108とのインタラクションを受信するためのタッチスクリーン、出力される電話アプリケーションとのインタラクションを受信するためのマイクロフォン、またはスピーカによって出力されるオーディオストリームに関連するインタラクションを受信するためのリモートコントロールボタン(例えば、リモートコントロールのボタン)などである。
図2に示された例示的な実施形態は、3つの入力デバイス(236-1、236-2、および236-3)ならびに3つの出力デバイス(238-1、238-2、および238-3)を含むか、またはこれらに通信可能に結合されたエンドポイントデバイス202を提示しているが、他の実施形態では、エンドポイントデバイス202は、任意の数の入力デバイス236および任意の数の出力デバイス238を含むか、またはこれらに通信可能に結合され得る。
【0033】
実施形態では、エンドポイントデバイス202は、各々がアプリケーションストリーム108の1つまたは複数の部分をデコードするように構成されたハードウェアおよびソフトウェアを含む、1つまたは複数のデコーダ230を含む。例えば、デコーダ230は、アプリケーションストリーム108のエンコードされたビデオストリームおよびオーディオストリームをデコードするように構成される。デコーダ230は、例えば、アプリケーションストリーム108の圧縮、再編成、および操作を通じて、アプリケーションフレームおよびアプリケーションオーディオをデコードするように構成される。実施形態において、各デコーダ230は、アプリケーションストリーム108からアプリケーションフレームおよびアプリケーションオーディオをデコードするために、1つまたは複数のコーデックを実装する。デコーダ230は、アプリケーションストリーム108からの任意のデコードされたアプリケーションフレーム、ビデオストリーム、およびアプリケーションオーディオデータを、出力のために1つまたは複数の出力デバイス238に提供するように構成される。
【0034】
エンドポイントデバイス202は、通知エンジン106と同様または同一の通知エンジン206を含み、この通知エンジン206は、アプリケーションインスタンス204によって実行される1つまたは複数のアプリケーション242に関連する1つまたは複数のアプリケーション通知224を生成するように構成されたハードウェアおよびソフトウェアを含む。アプリケーション通知224は、例えば、ユーザプロンプト(例えば、情報を入力するプロンプト、サービスを有効にするプロンプト、ハードウェアをアクティブにするプロンプト、選択するプロンプト、確認するプロンプト)、アプリケーションステータス(例えば、アプリケーションによって受信されているデータ、アプリケーションの認可、アプリケーションのアクティブ化、アプリケーションの非アクティブ化)、アプリケーション出力(例えば、アプリケーションによって生成されたデータ、アプリケーションによって計算された値、ビデオデータ、オーディオデータ)、またはそれらの任意の組合せを含む。実施形態では、アプリケーション通知224は、1つまたは複数の出力デバイスによって視覚的、聴覚的、または暗黙的(tacitly)に出力されるように構成される。例えば、アプリケーション通知224は、スクリーンを含む出力デバイス238に表示されるように構成される。実施形態によれば、通知エンジン206は、アプリケーションインスタンス204上で実行されるアプリケーション242の状態に基づいて、1つまたは複数のアプリケーション通知224を生成するように構成される。本明細書で使用される「アプリケーションの状態」または「アプリケーション状態」は、例えば、アプリケーション242のステータス(例えば、アプリケーションが古い、アプリケーションが実行中である、アプリケーションが中断している、アプリケーションが終了した)、アプリケーション242によって受信されたデータ(例えば、着信電話、着信ビデオ通話、更新データ、ファイル、ビデオストリーム、オーディオストリーム)、アプリケーション242の1つまたは複数の動作の進行状況(例えば、動作の完了、動作の出力、動作の開始)、またはそれらの任意の組合せを示す。アプリケーションの状態(例えば、アプリケーション状態)に基づいて、通知エンジン206は、1つまたは複数のアプリケーション通知224を決定し、生成するように構成される。実施形態では、通知エンジン206は、例えば、ルックアップテーブル、リレーショナルデータベース、またはその両方を使用して、アプリケーション242の状態に基づいてアプリケーション通知224を生成するように構成される。実施形態では、通知エンジン206は、アプリケーションインスタンス204上で実行されているアプリケーション242の別のエンドポイントデバイスとのアプリケーション共有を開始するために、1つまたは複数のアプリケーション通知224を生成するように構成される。すなわち、通知エンジン206は、アプリケーション242を別のエンドポイントデバイスと共有するのに必要な、役に立つ、または助ける1つまたは複数のユーザプロンプト、アプリケーションステータス、またはアプリケーション出力を決定するように構成される。例えば、通知エンジン206は、ビデオ通話アプリケーションを他のエンドポイントデバイスと共有するために、他のエンドポイントデバイスのカメラをアクティブにするユーザプロンプトを含む通知を生成する。別の例として、通知エンジン206は、他のエンドポイントデバイスとビデオストリーミングアプリケーションを共有するために、利用可能なビデオを含む通知を生成する。実施形態では、エンドポイントデバイス202は、1つまたは複数のアプリケーション通知224を1つまたは複数の他のエンドポイントデバイスに送信するように構成される。実施形態によれば、エンドポイントデバイス202は、1つまたは複数の出力デバイス238を使用して、エンドポイントデバイスの通知エンジン206によって生成された1つまたは複数の通知を出力し、1つまたは複数の入力デバイス236を使用して、出力された通知との1つまたは複数のインタラクションを受信するように構成される。受信されたインタラクションに基づいて、アプリケーションインスタンス204は、エンドポイントデバイス202上で実行されている1つまたは複数のアプリケーション242を修正するように構成される。
【0035】
実施形態によれば、エンドポイントデバイス202は、少なくとも1つの他のエンドポイントデバイス上で実行されているアプリケーション242に関連する1つまたは複数のアプリケーション通知224を受信する。エンドポイントデバイス202は、受信したアプリケーション通知を1つまたは複数の出力デバイス238に出力するように構成される。例えば、エンドポイントデバイス202は、タッチスクリーンを含む出力デバイス238上に、エンドポイントデバイスのマイクロフォンを起動するユーザプロンプトを含むアプリケーション通知224を表示するように構成される。実施形態では、エンドポイントデバイス202は、1つまたは複数の入力デバイス236を介して、1つまたは複数の出力デバイス238によって出力されたアプリケーション通知224との1つまたは複数の通知インタラクション226を受信するように構成される。例えば、エンドポイントデバイス202は、ユーザプロンプトを含むアプリケーション通知224が表示されている間に、1つまたは複数のマウスクリックを含む通知インタラクション226を受信するように構成される。別の例として、エンドポイントデバイス202は、アプリケーションステータスを含むアプリケーション通知224が表示されている間に、1つまたは複数のキーボードストロークを含む通知インタラクション226を受信するように構成される。実施形態によれば、エンドポイントデバイス202は、1つまたは複数の通知インタラクション226を1つまたは複数の他のエンドポイントデバイスに送信する。例えば、エンドポイントデバイス202は、通知インタラクション226に関連するアプリケーション242(すなわち、エンドポイントデバイス202によって受信されたアプリケーション通知224が関連するアプリケーション242)を実行しているエンドポイントデバイスに、1つまたは複数の通知インタラクション226を送信する。
【0036】
実施形態では、通知エンジン206は、1つまたは複数の他のエンドポイントデバイスから1つまたは複数の通知インタラクション226を受信する。受信した通知インタラクション226に基づいて、通知エンジン206は、アプリケーションインスタンス204上で実行されている1つまたは複数のアプリケーション242の共有を開始する。例えば、通知エンジン206は、1つまたは複数の受信した通知インタラクション226を、1つまたは複数のストリング、ルックアップテーブル、またはデータベースと比較する。アプリケーション共有の開始を示す比較に応答して、通知エンジン206は、1つまたは複数のアプリケーション242の共有を開始する。通知エンジン206は、例えば、アプリケーションストリーム108を開始すること、通知インタラクション226をアプリケーション242への入力として提供すること、アプリケーション242への入力を決定すること、アプリケーション242を起動すること、アプリケーション242の少なくとも一部を実行すること、1つまたは複数の後続のアプリケーション通知224を生成すること、またはそれらの任意の組合せによって、1つまたは複数のアプリケーション242の共有を開始する。このようにして、アプリケーション通知224は、2つ以上のエンドポイントデバイス間で1つまたは複数のアプリケーション242の共有を開始するために使用される。
【0037】
図3は、例示的なアプリケーション共有開始動作300を提示する。実施形態では、共有エンドポイントデバイス102と同様または同一の第1のエンドポイントデバイス302が、アプリケーションインスタンス104と同様または同一のアプリケーションインスタンス304上で実行されている1つまたは複数のアプリケーションを、エンドポイントデバイス110と同様または同一の第2のエンドポイントデバイス310と共有するように構成される。第1のエンドポイントデバイス302はまた、通知エンジン106と同様または同一の通知エンジン306を含み、アプリケーションインスタンス304上で実行されているアプリケーションに関連する1つまたは複数のアプリケーション通知を生成するように構成される。開始動作300は、第1のエンドポイントデバイス302の通知エンジン306が、アプリケーションインスタンス304上で実行されている1つまたは複数のアプリケーションのアプリケーション状態301を判定することを含む。アプリケーション状態301は、アプリケーションインスタンス304上で実行されているアプリケーションのステータス、アプリケーションインスタンス304上で実行されているアプリケーションによって受信されたデータ、アプリケーションインスタンス304上で実行されているアプリケーションの1つまたは複数の動作の進行状況、またはそれらの任意の組合せを示す。決定されたアプリケーション状態301に基づいて、通知エンジン306は、アプリケーションインスタンス304上で実行されているアプリケーションを第2のエンドポイントデバイス310と共有するのに必要であるか、有用であるか、または助ける1つまたは複数の通知303を生成するように構成される。例えば、通知エンジン306は、決定されたアプリケーション状態301を、1つまたは複数のストリング、ルックアップテーブル、データベース、またはそれらの任意の組合せと比較して、アプリケーションインスタンス304上で実行されているアプリケーションを第2のエンドポイントデバイス310と共有するのに必要であるか、有用であるか、または助ける1つまたは複数の通知303を決定し、生成する。一例として、着信電話の決定されたアプリケーション状態301に基づいて、通知エンジン306は、コールを受け入れるかまたは断るためのユーザプロンプトを含む通知303を生成する。
【0038】
第1のエンドポイントデバイス302は、生成された通知303を第2のエンドポイントデバイス310に送信するように構成される。第2のエンドポイントデバイス310は、通知303の任意の視覚、オーディオ、または触覚データを1つまたは複数の出力デバイスに出力するように構成される。通知303が第2のエンドポイントデバイス310によって出力される間、第2のエンドポイントデバイス310は、1つまたは複数の入力デバイスを介して、出力された通知303との1つまたは複数のインタラクションを受信するように構成される。すなわち、第2のエンドポイントデバイス310は、1つまたは複数の通知インタラクション305を受信するように構成される。例えば、第2のエンドポイントデバイス310は、出力通知303と相互作用する、1つまたは複数のボタン押下、タッチスクリーン上のジェスチャ、マイクロフォンへのオーディオ入力、マウスクリック、キーストローク、またはそれらの任意の組合せを受信する。第2のエンドポイントデバイス310は、1つまたは複数の受信した通知インタラクション305を表すデータを第1のエンドポイントデバイス302に送信するように構成される。
【0039】
第2のエンドポイントデバイス310から受信された1つまたは複数の受信された通知インタラクション305を表すデータに基づいて、第1のエンドポイントデバイス302の通知エンジン306は、アプリケーション共有が開始されるべきかどうか、すなわち、アプリケーションインスタンス304上で実行されているアプリケーションが第2のエンドポイントデバイス310と共有されるべきかどうかを決定する。例えば、通知エンジン306は、1つまたは複数の受信した通知インタラクション305を表すデータを、1つまたは複数のストリング、ルックアップテーブル、データベース、またはそれらの任意の組合せと比較し、その比較が、アプリケーションインスタンス304上で実行されているアプリケーションが第2のエンドポイントデバイス310と共有されるべきであることを示すかどうかを判定する。アプリケーションインスタンス304上で実行されている1つまたは複数のアプリケーションが第2のエンドポイントデバイス310と共有されるべきであると決定することに応答して、通知エンジン306は、1つまたは複数のアプリケーション制御307を生成する。アプリケーション制御307は、アプリケーションストリームを開始すること、アプリケーションインスタンス304上で実行されているアプリケーションへの入力として通知インタラクション305を提供すること、アプリケーションインスタンス304上で実行されているアプリケーションを無視すること、アプリケーションインスタンス304上で実行されているアプリケーションに入力を提供すること、アプリケーションを起動すること、アプリケーションの少なくとも一部を実行すること、またはそれらの任意の組合せをアプリケーションインスタンス304に指示する1つまたは複数の入力、コマンド、メッセージ、またはそれらの任意の組合せを含む。このようにして、通知エンジン306によって生成された通知303は、エンドポイントデバイス間のアプリケーション共有セッションを開始するために使用される。
【0040】
図4は、例示的なアプリケーション共有動作400を提示する。実施形態では、共有エンドポイントデバイス102と同様または同一の第1のエンドポイントデバイス402が、第1のエンドポイントデバイス402上で実行されている1つまたは複数のアプリケーションを、エンドポイントデバイス110と同様または同一の第2のエンドポイントデバイス410と共有するように構成される。実施形態では、共有動作400は、アプリケーションストリーム401を生成する第1のエンドポイントデバイス402を含む。アプリケーションストリーム401は、第1のエンドポイントデバイス402上で実行される1つまたは複数のアプリケーションに関連する、1つまたは複数のエンコードされたビデオストリーム、エンコードされたオーディオストリーム、制御データストリーム、暗号化されたデータストリーム、またはそれらの任意の組合せを含む。第1のエンドポイントデバイス402は、アプリケーションストリーム401を第2のエンドポイントデバイス410に送信する。
【0041】
第2のエンドポイントデバイス410は、受信したアプリケーションストリーム401の少なくとも一部を出力するように構成された1つまたは複数の出力デバイスを含む。例えば、第2のエンドポイントデバイス410は、アプリケーションストリーム401のエンコードされたビデオストリームを出力するディスプレイと、アプリケーションストリーム401のエンコードされたオーディオストリームを出力するスピーカとを含む。アプリケーションストリーム401が第2のエンドポイントデバイス410によって出力されている間、第2のエンドポイントデバイス410は、1つまたは複数の入力デバイスを介して、アプリケーションストリーム401の出力部分に対するインタラクションを受信する。すなわち、第2のエンドポイントデバイス410は、アプリケーションストリーム401に関連するアプリケーションとの1つまたは複数のインタラクション(例えば、アプリケーションインタラクション403)を受信する。一例として、第2のエンドポイントデバイス410は、出力されるアプリケーションストリーム401のビデオストリームと相互作用するキーボードストロークと、アプリケーションストリーム401のGUIと相互作用するタッチスクリーンジェスチャとを受信する。第2のエンドポイントデバイス410は、1つまたは複数の受信したアプリケーションインタラクション403を表すデータを第1のエンドポイントデバイス402(例えば、アプリケーションストリーム401を送信したエンドポイントデバイス)に送信する。
【0042】
第2のエンドポイントデバイス410からの1つまたは複数の受信されたアプリケーションインタラクション403を表す受信されたデータに基づいて、第1のエンドポイントデバイス402は、第1のエンドポイントデバイス402上で実行されている1つまたは複数のアプリケーションを修正する。第1のエンドポイントデバイス402は、例えば、1つまたは複数の受信したアプリケーションインタラクション403を表すデータを1つまたは複数のアプリケーションに提供すること、アプリケーションを開始すること、アプリケーションを終了すること、アプリケーションの入力を決定すること、またはそれらの任意の組合せによって、アプリケーションを修正する。第1のエンドポイントデバイス402上で実行されている1つまたは複数のアプリケーションを修正することに応答して、修正されたアプリケーションストリーム405が、修正されたアプリケーションに基づいて生成される。修正されたアプリケーションストリーム405は、次いで第2のエンドポイントデバイスに提供される。このようにして、第1のエンドポイントデバイス402上で実行されている1つまたは複数のアプリケーションは、第2のエンドポイントデバイス410上で操作され、部分的に操作され、対話可能であり、または部分的にシミュレートされるように、第1のエンドポイントデバイス402上で実行されている1つまたは複数のアプリケーションが、第2のエンドポイントデバイス410と共有される。
【0043】
次に
図5を参照すると、例示的なアプリケーション共有動作500のフロー図が示されている。ブロック505において、共有エンドポイントデバイス102と同様または同一の第1のエンドポイントデバイスの通知エンジン106と同様または同一の通知エンジンが、例えば、アプリケーションのステータス、アプリケーションによって受信されたデータ、アプリケーションの1つまたは複数の動作の進行状況、またはそれらの任意の組合せを示す、第1のエンドポイントデバイス上で実行されている1つまたは複数のアプリケーションの状態を判定する。ブロック510において、通知エンジンは、通知のための状態が満たされるかどうかを判定する。例えば、通知エンジンは、アプリケーションの決定された状態を、1つまたは複数のストリング、ルックアップテーブル、データベース、またはそれらの任意の組合せと比較し、比較が、通知のための状態が満たされていることを示すかどうかを判定する。通知のための状態が満たされていないことに応答して、システムはブロック505に戻る。通知のための状態が満たされていることに応答して、システムはブロック515に移動する。
【0044】
ブロック515において、通知エンジンは、第1のエンドポイントデバイス上で実行されている1つまたは複数のアプリケーションに関連する1つまたは複数の通知を生成する。一例として、通知エンジンは、アプリケーションの決定された状態と、1つまたは複数のストリング、ルックアップテーブル、データベース、またはそれらの任意の組合せとの比較に基づいて、1つまたは複数の通知を生成する。さらに、通知エンジンは、生成された通知を、エンドポイントデバイス110と同様または同一の第2のエンドポイントデバイスに送信する。ブロック520において、第2のエンドポイントデバイスは、1つまたは複数の出力デバイスを使用して、1つまたは複数の受信した通知を出力する。さらに、ブロック520において、第2のエンドポイントデバイスは、1つまたは複数の入力デバイスを介して、1つまたは複数の出力通知との1つまたは複数の通知インタラクションを受信する。第2のエンドポイントデバイスは、通知インタラクションを表すデータを第1のエンドポイントデバイスに送信する。
【0045】
ブロック525において、第1のエンドポイントデバイスは、受信されたデータにおいて表される1つまたは複数の通知インタラクションがアプリケーション共有の開始を示すかどうかを判定する。例えば、第1のエンドポイントデバイスは、通知インタラクションを表すデータを、1つまたは複数のストリング、ルックアップテーブル、データベース、またはそれらの任意の組合せと比較し、比較が、アプリケーション共有が開始されることを示すかどうかを判定する。アプリケーション共有の開始を示すインタラクションが1つもないことに応答して、システムはブロック505に戻る。アプリケーション共有が開始されることを示す1つまたは複数の通知に応答して、システムはブロック530に移動する。ブロック530において、第1のエンドポイントデバイスは、第1のエンドポイントデバイス上で実行されている1つまたは複数のアプリケーションの少なくとも一部を表すアプリケーションストリームを開始する。その後、アプリケーションストリームは第2のエンドポイントデバイスに提供される。言い換えると、第1のエンドポイントデバイスは、1つまたは複数のアプリケーションを第2のエンドポイントデバイスと共有する。
【0046】
ブロック535において、第2のエンドポイントデバイスは、1つまたは複数の出力デバイスを使用して、受信したアプリケーションストリームの少なくとも一部を出力する。アプリケーションストリームの一部が出力されている間、第2のエンドポイントデバイスは、1つまたは複数の入力デバイスを介して、出力されているアプリケーションストリームの一部との1つまたは複数のアプリケーションインタラクションを受信するように構成される。すなわち、第2のエンドポイントデバイスは、第1のエンドポイントデバイスから共有されたアプリケーションとの1つまたは複数のアプリケーションインタラクションを受信する。次いで、第2のエンドポイントデバイスは、アプリケーションインタラクションを表すデータを第1のエンドポイントデバイスに送信する。ブロック540において、第1のエンドポイントデバイスは、アプリケーションインタラクションに基づいて、第1のエンドポイントデバイス上で実行されている1つまたは複数のアプリケーションを修正する。例えば、第1のエンドポイントデバイスは、1つまたは複数のアプリケーションインタラクションを、1つまたは複数のストリング、ルックアップテーブル、データベース、またはそれらの任意の組合せと比較し、比較から修正を決定する。そのような修正には、例えば、1つまたは複数のアプリケーションインタラクションを表すデータを提供すること、アプリケーションを開始すること、アプリケーションを終了すること、アプリケーションの入力を決定すること、またはそれらの任意の組合せが含まれる。第1のエンドポイントデバイス上で実行されている修正されたアプリケーションから、第1のエンドポイントデバイスは修正されたアプリケーションストリームを生成し、これを第2のエンドポイントデバイスに送信する。
【0047】
コンピュータ可読記憶媒体は、コンピュータシステムに命令および/またはデータを提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、または記憶媒体の組合せを含むことができる。このような記憶媒体としては、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、もしくは磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)もしくはキャッシュ)、不揮発性メモリ(例えば、読み取り専用メモリ(ROM)もしくはフラッシュメモリ)、または微小電気機械システム(MEMS)ベースの記憶媒体を挙げることができるが、これらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれていてもよいし(例えば、システムRAMもしくはROM)、コンピューティングシステムに固定的に取り付けられていてもよいし(例えば、磁気ハードドライブ)、コンピューティングシステムに取り外し可能に取り付けられていてもよいし(例えば、光ディスクもしくはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、または有線もしくは無線ネットワークを介してコンピュータシステムに結合されていてもよい(例えば、ネットワークアクセス可能ストレージ(NAS))。
【0048】
一般的な説明において上述された活動または要素の全てが必須であるわけではなく、特定の活動またはデバイスの一部が必須でない場合もあり、説明されたものに加えて、1つまたは複数の更なる活動が実行されるか、または要素が含まれてもよいことに留意されたい。さらに、活動が列挙されている順序は、必ずしもそれらが実行される順序ではない。また、概念を特定の実施形態を参照して説明してきた。しかしながら、当業者であれば、以下の特許請求の範囲に記載される本開示の範囲から逸脱することなく、様々な修正および変更を行うことができることを理解する。したがって、本明細書および図は、制限的な意味ではなく例示的な意味とみなされるべきであり、そのような修正は全て本開示の範囲内に含まれることが意図される。
【0049】
利益、他の利点、および問題に対する解決策を、特定の実施形態に関して上述してきた。しかしながら、利益、利点、問題に対する解決策、および任意の利益、利点、または解決策を生じさせるか、またはより顕著にさせ得る任意の特徴(複数可)は、任意のまたは全ての請求項の重要な特徴、必須の特徴、または本質的な特徴として解釈されるものではない。さらに、開示された主題は、本明細書の教示の利益を有する当業者に明らかな、異なるが等価な様式で修正および実施され得るので、上記に開示された特定の実施形態は例示に過ぎない。本明細書に示される構造または設計の詳細については、以下の特許請求の範囲に記載される以外の制限は意図されない。したがって、上記に開示された特定の実施形態は、変更または修正が可能であり、そのような全ての変形は、開示された主題の範囲内とみなされることは明らかである。したがって、本明細書で求める保護は、以下の特許請求の範囲に記載するとおりである。
【国際調査報告】