(57)【要約】  第1クライアントデバイスが第2クライアントデバイスのあらかじめ定められた近傍内に位置する場合、第1クライアントデバイスが、第1アプリケーションに関連付けられるアプリケーション情報を第2クライアントデバイスに送信することによって、第2クライアントデバイスへのハンドオフ動作を実行する。第1アプリケーションは、ハンドオフ動作が実行されるときに第1クライアントデバイスユーザインターフェース状態を有する。第1クライアントデバイスまたはシステムからアプリケーション情報を受信するステップに応答して、第2クライアントデバイスまたはシステムは、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態で、第1アプリケーションに対応する第2アプリケーションを実行する。
2014522516.tif 000002
【特許請求の範囲】
【請求項１】
第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムへの、ユーザによるアプリケーションの使用の移行を容易にする方法であって、
それぞれのユーザの制御下の前記第1クライアントデバイスまたはシステムで、
第1アプリケーションを実行するステップと、
前記第1クライアントデバイスまたはシステムが前記第2クライアントデバイスまたはシステムのあらかじめ定められた近傍内に位置する場合、前記第1アプリケーションに関連付けられるアプリケーション情報を前記第2クライアントデバイスまたはシステムに送信するステップを備える、ハンドオフ動作を実行するステップであって、
前記ハンドオフ動作が実行されるときに、前記第1アプリケーションが第1クライアントデバイスユーザインターフェース状態を有する、ステップと、
別のクライアントデバイスまたはシステムから、他のクライアントデバイスまたはシステムによって実行される第2アプリケーションに関連付けられるアプリケーション情報を受信するステップに応答して、前記第1クライアントデバイスまたはシステムで、
前記他のクライアントデバイスまたはシステムのユーザインターフェース状態に対応する最初のユーザインターフェース状態を有する前記第2アプリケーションに対応する第3アプリケーションを実行するステップであって、
前記第2アプリケーションに関連付けられる前記アプリケーション情報を受信するステップに応答して、前記第2アプリケーションに対応する前記第3アプリケーションがフォアグラウンドアプリケーションとして実行しないシステム状態から、前記第2アプリケーションに対応する前記第3アプリケーションが前記フォアグラウンドアプリケーションとして実行するシステム状態に移行するステップを含む、ステップとを備える、方法。
【請求項２】
前記他のクライアントデバイスまたはシステムが前記それぞれのユーザの制御下にある、請求項1に記載の方法。
【請求項３】
前記あらかじめ定められた近傍が4センチメートル以下である、請求項1または2に記載の方法。
【請求項４】
前記第2アプリケーションおよび第3アプリケーションが、同じアプリケーションの2つのインスタンスである、請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記第2アプリケーションおよび第3アプリケーションが、同じアプリケーションタイプの2つの異なるアプリケーションのインスタンスである、請求項1から3のいずれか一項に記載の方法。
【請求項６】
前記第2アプリケーションおよび第3アプリケーションが、両方とも電子メールアプリケーションである、請求項1から3のいずれか一項に記載の方法。
【請求項７】
前記最初のユーザインターフェース状態が特定のメッセージまたは会話スレッドの表示を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記特定のメッセージまたは会話スレッドの表示を備える、請求項6に記載の方法。
【請求項８】
前記最初のユーザインターフェース状態が未送信の下書きメッセージの表示を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記未送信の下書きメッセージの表示を備える、請求項6に記載の方法。
【請求項９】
前記最初のユーザインターフェース状態が、ユーザが指定した検索クエリに対応する会話の第1リストの表示を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記ユーザが指定した検索クエリに対応する会話の第2リストの表示を備える、請求項6に記載の方法。
【請求項１０】
前記第2アプリケーションおよび第3アプリケーションが、両方ともマルチメディアプレーヤである、請求項1から3のいずれか一項に記載の方法。
【請求項１１】
前記最初のユーザインターフェース状態が第1再生位置における第1マルチメディアアイテムの再生を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記第1再生位置に対応する第2再生位置における前記第1マルチメディアアイテムの再生を備える、請求項10に記載の方法。
【請求項１２】
前記第2再生位置が、前記第1再生位置に関するあらかじめ定められたオフセットを有する、請求項11に記載の方法。
【請求項１３】
前記第2アプリケーションおよび第3アプリケーションが、オーディオまたはオーディオ/ビジュアル通信用の通信アプリケーションである、請求項1から3のいずれか一項に記載の方法。
【請求項１４】
前記第1クライアントデバイスまたはシステムの前記最初のユーザインターフェース状態と、前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態の両方が、同じ宛先へのそれぞれの通信接続に対応する、請求項13に記載の方法。
【請求項１５】
前記他のクライアントデバイスまたはシステムが前記第1クライアントデバイスまたはシステムによって物理的に接触されると、前記ハンドオフ動作を実行するステップが行われる、請求項1から14のいずれか一項に記載の方法。
【請求項１６】
前記アプリケーション情報がMIMEタイプおよびアプリケーションコンテンツを備える、請求項1から3のいずれか一項に記載の方法。
【請求項１７】
前記アプリケーションコンテンツが、URL、それぞれのアドレスブックエントリについての連絡先情報、表示されたマップを識別する情報、2つの位置間を移動するための表示されたマップおよび宛先のセットを識別する情報で構成されるグループから選択される、請求項16に記載の方法。
【請求項１８】
前記第2クライアントデバイスまたはシステムで、前記第1クライアントデバイスまたはシステムから前記アプリケーション情報を受信するステップに応答して、前記第2クライアントデバイスまたはシステムが前記MIMEタイプに対応する第4アプリケーションを有していないという決定によって、前記MIMEタイプに対応するそれぞれの第4アプリケーションをダウンロードするためのプロンプトを表示し、ユーザ命令に応答して前記それぞれの第4アプリケーションをダウンロードし、前記第4アプリケーションを実行する、請求項16に記載の方法。
【請求項１９】
近距離通信トランシーバを含む、1つまたは複数の通信インターフェースと、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサによって実行するための1つまたは複数のプログラムを格納するメモリとを備え、前記1つまたは複数のプログラムが、
それぞれのユーザの制御下の前記第1クライアントデバイスまたはシステムで、
第1アプリケーションを実行するステップと、
前記第1クライアントデバイスまたはシステムが第2クライアントデバイスまたはシステムのあらかじめ定められた近傍内に位置する場合、前記第1アプリケーションに関連付けられるアプリケーション情報を前記第2クライアントデバイスまたはシステムに送信するステップを備える、ハンドオフ動作を実行するステップであって、前記ハンドオフ動作が実行されるときに、前記第1アプリケーションが第1クライアントデバイスユーザインターフェース状態を有する、ステップと、
別のクライアントデバイスまたはシステムから、前記他のクライアントデバイスまたはシステムによって実行される第2アプリケーションに関連付けられるアプリケーション情報を受信するステップに応答して、前記第1クライアントデバイスまたはシステムで、
前記他のクライアントデバイスまたはシステムのユーザインターフェース状態に対応する最初のユーザインターフェース状態を有する前記第2アプリケーションに対応する第3アプリケーションを実行するステップであって、
前記第2アプリケーションに関連付けられる前記アプリケーション情報を受信するステップに応答して、前記第2アプリケーションに対応する前記第3アプリケーションがフォアグラウンドアプリケーションとして実行しないシステム状態から、前記第2アプリケーションに対応する前記第3アプリケーションが前記フォアグラウンドアプリケーションとして実行するシステム状態に移行するステップを含む、ステップとを行うための命令を備える、第1クライアントデバイスまたはシステム。
【請求項２０】
前記他のクライアントデバイスまたはシステムが前記それぞれのユーザの制御下にある、請求項19に記載の第1クライアントデバイスまたはシステム。
【請求項２１】
前記あらかじめ定められた近傍が4センチメートル以下である、請求項19または20に記載の第1クライアントデバイスまたはシステム。
【請求項２２】
前記第2アプリケーションおよび第3アプリケーションが、同じアプリケーションの2つのインスタンスである、請求項19から21のいずれか一項に記載の第1クライアントデバイスまたはシステム。
【請求項２３】
前記第2アプリケーションおよび第3アプリケーションが、同じアプリケーションタイプの2つの異なるアプリケーションのインスタンスである、請求項19から21のいずれか一項に記載の第1クライアントデバイスまたはシステム。
【請求項２４】
前記第2アプリケーションおよび第3アプリケーションが、両方とも電子メールアプリケーションである、請求項19から21のいずれか一項に記載の第1クライアントデバイスまたはシステム。
【請求項２５】
前記最初のユーザインターフェース状態が特定のメッセージまたは会話スレッドの表示を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記特定のメッセージまたは会話スレッドの表示を備える、請求項24に記載の第1クライアントデバイスまたはシステム。
【請求項２６】
前記最初のユーザインターフェース状態が未送信の下書きメッセージの表示を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記未送信の下書きメッセージの表示を備える、請求項24に記載の第1クライアントデバイスまたはシステム。
【請求項２７】
前記最初のユーザインターフェース状態が、ユーザが指定した検索クエリに対応する会話の第1リストの表示を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記ユーザが指定した検索クエリに対応する会話の第2リストの表示を備える、請求項24に記載の第1クライアントデバイスまたはシステム。
【請求項２８】
前記第2アプリケーションおよび第3アプリケーションが、両方ともマルチメディアプレーヤである、請求項19から21のいずれか一項に記載の第1クライアントデバイスまたはシステム。
【請求項２９】
前記最初のユーザインターフェース状態が第1再生位置における第1マルチメディアアイテムの再生を備え、前記最初のユーザインターフェース状態に対応する前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態が、前記第1再生位置に対応する第2再生位置における前記第1マルチメディアアイテムの再生を備える、請求項28に記載の第1クライアントデバイスまたはシステム。
【請求項３０】
前記第2再生位置が、前記第1再生位置に関するあらかじめ定められたオフセットを有する、請求項29に記載の第1クライアントデバイスまたはシステム。
【請求項３１】
前記第2アプリケーションおよび第3アプリケーションが、オーディオまたはオーディオ/ビジュアル通信用の通信アプリケーションである、請求項19から21のいずれか一項に記載の第1クライアントデバイスまたはシステム。
【請求項３２】
前記第1クライアントデバイスまたはシステムの前記最初のユーザインターフェース状態と、前記他のクライアントデバイスまたはシステムの前記ユーザインターフェース状態の両方が、同じ宛先へのそれぞれの通信接続に対応する、請求項31に記載の第1クライアントデバイスまたはシステム。
【請求項３３】
前記他のクライアントデバイスまたはシステムが前記第1クライアントデバイスまたはシステムによって物理的に接触されると、前記ハンドオフ動作を実行するステップが行われる、請求項19から32のいずれか一項に記載の第1クライアントデバイスまたはシステム。
【請求項３４】
前記アプリケーション情報がMIMEタイプおよびアプリケーションコンテンツを備える、請求項19から21のいずれか一項に記載の第1クライアントデバイスまたはシステム。
【請求項３５】
前記アプリケーションコンテンツが、URL、それぞれのアドレスブックエントリについての連絡先情報、表示されたマップを識別する情報、2つの位置間を移動するための表示されたマップおよび宛先のセットを識別する情報で構成されるグループから選択される、請求項34に記載の第1クライアントデバイスまたはシステム。
【請求項３６】
前記第2クライアントデバイスまたはシステムで、前記第1クライアントデバイスまたはシステムから前記アプリケーション情報を受信するステップに応答して、前記第2クライアントデバイスまたはシステムが前記MIMEタイプに対応する第4アプリケーションを有していないという決定によって、前記MIMEタイプに対応するそれぞれの第4アプリケーションをダウンロードするためのプロンプトを表示し、ユーザ命令に応答して前記それぞれの第4アプリケーションをダウンロードし、前記第4アプリケーションを実行する、請求項34に記載の第1クライアントデバイスまたはシステム。
【請求項３７】
第1クライアントデバイスまたはシステムの1つまたは複数のプロセッサによって実行するための1つまたは複数のプログラムを格納する非一時的コンピュータ可読記憶媒体であって、前記1つまたは複数のプログラムが、
第1アプリケーションを実行するステップと、
前記第1クライアントデバイスまたはシステムが第2クライアントデバイスまたはシステムのあらかじめ定められた近傍内に位置する場合、前記第1アプリケーションに関連付けられるアプリケーション情報を前記第2クライアントデバイスまたはシステムに送信するステップを備えるハンドオフ動作を実行するステップであって、前記ハンドオフ動作が実行されるときに、前記第1アプリケーションが第1クライアントデバイスユーザインターフェース状態を有する、ステップと、
別のクライアントデバイスまたはシステムから、前記他のクライアントデバイスまたはシステムによって実行される第2アプリケーションに関連付けられるアプリケーション情報を受信するステップに応答して、
前記他のクライアントデバイスまたはシステムのユーザインターフェース状態に対応する最初のユーザインターフェース状態を有する前記第2アプリケーションに対応する第3アプリケーションを実行するステップであって、
前記第2アプリケーションに関連付けられる前記アプリケーション情報を受信するステップに応答して、前記第2アプリケーションに対応する前記第3アプリケーションがフォアグラウンドアプリケーションとして実行しないシステム状態から、前記第2アプリケーションに対応する前記第3アプリケーションが前記フォアグラウンドアプリケーションとして実行するシステム状態に移行するステップを含む、ステップとを行うための命令を備える、非一時的コンピュータ可読記憶媒体。
【請求項３８】
前記1つまたは複数のプログラムが、請求項2〜16のいずれか一項に記載の方法を実行させる命令をさらに備える、請求項37に記載の非一時的コンピュータ可読記憶媒体。
【請求項３９】
第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムへの、ユーザによるアプリケーションの使用の移行を容易にする方法であって、
それぞれのユーザの制御下の前記第1クライアントデバイスまたはシステムで、
第1アプリケーションを実行するステップと、
前記第1クライアントデバイスまたはシステムが前記第2クライアントデバイスまたはシステムのあらかじめ定められた近傍内に位置する場合、前記第1アプリケーションに関連付けられるアプリケーション情報を前記第2クライアントデバイスまたはシステムに送信するステップを備える、ハンドオフ動作を実行するステップであって、
前記ハンドオフ動作が実行されるときに、前記第1アプリケーションが第1クライアントデバイスユーザインターフェース状態を有する、ステップと、
前記第1クライアントデバイスまたはシステムから前記アプリケーション情報を受信するステップに応答して、前記第2クライアントデバイスまたはシステムで、
前記第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態を有する前記第1アプリケーションに対応する第2アプリケーションを実行するステップであって、
前記第1アプリケーションに関連付けられる前記アプリケーション情報を受信するステップに応答して、前記第1アプリケーションに対応する前記第2アプリケーションがフォアグラウンドアプリケーションとして実行しないシステム状態から、前記第1アプリケーションに対応する前記第2アプリケーションが前記フォアグラウンドアプリケーションとして実行するシステム状態に移行するステップを含む、ステップとを備える、方法。
【請求項４０】
前記第2クライアントデバイスまたはシステムが前記それぞれのユーザの制御下にある、請求項39に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施形態は、一般に、無線通信に関し、より詳細には、無線通信接続を通じて2つのデバイス間で1つまたは複数のアプリケーションの使用を移行することに関する。
【背景技術】
【０００２】
1つまたは複数のスマートフォン、タブレット、ラップトップコンピュータ、または同等物などの複数のデバイスを有するユーザは、同じアプリケーションまたはコンテンツでの作業、またはそこへのアクセスを継続しながら、あるデバイスから別のデバイスへと使用を切り替えたい場合がある。たとえばユーザは、所与のタスクに最も適したデバイスを使用するために、あるデバイスから別のデバイスに移行したい場合がある。たとえば、スマートフォンから電子メールを読むのは容易であるが、電話のキーボードの大きさが限られているため、返信するのは困難である。ユーザは電話でメッセージの下書きを開始するが、キーボードがより大きいタブレットを使用して下書きを完了させることをより好む場合がある。他の例では、ユーザはタブレットまたはスマートフォンを使用してビデオの再生を開始するが、テレビまたはラップトップコンピュータなどのスクリーンがより大きいデバイスでビデオの視聴を続けることをより好む場合がある。他の例では、ユーザは固定電話を使用して通話を開始するが、セルラー接続を使用するモバイル電話を使用して通話を続けたい場合があり、またその逆の場合もある。
【発明の概要】
【課題を解決するための手段】
【０００３】
いくつかの実施形態では、分散システムは、それぞれのユーザの制御下の第1クライアントデバイスまたはシステムと、第1クライアントデバイスまたはシステムが第1アプリケーションを実行するステップを含む方法を実行する第2クライアントデバイスまたはシステムとを備える。本方法は、第1クライアントデバイスまたはシステムが第2クライアントデバイスまたはシステムのあらかじめ定められた近傍内に位置する場合、第1アプリケーションに関連付けられるアプリケーション情報を第2クライアントデバイスまたはシステムに送信するステップを備えるハンドオフ動作を実行する第1クライアントデバイスまたはシステムをさらに含む。第1アプリケーションは、ハンドオフ動作が実行されるときに第1クライアントデバイスユーザインターフェース状態を有する。第1クライアントデバイスまたはシステムからアプリケーション情報を受信するステップに応答して、第2クライアントデバイスまたはシステムは、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態で、第1アプリケーションに対応する第2アプリケーションを実行する。
【０００４】
いくつかの実施形態では、分散システムは、それぞれのユーザの制御下の第1クライアントデバイスまたはシステムと、第1クライアントデバイスまたはシステムが第1アプリケーションを実行するステップを含む方法を実行する第2クライアントデバイスまたはシステムとを備える。本方法は、第1クライアントデバイスまたはシステムが第2クライアントデバイスまたはシステムのあらかじめ定められた近傍内に位置する場合、第1アプリケーションに関連付けられるアプリケーション情報を第2クライアントデバイスまたはシステムに送信するステップを備えるハンドオフ動作を実行する第1クライアントデバイスまたはシステムをさらに含む。第1アプリケーションは、ハンドオフ動作が実行されるときに第1クライアントデバイスユーザインターフェース状態を有する。さらに、第1クライアントデバイスまたはシステムは、別のクライアントデバイスまたはシステムから、第3アプリケーションに関連付けられるアプリケーション情報を受信して、それに応答して、他のクライアントデバイスまたはシステムのユーザインターフェース状態に対応する最初のユーザインターフェース状態で、第3アプリケーションに対応する第2アプリケーションを実行する。
【０００５】
いくつかの実施形態では、非一時的コンピュータ可読記憶媒体が、クライアントデバイスまたはシステムの1つまたは複数のプロセッサによって実行するための1つまたは複数のプログラムを格納し、1つまたは複数のプログラムは、1つまたは複数のプロセッサによって実行されると、クライアントデバイスまたはシステムに上述の方法を実行させる命令を備える。
【０００６】
さらに、いくつかの実施形態では、複数のクライアントデバイスが、同じ1つまたは複数のプログラム、あるいは動作上同等のプログラムを格納し、複数のクライアントデバイスはそれぞれのハンドオフ動作においてアプリケーション情報を送信するか、アプリケーション情報を受信するように構成される。
【０００７】
開示される実施形態をよりよく理解するために、添付の図面と併せて、以下の発明を実施するための形態を参照するべきである。図面を通じて、同様の参照数字は対応する部分を指す。
【図面の簡単な説明】
【０００８】
【図１】一実施形態による、デバイス間でアプリケーション状態を転送できるようにするためのシステムのブロック図である。
【図２】いくつかの実施形態による、クライアントデバイスまたはシステムを示すブロック図である。
【図３Ａ】いくつかの実施形態による、それぞれのアプリケーションのアプリケーション状態を別のクライアントデバイスまたはシステムに送信するための、クライアントデバイスまたはシステムの動作方法を示す流れ図を含む図である。
【図３Ｂ】いくつかの実施形態による、それぞれのアプリケーションのアプリケーション状態を別のクライアントデバイスまたはシステムに送信するための、クライアントデバイスまたはシステムの動作方法を示す流れ図を含む図である。
【図３Ｃ】いくつかの実施形態による、それぞれのアプリケーションのアプリケーション状態を別のクライアントデバイスまたはシステムに送信するための、クライアントデバイスまたはシステムの動作方法を示す流れ図を含む図である。
【図４Ａ】いくつかの実施形態による、第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムへの、ユーザによるアプリケーションの使用の移行を容易にする方法を示す流れ図を含む図である。
【図４Ｂ】いくつかの実施形態による、第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムへの、ユーザによるアプリケーションの使用の移行を容易にする方法を示す流れ図を含む図である。
【図４Ｃ】いくつかの実施形態による、第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムへの、ユーザによるアプリケーションの使用の移行を容易にする方法を示す流れ図を含む図である。
【図５Ａ】いくつかの実施形態による、複数のアクティブに実行しているアプリケーションのアプリケーション状態を、第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムに送信する方法を示す流れ図を含む図である。
【図５Ｂ】いくつかの実施形態による、複数のアクティブに実行しているアプリケーションのアプリケーション状態を、第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムに送信する方法を示す流れ図を含む図である。
【図５Ｃ】いくつかの実施形態による、複数のアクティブに実行しているアプリケーションのアプリケーション状態を、第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムに送信する方法を示す流れ図を含む図である。
【図６】いくつかの実施形態による、アクティブに実行しているアプリケーションのアプリケーション状態を、第1クライアントデバイスまたはシステムから第2クライアントデバイスまたはシステムに送信する方法を示す流れ図を含む図である。
【発明を実施するための形態】
【０００９】
本明細書において「第1」、「第2」などの用語は様々な要素を記述するために使用されうるが、これらの要素はこれらの用語によって限定されるべきではないことが理解されよう。これらの用語は、ある要素と他の要素とを区別するために使用されるに過ぎない。たとえば、「第1アプリケーション」の全ての出現が一貫して名称変更され、「第2アプリケーション」の全ての出現が一貫して名称変更される限り、記述の意味を変更することなしに、第1アプリケーションが第2アプリケーションと呼ばれてもよく、同様に第2アプリケーションが第1アプリケーションと呼ばれてもよい。第1アプリケーションおよび第2アプリケーションは両方ともアプリケーションであるが、それらは同じアプリケーションではない。
【００１０】
本明細書で使用される用語は特定の実施形態を記述するためのものに過ぎず、特許請求の範囲を制限することを意図するものではない。実施形態および添付の特許請求の範囲の記述において使用されるように、単数形「a」、「an」、および「the」は、文脈に明確に示されない限り複数形も含むことを意図する。本明細書で使用される「および/または」という用語は、関連付けられるリスト項目のうちの1つまたは複数の、任意の、かつ全ての潜在的な組合せを指し、また包含することも理解されよう。「備える(comprises)」および/または「備えている(comprising)」という用語が本明細書で使用される場合、記述された特徴、整数、ステップ、動作、要素、および/またはコンポーネントの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、および/またはそれらのグループの存在または追加を除外するものではないことがさらに理解されよう。
【００１１】
本明細書で使用されるように、「〜すると(if)」という用語は、文脈に応じて、先行する記述された条件が真である「場合(when)」、または「〜すると(upon)」、「と決定することに応答して(in response to determining)」、「と決定することによって(in accordance with a determination)」、または「と検知することに応答して(in response to detecting)」を意味すると考えられうる。同様に、「(先行する記述された条件が真である)と決定されると(if it is determined [that a stated condition precedent is true])」、「(先行する記述された条件が真である)と(if [a stated condition precedent is true])」、または「(先行する記述された条件が真である)場合(when [a stated condition precedent is true])」という語句は、文脈に応じて、先行する記述された条件が真である「と決定をすると(upon determining)」、「と決定することに応答して(in response to determining)」、「と決定することによって(in accordance with a determination)」、「と検知すると(upon detecting)」、または「と検知することに応答して(in response to detecting)」を意味すると考えられうる。
【００１２】
次に、様々な実施形態を詳細に参照する。様々な実施形態の例は添付の図面に示されている。以下の詳細な説明では、記述される実施形態の完全な理解を提供するために、多数の特定の詳細を説明する。しかし、いくつかの実施形態はこれらの特定の詳細なしに実施されうる。他の例では、良く知られた方法、手順、コンポーネント、および回路は、実施形態の態様を不要に曖昧にしないために詳細に記述されない。
【００１３】
図1は、複数のクライアントデバイスまたはシステム102(以下では、クライアント102と呼ばれる)を有する分散システム100を示すブロック図である。分散システム100は、典型的に、1つまたは複数の通信ネットワーク120、ならびに1つまたは複数のメッセージングサーバ130および1つまたは複数のマルチメディアサーバ140などの、複数のアプリケーションサーバまたはサーバシステムをさらに含む。
【００１４】
いくつかの実施形態では、それぞれのクライアント102-1および102-2は、近距離通信(NFC)を処理するためのNFCモジュール104、ネットワーク通信を処理するためのネットワークモジュール106、以下でより詳細に記述されるアプリケーション転送モジュール108、ならびに1つまたは複数のアプリケーションプログラム110、112、114を有する。NFCモジュール104-1および104-2によって、NFC対応デバイス間のNFC通信が可能になる。いくつかの実施形態では、クライアント102上のアプリケーションは、1つまたは複数のメッセージングアプリケーション110、1つまたは複数のマルチメディアアプリケーション112、および任意で他のアプリケーション114も含む。以下でより詳細に記述されるように、いくつかの実装形態では、ユーザが2つのクライアント102を近傍(たとえば、典型的に相互から10センチメートル以内を意味するが、任意で5センチメートルまたは4センチメートル以内を意味する、相互のNFC通信距離内)に持ってくると、クライアントのうちの1つ(たとえば、クライアント102-1)の1つまたは複数のアプリケーションのアプリケーション状態(たとえば、アクティブまたはフォアグラウンドアプリケーション)が他のクライアント(たとえば、クライアント102-2)に転送される。
【００１５】
メッセージングサーバ130は、1つまたは複数のメッセージングサーバアプリケーション131、サーバ130によってサポートされるメッセージングサービスの複数のユーザについてのメッセージングアカウント情報135を格納するメッセージングデータベース133、および任意で他のデータベース137も含む。たとえば、メッセージングサーバ130は、Gメールサーバ、Gメールサーバ以外の電子メールサーバ、またはインスタントメッセージングサーバでもよい。マルチメディアサーバ140は、1つまたは複数のマルチメディアサーバアプリケーション141、マルチメディアアカウント情報145を含む1つまたは複数のマルチメディアデータベース143、および任意で他のデータベース147も含む。マルチメディアサーバ140の例には、YouTube（登録商標）サーバ、オンライン無線サーバ、およびソーシャルゲームサーバがある。
【００１６】
いくつかの実装形態では、自分のモバイル携帯電話(クライアント102-1)でクライアントサイドメッセージングアプリケーション110-1(たとえば、Gメール)を使用して電子メールメッセージを読んでいるユーザは、キーボードがより大きくディスプレイスクリーンもより大きい、近くのデスクトップコンピュータ(クライアント102-2)で、代わりにメッセージに返信したい場合がある。これを行うために、ユーザは自分のモバイル携帯電話102-1をコンピュータ102-2の近傍に持ってくる。両方のクライアント102はNFCモジュール104を備えている。クライアント102-1内のNFCモジュール104-1がコンピュータ104-2の存在を検知して、モバイル電話102-1とコンピュータ102-2との間にNFC通信接続が確立される。この例では、メッセージングアプリケーション110-1の現在の状態は、ユーザのアカウント識別子(たとえば、username@domainname.com)を備え、NFC接続を介してコンピュータ102-2にメッセージ識別子が送信される。任意で、クライアント102-1内のメッセージングアプリケーション110-1も、通信ネットワーク120を介してメッセージングサーバ130と通信して、サーバ130が、クライアント102-1によって現在表示されているメッセージに関する最近の状態を有することを保証する。コンピュータ102-2が、電話102-1からメッセージングアプリケーション110-1の現在の状態を受信して、それに応答して、コンピュータ102-2内のメッセージングアプリケーション110-2が、通信ネットワーク120を介してメッセージングサーバ130から電子メールメッセージのコピーをダウンロードする。ユーザの観点から見ると、コンピュータ102-2のディスプレイの前に座るとすぐに、電話102-1で読んでいたのと同じ電子メールメッセージがコンピュータ102-2のディスプレイスクリーンに表示され、コンピュータ102-2のキーボードを使用して返信のタイプ入力を開始できる。
【００１７】
図2は、いくつかの実施形態による、クライアントデバイスまたはシステム(クライアント)102を示すブロック図である。クライアント102は、典型的に、1つまたは複数のプロセッサ202(処理装置、またはCPUとも呼ばれる)、メモリ204、近距離通信(NFC)トランシーバ(送信機および受信機)206、1つまたは複数のネットワークまたは他の通信インターフェース208、ユーザインターフェース205(典型的に、ディスプレイデバイス、およびキーボード、マウス、タッチパッド、タッチスクリーン、または他の入力デバイスを備える)、およびこれらのコンポーネントと相互接続するための1つまたは複数の通信バス209を含む。任意で、通信バス209は、システムコンポーネント間の通信を相互接続して制御する回路(チップセットと呼ばれることもある)を含む。メモリ204は、典型的に、DRAM、SRAM、DDR RAMなどの高速ランダムアクセスメモリ、または他のランダムアクセスソリッドステートメモリデバイスを含み、任意で、1つまたは複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリデバイスなどの不揮発性メモリ、または他の不揮発性ソリッドステート記憶装置を含む。メモリ204は、任意で、CPU202から遠隔に配置された1つまたは複数の記憶装置を含む。メモリ204、あるいはメモリ203内の不揮発性メモリデバイスは、非一時的コンピュータ可読記憶媒体を備える。いくつかの実施形態では、メモリ204、あるいは非一時的コンピュータ可読記憶媒体は、1つまたは複数のプロセッサ202およびデータ構造、またはそれらのサブセットによって実行される以下のプログラムおよび/またはモジュールを格納する:
・様々な基本システムサービスを処理するため、およびハードウェア依存タスクを実行するための手順を含む、オペレーティングシステム210;
・1つまたは複数のネットワークインターフェース208(有線または無線)、およびインターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの1つまたは複数の通信ネットワーク120(図1)を介して、クライアント102を他のコンピュータ(たとえば、メッセージングサーバ130またはマルチメディアサーバ140)に接続するために使用される、ネットワーク通信モジュール(または命令)106;
・近距離通信を使用して、NFCトランシーバ206を介して、クライアント102を他のクライアント、デバイス、またはシステムに接続するための近距離通信モジュール104;
・アプリケーション状態を他のクライアントデバイスまたはシステムと共有するために登録された1つまたは複数のアプリケーションについてのアプリケーション登録情報214を維持する、アプリケーション登録モジュール212。たとえば、アプリケーション登録情報214は、トリガ条件が検知されると、アプリケーション状態を別のデバイス(たとえば、クライアント102-2)と共有するために登録されたメッセージングアプリケーション110についての情報を含みうる;
・トリガ条件が検知されると、1つまたは複数のアプリケーション(たとえば、アプリケーション状態を共有するためにアプリケーション登録モジュール212に登録されたアプリケーション)のアプリケーション状態を別のデバイス(たとえば、クライアント102-2)に転送するためのアプリケーション転送モジュール108;
・メッセージングアプリケーション110、ブラウザまたはマルチメディアアプリケーション112、および任意で1つまたは複数の他のアプリケーション114などの、1つまたは複数のアプリケーション110、112、114。
【００１８】
いくつかの実装形態では、近距離通信モジュール104は、NFC検知モジュール220およびNFC通信モジュール222を含む。NFC検知モジュール220は、あらかじめ定められた近傍内の別のNFC対応デバイスまたはシステムの存在を検知して、あらかじめ定められた近傍内の別のNFC対応デバイスまたはシステムの存在を検知するとクライアント102に通知する。あらかじめ定められた近傍は、典型的に、2つのデバイス間のNFC通信チャネル(NFC接続とも呼ばれる)をうまく確立するために、またはNFC通信をうまく行うために必要な近傍である。環境条件は、NFC接続を形成する機能に影響を与えることがあるが、あらかじめ定められた近傍は、典型的に10センチメートル以下であり、いくつかの実装形態では、2つのデバイスが相互に5センチメートルか4センチメートル以内にあることを必要とする。NFC通信モジュール222は、NFCトランシーバ206を介して、1つまたは複数のアプリケーションについてのアプリケーション状態、またはアプリケーション状態情報の送受信などの、クライアント102と他のデバイスとの間の通信を処理する。
【００１９】
いくつかの実装形態では、アプリケーション登録情報214は、登録されたアプリケーションごとに、アプリケーションプログラム識別子、MIMEタイプ、およびアプリケーション転送モジュールが登録されたアプリケーションのアプリケーション状態を取得できるようにする情報(たとえば、手順名、APIへの参照、または同等物)のうちの1つまたは複数を含む。任意で、アプリケーション登録情報214は、検索可能データベース、テーブル、またはリストとしてクライアント102によって維持される。
【００２０】
いくつかの実装形態では、それぞれのアプリケーションプログラムは、実行する間の自身のアプリケーション状態情報を格納し、したがってアプリケーション状態は時々更新される。実行しているアプリケーションのタイプに応じて、アプリケーション状態の情報タイプおよびサイズ(たとえば、アプリケーション状態を格納するために必要なメモリの量)はアプリケーションごとに異なる場合があり、ローカルに格納されてもよく(すなわち、クライアント102に)、遠隔に配置されたサーバなどに遠隔に格納されてもよい。
【００２１】
いくつかの実施形態では、メッセージングアプリケーション110は、メッセージングアプリケーション状態情報224、ならびにユーザ識別子またはアカウント名226をローカルに格納する。ユーザ識別子またはアカウント名226は、メッセージングアプリケーション110によってメッセージまたは他の情報が表示されているユーザまたはアカウントを示す。メッセージングアプリケーション110の現在のアプリケーションコンテキストに応じて、メッセージングアプリケーション状態情報224は、ユーザによって現在閲覧されている、または作業されているメッセージの識別子およびメッセージのフォーマット、クライアント102によって現在表示されているメッセージのリストを識別する情報、クライアント102によって現在表示されている会話(メッセージスレッドと呼ばれることもある)のリストを識別する情報、クライアントによって連絡先情報が現在表示されている連絡先を識別する情報のうちの少なくとも1つを含む。メッセージングアプリケーション状態情報248は、クライアント102でローカルに保存されてもよく、メッセージングサーバ上で遠隔に保存されてもよい。
【００２２】
いくつかの実施形態では、ブラウザまたはマルチメディアアプリケーション112は、ブラウザアプリケーション状態情報228をローカルに格納する。いくつかの実装形態では、ブラウザアプリケーション状態情報228は現在閲覧されている文書のURLであるか、それを含み、クライアント102でローカルに保存される。任意で、ブラウザアプリケーション状態情報228は、文書位置、再生位置、ユーザが入力したコンテンツ、または表示された文書への修正等のうちの1つまたは複数などの追加情報であるか、それを含む。
【００２３】
任意で、他のアプリケーション114がもしあれば、アプリケーションのタイプに応じて様々なタイプのアプリケーション状態情報230を格納する。
【００２４】
それぞれの上記で識別されたモジュール、アプリケーション、またはプログラムは、上述の機能を実行するための、クライアント102の1つまたは複数のプロセッサによって実行可能な命令のセットに対応する。上記で識別されたモジュール、アプリケーション、またはプログラム(すなわち命令のセット)は、別々のソフトウェアプログラム、手順、またはモジュールとして実装される必要はなく、したがってさまざまな実施形態においてこれらのモジュールの様々なサブセットが結合されてもよく、再構成されてもよい。いくつかの実施形態では、メモリ203は、上記で識別されたモジュールのサブセットおよびデータ構造を任意で格納する。さらに、メモリ203は、上述していないさらなるモジュールおよびデータ構造を格納しうる。
【００２５】
図3A〜3Cは、いくつかの実施形態による、クライアントデバイスまたはシステム(参照を容易にするために、以下ではクライアントと呼ぶ)の動作方法300を示す流れ図を含む。方法300は、図1および図2を参照して上述した、クライアント102-1などの第1クライアントによって実行される。アプリケーション状態(たとえば、メッセージングアプリケーション状態224、またはブラウザアプリケーション状態228)を他のデバイスと共有するためにそれぞれのアプリケーションが登録されていることを示しているそれぞれのアプリケーション(たとえば、メッセージングアプリケーション110、ブラウザ/マルチメディアアプリケーション112)についての登録情報(たとえば、図2の214)がメモリ内に保持される(302)。それぞれのアプリケーションのアプリケーション状態は、クライアント102のメモリ、またはクライアントから遠隔に位置するサーバのメモリに格納される(304)。それぞれのアプリケーションを実行する間、アプリケーション状態は動的に更新されて、必要に応じてメモリに格納される。
【００２６】
それぞれのアプリケーションのアプリケーション状態を別のデバイスクライアントに(たとえば、図1の第1クライアント102-1から第2クライアント102-2に)転送するための転送トリガ条件が検知される(306)。トリガ条件は、第1クライアント102-1のあらかじめ定められた近傍内に別のデバイス(たとえば、第2クライアント102-2)が存在することである(308)。これは、本明細書では「ゼロクリック」共有のための「ゼロクリック」トリガ条件と呼ばれることがある。上述のように、あらかじめ定められた近傍は、典型的に、2つのデバイス間のNFC通信チャネル(NFC接続とも呼ばれる)をうまく確立するために、またはNFC通信をうまく行うために必要な近傍である。様々な実装形態では、あらかじめ定められた近傍は10センチメートル、5センチメートル、または4センチメートル以下である。いくつかの実装形態では、別のデバイスのNFCフィールドを検知することに加えて、2つのクライアントデバイスが物理的に接触することを含む「衝突」が検知されなければならない(たとえば、クライアント102-1内の1つまたは複数の加速度計を使用して)。いくつかの実装形態では、ユーザは2つのデバイスをあらかじめ定められた近傍内に持ってくること以外にどのような行動もとる必要はなく、したがってこれは「ゼロクリック」共有と呼ばれることがある。
【００２７】
いくつかの実装形態では、トリガ条件は、第1クライアント102-1と第2クライアント102-2との間の近距離通信接続をうまく確立するステップをさらに含む(310)。任意で、第1クライアント102-1は、第2クライアント102-2との近距離通信接続をうまく確立するために、ユーザ認証情報を送信する必要がある場合がある。
【００２８】
トリガ条件を検知すると、クライアント102-1は、格納された登録情報(図2の214)によって、それぞれのアプリケーション(たとえば、クライアント102-1のフォアグラウンドで実行しているアプリケーション)が、アプリケーション状態共有のために登録されていることを決定して(312)、それぞれのアプリケーションのアプリケーション状態を第2クライアント102-2に送信する(314)。方法300の説明を容易にするために、アプリケーション状態が別のデバイスに送信されるアプリケーションだけがフォアグラウンドアプリケーションであると仮定され、もしあれば、フォアグラウンドアプリケーションは、第1クライアント102-1の最上位またはフォアグラウンドアプリケーションウインドウで実行しているアプリケーションである。しかし、いくつかの実装形態では、以下で図5A〜5Cを参照してより詳細に記述するように、複数のアプリケーションについてのアプリケーション状態は、第1クライアント102-1によって第2クライアント102-2に送信される。
【００２９】
任意で、送信が完了すると、それぞれのアプリケーション(クライアント102-1の)は、アプリケーション状態がクライアント102-2に送信されたことを通知される(316)。いくつかの実装形態では、クライアント102-1は、通知に応答して(たとえば、アプリケーション状態の送信の最後に)それぞれのアプリケーションのアプリケーション状態を任意で変更できる(318)。たとえば、それぞれのアプリケーションがブラウザアプリケーションの場合、アプリケーション状態が送信されたという通知を受信した後にブラウザアプリケーションを終了できる。他の例では、それぞれのアプリケーションが電子メールアプリケーションの場合、アプリケーション状態が別のクライアントに送信されたという通知を受信した後に、ユーザはクライアント102-2で電子メールアプリケーションの使用を再開すると仮定されるので、下書きメッセージまたは閲覧されているメッセージが閉じられる。他の例では、それぞれのアプリケーションがマルチメディアプレーヤの場合、マルチメディアプレーヤ状態が送信されて、その通知がマルチメディアプレーヤに提供された後に、第1クライアント102-1によるビデオ/オーディオの再生が停止される。
【００３０】
いくつかの実装形態では、それぞれのアプリケーションはフォアグラウンドアプリケーションであり、クライアント102-1のフォアグラウンドアプリケーションウインドウで実行している(図3Bの322、図3Cの332)。典型的に、モバイル電話またはタブレットコンピュータなどのクライアントデバイス内にあるフォアグラウンドアプリケーションは1つだけである。いくつかの実装形態では、それぞれのアプリケーションのアプリケーション状態は、1つまたは複数の未送信の下書きメッセージ、進行中の通話についての状態情報、ビデオコンテンツの再生位置、オーディオコンテンツの再生位置、メッセージアカウント識別子、未送信の下書きメッセージのメッセージ識別子、現在閲覧されているメッセージのメッセージ識別子、それぞれのアプリケーションに関連付けられるMIMEタイプで構成されるグループのうちの少なくとも1つを含む(324)。再生位置は、典型的に、タイムスタンプおよび/またはフレーム番号である。メッセージ識別子は未送信の下書きメッセージのメッセージ識別子でもよく、クライアント102-1のフォアグラウンドで現在閲覧されているメッセージのメッセージ識別子でもよい。いくつかの実装形態では、それぞれのアプリケーションからのアプリケーション状態のコピーが要求される(334)(たとえば、アプリケーション転送モジュール108が、それぞれのアプリケーションにアプリケーション状態を要求して、次いで、そのアプリケーション状態を第2クライアントに転送する)。
【００３１】
任意で、それぞれのアプリケーションのアプリケーション状態が遠隔に格納されると(たとえば、オンラインアプリケーションについて)、それぞれのアプリケーションからのアプリケーション状態のコピーがそれぞれのサーバから要求されて、第1クライアント102-1にダウンロードされ、次いで第1クライアント102-1が第2クライアント102-2に転送する。あるいは、それぞれのアプリケーションのアプリケーション状態が遠隔に格納されると(たとえば、オンラインアプリケーションについて)、それぞれのアプリケーションからのアプリケーション状態のコピーがそれぞれのサーバから第2クライアント102-2によって要求されて、第2クライアント102-2に直接ダウンロードされる。
【００３２】
いくつかの実施形態では、近距離通信を使用して、アプリケーション状態の少なくとも一部が第2クライアント102-2に送信される(336)。さらに、いくつかの実装形態では、ブルートゥース通信またはWi-Fi通信などの、近距離通信以外の無線通信を使用して、アプリケーション状態の少なくとも別の一部が送信される(338)。アプリケーション状態の送信が時間のしきい値量(たとえば、0.5秒)を超える例示的実装形態では、NFCによってアプリケーション状態の一部が転送されて、残りの部分は別の無線通信チャネルを使用して転送される。他の実装形態では、第1クライアントデバイスまたはシステムと第2クライアントデバイスまたはシステムとの間の近距離通信接続を使用して、アプリケーション状態全体が送信される(340)。
【００３３】
方法300は、典型的に、それぞれのクライアント102-1の非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアントデバイスまたはシステム102の1つまたは複数のプロセッサによって実行される命令によって支配される。図3A〜3Cに示されたそれぞれの動作は、典型的に、それぞれのクライアント102-1のコンピュータメモリまたは非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアント102-1の1つまたは複数のプロセッサによって実行されるコンピュータ可読命令に対応する。非一時的コンピュータ可読記憶媒体は、図2に関して上述したように、クライアント102-1の1つまたは複数のメモリデバイスを含む。クライアント102-1の非一時的コンピュータ可読記憶媒体に格納されたコンピュータ可読命令は、典型的にソースコード、アセンブリ言語コード、またはオブジェクトコードである。
【００３４】
さらに、方法400、500、および600(たとえば、それぞれ図4A〜図4C、図5A〜図5C、および図6)に関して本明細書に記載される他の処理の詳細も、図3A〜図3Cに関して上述した方法300と類似した方法で適用可能である点に留意されたい。たとえば、転送されたトリガ条件および状態情報は、方法400、500、および600を参照して本明細書に記載した様々な方法の特徴のうちの1つまたは複数を有しうる。簡潔にするために、これらの詳細はここでは繰り返さない。
【００３５】
次に、図4A〜図4Cの流れ図によって示される、あるクライアントデバイス(たとえば、第1クライアント102-1)から他のクライアントデバイス(たとえば、第2クライアント102-2)への、ユーザによるアプリケーションの使用の移行の方法400に注目する。それぞれのユーザの制御下の第1クライアント102-1で、他のデバイスまたはシステムとアプリケーション情報を共有するために登録されたアプリケーションの登録情報が、第1クライアント102-1のメモリ内に任意で保持される(402)。図2のアプリケーション登録情報214を参照されたい。第1アプリケーションは、第1クライアント102-1上でアクティブに実行している(404)。上述のように、アクティブに実行しているアプリケーションのアプリケーション状態は、典型的に第1クライアント102-1によって格納される。
【００３６】
第1アプリケーションが実行している間、クライアント102-1はハンドオフ動作を実行する(406)。いくつかの実施形態では、ハンドオフ動作はアプリケーション転送モジュール108(図2)によって実行されるか、その制御下にある。ハンドオフ動作は、クライアント102-1が、第2クライアントデバイスのあらかじめ定められた近傍内に位置していることを検知すると開始する(414)。代替的に説明すると、ハンドオフ動作は、クライアント102-1が第2クライアントの近傍を検知すると開始する。いくつかの実装形態では、このような近傍はNFC検知モジュール220(図2)によって検知される。上述のように、第2クライアントの近傍は、典型的に、第2クライアントが第1クライアント102-1の10センチメートル、5センチメートル、または4センチメートル以内にある時に検知される(416)。
【００３７】
いくつかの実装形態では、ハンドオフ動作(406)の一部として、クライアント102-1は、アクティブに実行しているアプリケーション(第1アプリケーション)に、現在のアプリケーション状態のコピーを要求する(418)。あるいは、アプリケーション転送モジュール108は、アクティブに実行しているアプリケーションについての状態情報に直接アクセスする。クライアント102-1は、第1アプリケーションに関連付けられるアプリケーション情報(たとえば、上述の状態情報)をクライアント102-2に送信する(420)。
【００３８】
他のデバイスまたはシステムとアプリケーション情報を共有するために登録されたアプリケーションの登録情報が、第2クライアント102-2で任意で保持される(412)。2つのデバイスがあらかじめ定められた近傍内にある場合、第2クライアント102-2も第1クライアント102-1の近傍を検知する(422)。上述のハンドオフ動作の一部として、第2クライアント102-2がクライアント102-1からアプリケーション情報を受信する(424)。第1クライアント102-1からアプリケーション情報を受信するステップに応答して、第2クライアント102-2が、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態で、第1アプリケーションに対応する第2アプリケーションを実行する(426)。いくつかの実施形態では、第2クライアント102-2は、第1クライアント102-1を制御する同じユーザの制御下にある。しかし、特に指定のない限り、第1および第2クライアントが同じユーザの制御下にあるかどうかにかかわらずハンドオフ動作406は実行される。
【００３９】
いくつかの実施形態では、第2クライアントデバイスまたはシステムが第1クライアントデバイスまたはシステムによって物理的に接触されると、ハンドオフ動作が発生する。たとえば、接触/衝突を検知するために1つまたは両方のデバイスで加速度計を使用することができ、ハンドオフが意図的な行為に応じたものであることを確実にするために使用され、したがって偶発的なハンドオフを回避する。
【００４０】
次に図4Bを参照すると、上述のように、第2クライアント102-2が第1クライアント102-1からアプリケーション状態情報を受信する(424)。受信されるアプリケーション状態情報の例には、第1アプリケーションのMIMEタイプ、および/または第1アプリケーションのコンテンツがある。いくつかの実施形態では、クライアント102-2が、受信されたアプリケーション状態情報を格納して、受信された状態情報を第2アプリケーションに渡す(430)。いくつかの実施形態では、MIMEタイプに対応する第2アプリケーションがクライアント102-2に存在しない場合、第2クライアント102-2の制御を有するユーザは、第1アプリケーションに対応する第2アプリケーションをダウンロードするよう求められる(432)。さらに、第2クライアント102-2が、ユーザ命令に応答してそれぞれの第2アプリケーションを(たとえば、通信ネットワーク120を介してホストサーバから)ダウンロードする(434)。第2クライアント102-2が、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態で、第1アプリケーションに対応する第2アプリケーションを実行する(426)。たとえば、第2アプリケーションは、第1アプリケーションと同じタイプ(たとえば、MIMEタイプ)のコンテンツを処理できるアプリケーションである。
【００４１】
いくつかの実施形態では、第1アプリケーションに対応する第2アプリケーションが、第2クライアント102-2においてフォアグラウンドアプリケーションとしてまだ実行していない場合、第1クライアント102-1からアプリケーション情報を受信するステップに応答して、第2クライアント102-2が、第1アプリケーションに対応する第2アプリケーションをフォアグラウンドアプリケーションとして実行する(440)。いくつかの実施形態では、ハンドオフ動作が実行されるときに第2アプリケーションがアクティブに実行していない場合、第2クライアント102-2はあらかじめ定められた時間内に第2アプリケーションの実行を自動的に開始する(442)。たとえば、あらかじめ定められた時間は0.5秒なので、ユーザは第2アプリケーションの開始に気付かない。
【００４２】
ある実装形態では、第1アプリケーションおよび第2アプリケーションは、同じアプリケーションタイプの2つの異なるアプリケーションのインスタンスである(450)。他の実装形態では、第1アプリケーションおよび第2アプリケーションは、同じアプリケーションの2つのインスタンスである(452)。他の実装形態では、第1アプリケーションおよび第2アプリケーションは、両方とも同じコンテンツタイプ(たとえば、MIMEタイプ)を処理するアプリケーションであるが、任意で異なるタイプのアプリケーションである(たとえば、リーダ/プレーヤ、対エディタ)。
【００４３】
一例では、第1アプリケーションおよび第2アプリケーションは、両方とも電子メールアプリケーションである(たとえば、2つの異なる電子メールアプリケーション、または同じ電子メールアプリケーションの2つのインスタンス)(454)。両方のアプリケーションが電子メールアプリケーションの場合、典型的に、ユーザまたはエンティティの電子メールアカウント内に含まれうる機密情報を保護するために、両方のクライアント102が同じユーザまたはエンティティの制御下にある必要がある点に留意されたい。
【００４４】
他の例では、第1アプリケーションおよび第2アプリケーションは、両方ともマルチメディアプレーヤである(456)。他の例では、第1アプリケーションおよび第2アプリケーションは、オーディオまたはオーディオ/ビジュアル通信用の通信アプリケーションである(458)。
【００４５】
いくつかの実施形態では、第1アプリケーションおよび第2アプリケーションが両方とも電子メールアプリケーションである場合、第1クライアントデバイスユーザインターフェース状態が特定のメッセージまたは会話スレッドの表示を備え、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態が、前記特定のメッセージまたは会話スレッドの表示を備える。他の例では、第1クライアントデバイスユーザインターフェース状態が未送信の下書きメッセージの表示を備え、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態が、前記未送信の下書きメッセージの表示を備える。他の例では、第1クライアントデバイスユーザインターフェース状態が、ユーザが指定した検索クエリに対応する会話の第1リストの表示を備え、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態が、ユーザが指定した検索クエリに対応する会話の第2リストの表示を備える。いくつかの実装形態では、第1および第2リストは同じであるか、クライアントデバイスのうちの1つのディスプレイがもう1つのディスプレイよりも小さい場合は一方が他方よりも短い。
【００４６】
いくつかの実施形態では、第1アプリケーションおよび第2アプリケーションが両方ともマルチメディアアプリケーションである場合、第1クライアントデバイスユーザインターフェース状態が第1再生位置における第1マルチメディアアイテムの再生を備え、第1クライアントデバイスユーザインターフェース状態に対応する最初のユーザインターフェース状態が第1再生位置に対応する第2再生位置における第1マルチメディアアイテムの再生を備える。いくつかの実施形態では、第2再生位置は、第1再生位置に関するあらかじめ定められたオフセットを有する。たとえば、第2クライアントデバイスでの最初のユーザインターフェース状態は、ハンドオフによってユーザがいかなるコンテンツも紛失しないように保証するために、再生において第1クライアントデバイスユーザインターフェース状態よりもあらかじめ定められたオフセットだけ早い(たとえば0.5から3.0秒早い)場合がある。
【００４７】
いくつかの実施形態では、第1アプリケーションおよび第2アプリケーションが両方ともオーディオまたはオーディオ/ビジュアル通信用の通信アプリケーションである場合、ハンドオフ動作が実行されるときに、第2クライアントの最初のユーザインターフェース状態は、第1クライアントによる通信接続と同じ宛先への第2クライアントによる通信接続に対応する。
【００４８】
いくつかの実施形態では、アプリケーション状態の一部として送信されるアプリケーションコンテンツが、URL、それぞれのアドレスブックエントリについての連絡先情報、表示されたマップを識別する情報、2つの位置間を移動するための表示されたマップおよび宛先のセットを識別する情報で構成されるグループから選択される。たとえば、第1クライアント102-1からアプリケーション状態を受信するステップに応答して、第2クライアント102-2は、受信されたアプリケーション状態に含まれるMIMEタイプを使用して、第2クライアントが第1アプリケーションに対応する第2アプリケーションを有するかどうかを決定する。第2クライアント102-2は、MIMEタイプが一致する第2アプリケーションを有していないと決定されると、MIMEタイプに対応するそれぞれの第2アプリケーションをダウンロードするためのプロンプトを表示し、ユーザ命令に応答してそれぞれの第2アプリケーションをダウンロードし、第2アプリケーションを実行する。
【００４９】
図4Cを参照すると、第1クライアント102-1は、動作406によって表されるように、それぞれのアプリケーションについてのアプリケーション情報(本明細書では状態情報と呼ばれることもある)を別のクライアント(たとえば、クライアント102-2)にハンドオフできるだけではなく、ハンドオフ動作の間に別のクライアントからアプリケーション情報を受信することもできる(470)。たとえば、上述のハンドオフ動作406の時間の後に、ユーザは、同じアプリケーションまたは別のアプリケーションの状態を第1クライアント102-1に返送したい場合がある。典型的に、第1クライアント102-1は、ハンドオフ動作を受信する時に、アクティブに実行しているアプリケーションを有していないか、フォアグラウンドで実行しているアプリケーションがない。しかし、他の実装形態では、第1クライアント102-1が別のクライアントからアプリケーション情報を受け取るべきかどうかを決定するために、他の様々なメカニズムが使用されうる。
【００５０】
上述のような第2ハンドオフ動作は、典型的にトリガ動作を検知するステップに応答して実行される。トリガ条件は上述されており、したがってその説明はここでは繰り返さない。この第2ハンドオフ動作において、第1クライアント102-1が、別のクライアントデバイスから第3アプリケーションについてのシステムアプリケーション情報(たとえば、状態情報)を受信する(472)。たとえば、受信されたアプリケーション情報は、MIMEタイプ、ならびにアプリケーションコンテンツおよび/または状態情報を含む。このような情報は上述されており、したがってここでは繰り返さない。典型的に、受信されたアプリケーション情報は第1クライアント102-1によって格納されて、第3アプリケーションに対応するそれぞれのアプリケーション(たとえば、第4アプリケーション)に渡される(474)。いくつかの実装形態では、使用されるべきそれぞれのアプリケーションは、受信されたアプリケーション情報で指定されたMIMEタイプによって決定される。第3アプリケーションに対応するそれぞれのアプリケーション(たとえば、第4アプリケーション)は、アプリケーション情報が受信された他のクライアントデバイスまたはシステムのユーザインターフェース状態に対応する最初のユーザインターフェース状態で、第1クライアントデバイスによって実行される(476)。
【００５１】
方法400は、典型的に、それぞれのクライアント102-1の非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアントデバイスまたはシステム102の1つまたは複数のプロセッサによって実行される命令に従う。図4A〜図4Cに示されたそれぞれの動作は、典型的に、それぞれのクライアント102-1のコンピュータメモリまたは非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアント102-1の1つまたは複数のプロセッサによって実行されるコンピュータ可読命令に対応する。非一時的コンピュータ可読記憶媒体は、図2に関して上述したように、クライアント102-1の1つまたは複数のメモリデバイスを含む。クライアント102-1の非一時的コンピュータ可読記憶媒体に格納されたコンピュータ可読命令は、典型的にソースコード、アセンブリ言語コード、またはオブジェクトコードである。
【００５２】
さらに、方法300、500、および600(たとえば、それぞれ図3A〜図3C、図5A〜図5C、および図6)に関して本明細書に記載される他の処理の詳細も、図4A〜図4Cに関して上述した方法400と類似した方法で適用可能である点に留意されたい。たとえば、転送されたトリガ条件および状態情報は、方法300、500、および600を参照して本明細書に記載した様々な方法の特徴のうちの1つまたは複数を有しうる。簡潔にするために、これらの詳細はここでは繰り返さない。
【００５３】
図5A〜図5Cは、いくつかの実施形態による、クライアントデバイスまたはシステム(以下では、参照を容易にするためにクライアントと呼ばれる)の動作の方法500を示す流れ図を含む。方法500は、図1および図2を参照して上述した第1クライアント102-1などのクライアントデバイスまたはシステムによって実行される。第1クライアント102-1が、1つまたは複数のチェックポイントを有する複数のアクティブに実行しているアプリケーションを実行し、それぞれのチェックポイントが、それぞれのアプリケーションを中断して、その後再開できる実行ブレークポイントを識別する(502)。それぞれのアプリケーションのチェックポイントに対応する複数のアクティブに実行しているアプリケーションのそれぞれのアプリケーションごとのそれぞれのアプリケーションのアプリケーション状態は、クライアントのメモリか、クライアントから遠隔の位置にあるサーバのメモリに動的に格納される(504)。アクティブに実行しているアプリケーションのアプリケーション状態を別のデバイスクライアントに(たとえば、図1の第1クライアント102-1から第2クライアント102-2に)転送するための転送トリガ条件が検知される(506)。任意で、クライアント102-1は、複数のアクティブに実行しているアプリケーションが、それぞれのチェックポイントに入るのを待って、複数のアクティブに実行しているアプリケーションの実行を中断する(508, 511)。あるいは、いくつかの実装形態では、トリガ条件を検知すると、第1クライアント102-1は、それぞれのアクティブに実行しているアプリケーションがそれぞれのアクティブに実行しているアプリケーションのチェックポイントに到達すると、複数のアクティブに実行しているアプリケーションのそれぞれのアクティブに実行しているアプリケーションを中断する(509)。
【００５４】
複数のアクティブに実行しているアプリケーションの格納されたアプリケーション状態が、クライアント102-2に送信される(512)。いくつかの実施形態では、それぞれのアクティブに実行しているアプリケーションは、アプリケーション状態が第2クライアントデバイスに送信されたことを通知される(514)。
【００５５】
図5Bを参照すると、いくつかの実施形態では、転送トリガ条件を検知するステップ(506)は、第1クライアント102-1のあらかじめ定められた近傍内の別のクライアントデバイスまたはシステム(たとえば、第2クライアント102-2)の存在を検知するステップ(308)を含む。さらに、上述のように、いくつかの実施形態では、あらかじめ定められた近傍は、2つのデバイス間のNFCチャネル(NFC接続とも呼ばれる)をうまく確立するために、またはNFC通信をうまく行うために必要な近傍である(507)。いくつかの実装形態では、転送トリガ条件を検知するステップは、NFCチャネルを確立するステップ1(310)を含む。いくつかの実施形態では、転送トリガ条件は、第1クライアントデバイスまたはシステムのユーザによる命令(たとえば、タッチセンサー式ディスプレイ上のボタンまたはオブジェクトを押すこと)を含む(526)。しかし、多くの実装形態では、2つのデバイスを相互に近づけること以外のいかなるユーザ動作も不要である。
【００５６】
図5Cを参照すると、いくつかの実施形態では、第1クライアント102-1が、複数のアクティブなアプリケーションの中断を検知するステップの後にのみ、複数のアクティブに実行しているアプリケーションの格納されたアプリケーション状態の送信を開始する(528)。あるいは、いくつかの実施形態では、第1クライアント102-1が、他の依然としてアクティブに実行しているアプリケーションの中断を待たずにそれぞれのアクティブなアプリケーションの中断を検知するステップの後に、アプリケーションの格納されたアプリケーション状態を第2クライアントデバイスまたはシステムに送信する(530)。いくつかの実施形態(図5A〜5Cには図示せず)では、第1クライアント102-1が、あらかじめ定められた数のアプリケーションが中断された後で、複数のアクティブに実行しているアプリケーションの格納されたアプリケーション状態を送信する。
【００５７】
いくつかの実施形態では、第1クライアント102-1から第2クライアント102-2へのアプリケーション状態の転送の遅延を最小限にするために、転送トリガ条件は、NFC接続を形成せずに第2クライアントデバイスのNFCフィールドを検知するステップを備える。いくつかの実施形態では、複数のアクティブに実行しているアプリケーションを中断した後に、または複数のアクティブに実行しているアプリケーションの中断実行の処理の間に、第1クライアント102-1が第2クライアント102-2とのNFC接続を確立する。
【００５８】
いくつかの実装形態では、第1クライアント102-1が、第2クライアント102-2に送信されるアプリケーション状態の一部として、ユーザ認証情報を送信する(532)。
【００５９】
上述のように、いくつかの実施形態では、近距離通信を使用して、アプリケーション状態の少なくとも一部が第2クライアント102-2に送信される(336)。さらに、いくつかの実装形態では、ブルートゥース通信またはWi-Fi通信などの、近距離通信以外の無線通信を使用して、アプリケーション状態の少なくとも他の一部が送信される(338)。他の実装形態では、第1クライアントデバイスまたはシステムと第2クライアントデバイスまたはシステムとの間の近距離通信接続を使用して、アプリケーション状態全体が送信される(340)。
【００６０】
方法500は、典型的に、それぞれのクライアント102-1の非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアントデバイスまたはシステム102の1つまたは複数のプロセッサによって実行される命令に従う。図5A〜図5Cに示されたそれぞれの動作は、典型的に、それぞれのクライアント102-1のコンピュータメモリまたは非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアント102-1の1つまたは複数のプロセッサによって実行されるコンピュータ可読命令に対応する。非一時的コンピュータ可読記憶媒体は、図2に関して上述したように、クライアント102-1の1つまたは複数のメモリデバイスを含む。クライアント102-1の非一時的コンピュータ可読記憶媒体に格納されたコンピュータ可読命令は、典型的にソースコード、アセンブリ言語コード、またはオブジェクトコードである。
【００６１】
さらに、方法300、400、および600(たとえば、それぞれ図3A〜図3C、図4A〜図4C、および図6)に関して本明細書に記載される他の処理の詳細も、図5A〜図5Cに関して上述した方法500と類似した方法で適用可能である点に留意されたい。たとえば、転送されたトリガ条件および状態情報は、方法300、400、および600を参照して本明細書に記載した様々な方法の特徴のうちの1つまたは複数を有しうる。簡潔にするために、これらの詳細はここでは繰り返さない。
【００６２】
図6は、いくつかの実施形態による、クライアントデバイスまたはシステムの動作の方法600を示す流れ図を含む。方法600は、図1および図2を参照して上述したクライアントデバイスまたはシステム102-1などのクライアントデバイスまたはシステムによって実行される。クライアント102-1が、1つまたは複数のチェックポイントを有するアクティブに実行しているアプリケーションを実行し、それぞれのチェックポイントが、アクティブに実行しているアプリケーションを中断して、その後再開できる実行ブレークポイントを識別する(602)。それぞれのアプリケーションのチェックポイントに対応するそれぞれのアクティブに実行しているアプリケーションのアプリケーション状態は、クライアントのメモリか、クライアントから遠隔の位置にあるサーバのメモリに動的に格納される(604)。それぞれのアプリケーションのアプリケーション状態を別のデバイスクライアントに(たとえば、図1のクライアント102-1からクライアント102-2に)転送するための転送トリガ条件が検知される(606)。いくつかの実施形態では、転送トリガ条件は、第1クライアントデバイスまたはシステムのあらかじめ定められた近傍内の第2クライアントデバイスまたはシステムの存在を含む(306、図5Bを参照した上記の記述も参照のこと)。さらに、いくつかの実施形態では、あらかじめ定められた近傍は、近距離通信用のあらかじめ定められた近傍である(図5Bを参照して上述した、図5Bの308)。いくつかの実施形態では、転送トリガ条件は、第1クライアントデバイスまたはシステムのユーザによる命令(たとえば、タッチセンサー式ディスプレイ上のボタンまたはオブジェクトを押すこと)を含む(図5Bを参照して上述した、526)。
【００６３】
方法600は、典型的に、それぞれのクライアント102-1の非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアントデバイスまたはシステム102の1つまたは複数のプロセッサによって実行される命令に従う。図6に示されたそれぞれの動作は、典型的に、それぞれのクライアント102-1のコンピュータメモリまたは非一時的コンピュータ可読記憶媒体に格納された、それぞれのクライアント102-1の1つまたは複数のプロセッサによって実行されるコンピュータ可読命令に対応する。非一時的コンピュータ可読記憶媒体は、図2に関して上述したように、クライアント102-1の1つまたは複数のメモリデバイスを含む。クライアント102-1の非一時的コンピュータ可読記憶媒体に格納されたコンピュータ可読命令は、典型的にソースコード、アセンブリ言語コード、またはオブジェクトコードである。
【００６４】
さらに、方法300、400、および500(たとえば、それぞれ図3A〜図3C、図A〜図4C、および図5A〜図5C)に関して本明細書に記載される他の処理の詳細も、図6に関して上述した方法600と類似した方法で適用可能である点に留意されたい。たとえば、転送されたトリガ条件および状態情報は、方法300、400、および500を参照して本明細書に記載した様々な方法の特徴のうちの1つまたは複数を有しうる。簡潔にするために、これらの詳細はここでは繰り返さない。
【００６５】
説明を目的とする上記の記述は、特定の実施形態を参照して記述されている。しかし、上記の例示的な議論は、網羅的であること、または開示された正確な形態に本発明を限定することを意図するものではない。上記の教示を考慮して、多くの修正および変形が可能である。他の当業者が、企図される特定の用途に適するように、様々な修正を加えた本発明および様々な実施形態を最も良く利用できるようにするために、本発明およびその実際の適用の原理を最もよく説明するために実施形態が選択および記述されている。
【符号の説明】
【００６６】
100  分散システム
102  クライアントデバイスまたはシステム
102  クライアント
102-1  クライアント
102-1  モバイル電話
102-1  電話
102-2  クライアント
102-2  コンピュータ
104  NFCモジュール
104-1  NFCモジュール
104-2  NFCモジュール
104-2  コンピュータ
106  ネットワークモジュール
106  ネットワーク通信モジュール(または命令)
108  アプリケーション転送モジュール
110  アプリケーションプログラム
110  メッセージングアプリケーション
110-1  メッセージングアプリケーション
110-2  メッセージングアプリケーション
112  アプリケーションプログラム
112  マルチメディアアプリケーション
112  ブラウザまたはマルチメディアアプリケーション
114  アプリケーションプログラム
114  他のアプリケーション
120  通信ネットワーク
130  メッセージングサーバ
131  メッセージングサーバアプリケーション
133  メッセージングデータベース
135  メッセージングアカウント情報
137  他のデータベース
140  マルチメディアサーバ
141  マルチメディアサーバアプリケーション
143  マルチメディアデータベース
145  マルチメディアアカウント情報
147  他のデータベース
202  プロセッサ
202  CPU
203  メモリ
204  メモリ
205  ユーザインターフェース
206  近距離通信(NFC)トランシーバ(送信機および受信機)
208  ネットワークまたは他の通信インターフェース
209  通信バス
210  オペレーティングシステム
212  アプリケーション登録モジュール
214  アプリケーション登録情報
220  NFC検知モジュール
222  NFC通信モジュール
224  メッセージングアプリケーション状態情報
224  メッセージングアプリケーション状態
226  ユーザ識別子またはアカウント名
228  ブラウザアプリケーション状態情報
228  ブラウザアプリケーション状態
230  アプリケーション状態情報
248  メッセージングアプリケーション状態情報
300  方法
400  方法
500  方法
600  方法
【図１】
2014522516.tif 000003
【図２】
2014522516.tif 000004
【図３Ａ】
2014522516.tif 000005
【図３Ｂ】
2014522516.tif 000006
【図３Ｃ】
2014522516.tif 000007
【図４Ａ】
2014522516.tif 000008
【図４Ｂ】
2014522516.tif 000009
【図４Ｃ】
2014522516.tif 000010
【図５Ａ】
2014522516.tif 000011
【図５Ｂ】
2014522516.tif 000012
【図５Ｃ】
2014522516.tif 000013
【図６】
2014522516.tif 000014
【国際調査報告】
2014522516.tif 000015
2014522516.tif 000016
2014522516.tif 000017