異なるタイプの通話をシームレスに移行するための様々なユーザインタフェース及び他の技術を実装することができる。この技術は、単一の通話について、ある通話タイプから別の通話タイプへアップグレードされるという印象を与えるように実装され得る。シームレスな通話移行が可能であるとき、アクティブ化のために適切なユーザインタフェースコールが現れるように、新たなアプリケーションが登録され得る。したがって、第三者アプリケーションのための移行をサポートすることができる。クロスプラットフォームの実装をサポートすることができる。
ユーザは、異なる通信モードを利用しようとするときにハードルに直面する可能性があるので、改善の余地がある。
本技術は、少なくとも部分的に通信デバイスによって実施される方法を含むことができ、当該方法は：通信デバイスで第１の通話タイプの第１の通話が実施されている間に、第２の通話タイプの第２の通話へのシームレスな移行（transition）が可能であるかどうかを判断するステップであって、当該シームレスな移行が可能であるかどうかを判断するステップは、第２の通話タイプの通信アプリケーションが前記通信デバイスで利用可能であるかどうかを確認することを含むステップと；シームレスな移行が可能であると判断したことに応答して、シームレスな移行へのユーザインタフェースオプションを提示するステップと；ユーザインタフェースオプションのアクティブ化に応答して、第２の通話タイプの第２の通話へシームレスに移行するステップと；を備える。
本技術は、通信デバイスを含むことができ、当該通信デバイスは：１つ以上のプロセッサと；実行可能なオーディオ通話アプリケーションと、実行可能なビデオ通話アプリケーションと、該実行可能なビデオ通話アプリケーションがシームレスな移行をサポートするかどうかを示すアプリケーション登録情報とを記憶するメモリと；通話をオーディオ通話アプリケーションからビデオ通話アプリケーションへシームレスに移行するように構成される、通話コントローラと；を備える。
本技術は、コンピューティングシステムに方法を実行させるコンピュータ実行可能命令をエンコードした１つ以上のコンピュータ読取可能記憶媒体を含むことができ、上記方法は：リモートデバイスとのオーディオ通話中に、ネットワーク状態がビデオ通話をサポートするかどうか判断し、ビデオ通話へのシームレスな移行をサポートする通信アプリケーションがローカルの通信デバイスに登録されていることを確認し、リモートデバイスが、ビデオ通話アプリケーションからのビデオ通話をサポートすることを検証するステップと；ネットワーク状態がビデオ通話をサポートし、ビデオ通話へのシームレスな移行をサポートする通信アプリケーションがローカルの通信デバイスに登録されており、リモートデバイスがビデオ通話アプリケーションによるビデオ通話をサポートすると判断したことに応答して、ビデオ通話アプリケーションを介して、リモートデバイスとのビデオ通話を開始するステップと；ビデオ通話のオーディオを抑制するステップと；ビデオ通話の接続を検証したことに応答して、オーディオ通話をビデオ通話へシームレスに移行するステップと；を備え、シームレスに移行するステップは、ｉ）ビデオ通話のオーディオを抑制解除することと；ｉｉ）ビデオ通話のビデオを表示することと；ｉｉｉ）オーディオ通話を切断（drop）することと；を含む。
本明細書で説明されるように、所望のとおりに、様々な他の特徴及び利点を本技術に組み込むことができる。
__例１ − 例示の概要__
本明細書で説明される技術は、種々のシームレスな通話移行シナリオに使用することができ、この技術の採用は、異なる通話タイプにより通信するための改善された技術を提供することができる。ユーザインタフェースは、シームレスな通話移行をより良く容易にすることができる。本明細書で説明される他の特徴は、ユーザプリファレンスに対して通話経験をカスタマイズするように実装され得る。その結果、通話タイプ間のよりスムーズな移行による、全体的により優れたユーザ経験がもたらされ得る。
さらに、本技術は、様々な通信アプリケーションをサポートし、クロスプラットフォームのシームレスな通話移行を実装することができる。
本明細書で説明されるように、様々な他の特徴を実装し、組み合わせることができる。
__例２ − シームレスな通話移行を実装する例示のシステム__
図１は、本明細書で説明されるようなシームレスな通話移行を実装する例示のシステム１００のブロック図である。
コンテキストの目的で、図１は、通信デバイス１１０が、１つ以上のネットワーク１８０を介して別の（例えばリモートの）通信デバイス１９０との通信に関与することを示している。
この例では、通信デバイス１１０は、通話コントローラ１２０及び連絡先（contact）データベース１２５を含む。移行構成データ１３０は、特定の通話タイプでの使用についての優先アプリケーション（preferred application）を含むことができる。通話移行状態１３７は、本明細書で説明されるように、通話移行の状態を追跡することができる。
通信デバイス１１０は、別の通信デバイス１９０との異なる通話タイプの２つの同時の通話１７２、１７４をサポートすることができる。図示されるように、これらの通話は、２つの異なるアプリケーション、すなわち、対となるアプリケーション１４０Ｂと通信する電話通話アプリケーション１４０Ａと、対となるアプリケーション１４５Ｂと通信する別の（例えば電話以外の通話）通信アプリケーション１４５Ａとによってホストされ得る。異なるアプリケーション１４０Ａ、１４５Ｂは、異なるアプリケーションタイプのものとすることができる。本明細書で説明されるように、クロスプラットフォームのオペレーションをサポートすることができる。通話は、１つ以上のネットワーク１８０を通過することができる。例えば通話１７２、１７４は、同じ又は異なるネットワーク１８０上で起こり得る。通話は、異なる物理又は論理通信チャネルを通過することができる。
本明細書で説明されるように、２つの通話１７２、１７４の間の移行をシームレスに実行して、単一の通話に関与する（例えば通話又は通信が中断されない）という印象を与えることができる。第２の通話をバックグラウンドで開始すること、第１の通話を維持すること、第２の通話のオーディオを抑制すること、第２の通話を、第２の通話として表すことを抑止すること及び最終的に第２の通話へ移行することといった様々な技術を適用して、シームレスな通話移行を実装することができる。
様々なコンポーネントを別個のボックスに図示しているが、実際には、コンポーネントの境界は異なってよい。例えばコンポーネントを、電話のオペレーティングシステム、通話のコントローラ等の一部として提供することができる。本技術を実装しつつ、他の配置も可能である。
実際には、システム１００のような、本明細書で示されるシステムは、追加の機能、更なる通信アプリケーション等により、より複雑にされる可能性もある。
本明細書で説明されるシステム１００及び他のシステムのいずれかを、以下で説明される（例えば１つ以上のプロセッサとメモリ等を備える）コンピューティングシステム又はモバイルデバイスのような、本明細書で説明されるハードウェアコンポーネントのいずれかとともに実装することができる。本明細書の例のいずれかにおいて、入力、出力、プリファレンス及びアプリケーションを、１つ以上のコンピュータ読取可能記憶媒体又はコンピュータ読取可能記憶デバイスに格納することができる。本明細書で説明される技術は、オペレーティングシステム又はハードウェアの仕様に対して一般的であってよく、説明される特徴を利用するよう全ての様々な環境において適用され得る。
__例３ − シームレスな通話移行を実装する方法__
図２は、シームレスな通話移行を実装する例示の方法２００のフローチャートであり、例えば図１に示されるシステムにおいて実装され得る。
方法２００は典型的に、（例えば電話通話アプリケーションによる）第１の通話が既に確立された後に実行される。実際には、第１の通話を実施している間に通話進行ユーザインタフェースが表示される。
２１０において、（例えば第１の通話とは異なる）第２の通話タイプの第２の通話へのシームレスな通話移行が可能であるかどうかを判断する。そのような判断は、第１の通話タイプの第１の通話を実施している間に行われ得る。本明細書で説明されるように、そのような判断は、他の通信デバイスの能力、ネットワーク状態等に基づくことができる。この時点では、第２の通話を確立する必要はない。
２２０において、シームレスな通話移行が可能であるという判断に応答して、通信デバイスのユーザインタフェース内に、シームレスな通話移行を開始するためのオプションが提示される。本明細書で説明されるように、そのようなオプションは、シームレスな通話移行が可能であるという判断があるとイネーブルされるグラフィカルなボタンの形をとることができる。このオプションは、（例えば第１の通話を実施している間に）通話進行ユーザインタフェースの一部として提示され得る。
図示されていないが、方法は、本明細書で説明されるように、他の通信デバイスから同意（consent）を取得することを含むことができる。
２３０において、ユーザインタフェースのオプションのアクティブ化に応答して、第１の通話タイプの第１の通話が、第２の通話タイプの第２の通話へシームレスに移行される。第１の通話を維持しつつ、第２の通話を（例えば移行プロセスの一部として又は事前に）確立することができる。したがって、通信デバイスのユーザにとって、２つの通話が１つ（例えば中断されない）の通話であるように見える。典型的なシナリオは、電話通話を（例えばビデオを伴っても、伴わなくてもよい）ＶｏＩＰ通話に移行させるが、本明細書で説明されるように他の移行も可能である。
シームレスな移行の間、同じ（例えば他の）通信デバイスとの２つの通話を同時に維持することができる。
シームレスな移行の間に、様々な技術を使用することができる。例えば第２の通話を開始し、オーディオを抑制し、接続を確認することができる。続いて、オーディオを抑制解除して、第１の通話を切断することができる。
第２の通話への移行の後、第２のタイプの通話に利用可能な全ての特徴を、利用可能にすることができる。本明細書で説明されるように、そのような特徴は、ビデオ、画面共有、あるいは第２の通話を編成する通信アプリケーションによって提供される他の機能を含むことができる。したがって、ユーザインタフェースは、そのような特徴を提供又は示すようにアップグレードされ得る。
方法２００の典型的な使用ケースは、通話を、従来的な（例えば回路交換式、セルラ等）電話の通話による電話通話から、ボイスオーバー・インターネットプロトコル（ＶｏＩＰ）の通話に移行させることである。ＶｏＩＰ通話は、所望のとおりに、ビデオ及び他の特徴をサポートすることができる。しかしながら、本技術は、他の通話タイプの間の移行又は他の方向の移行もサポートすることができる。
本明細書で説明される方法２００及び他の方法のいずれかを、１つ以上のコンピュータ読取可能媒体（例えばストレージ又は他の有形の媒体）に記憶されるか、１つ以上のコンピュータ読取可能記憶デバイスに記憶される、（例えばコンピューティングシステムに方法を実行させる）コンピュータ実行可能命令によって実行することができる。
__例４ − シームレスな通話移行を実装する例示の通信デバイス__
図３は、シームレスな通話移行が可能であるかどうかを判断するように構成される例示のシステム３００を示すブロック図である。この例では、通信デバイス３０５（例えば図１の通信デバイス１１０）は、電話通話アプリケーション３４０Ａ、１つ以上の通信アプリケーション３４５Ａ〜３４９Ａ、連絡先データベース３２５及びネットワーク状態インジケータ３５５を備える。
様々な技術を使用して、シームレスな通話移行が可能であるかどうかを判断することができる。一部の場合には、様々な異なる通話タイプがサポートされることがあり、上記の判断を、異なる通話タイプについて個々に行うことができる（例えばビデオ通話へのシームレスな移行は可能ではないが、ビデオを伴わないＶｏＩＰへのシームレスな移行は可能であることがある）。
本明細書で説明されるように、特定の通話タイプへのシームレスな通話移行が可能であるかどうかの判断は、ネットワーク状態インジケータ３５５に依存する可能性があり、ネットワーク状態インジケータ３５５は、ネットワーク３８０の状態が通話タイプをサポートするかどうかを示す。また、アプリケーション登録情報３６０に対するチェックを実施して、シームレスな移行をサポートするアプリケーションが登録されているかどうかを判断することもできる。本明細書で説明されるように、異なるアプリケーションを、異なる通話タイプのために登録することができる。情報３６０は、（例えば通話タイプによって）特定のアプリケーションがシームレスな移行をサポートするかどうかを示すことができる。
上記の判断は、他の通信デバイス３９０の能力に依存することもある。他の通信デバイス３９０の能力を決定するための１つの技術は、（例えば連絡先データベース３２５に関連付けられる）情報をローカルに格納することである。例えばデバイスがビデオ能力を有することが知られている場合、データベース内の（例えば電話番号又は他のアドレスに基づく）エントリに、そのデバイスがビデオ能力を有することを示すよう注釈を付けることができる。通信デバイス３０５は、（例えば連絡先データベース３８７内の連絡先がローカルのデータベース３２５内の連絡先と合致するかどうかを判断するために）アプリケーションサービス３８５と通信することにより、ローカルストアを周期的に更新することができる。
しかしながら、ユーザは、特定の通信サービスについて同じアドレス又はユーザ名を使用する複数のデバイスを有することがある。したがって、他の通信デバイス３９０上の対応する通信アプリケーション３４５Ｂと通信することによって能力を決定することができる。あるいは、アプリケーションサービス３８５は、追跡したデバイスのステータス（例えばそれらのデバイスが接続されているかどうか、それらのデバイスがどのバージョンのソフトウェアを有しているか等）を積極的に更新してもよい。
一部の場合には、通信アプリケーション３４５Ａ〜３４９Ａが存在しない。あるいは、特定のタイプの通信アプリケーションが存在しないこともある。そのような場合には、シームレスな通話移行は直ぐには可能ではないが、本明細書で説明されるように、適切な通信アプリケーションを取得することができるオプションを現在のユーザインタフェース内に提示することができる。したがって、その後、シームレスな移行が可能になり得る。よって、ユーザには、ユーザのデバイス上で移行機能が可能であることが、役立つよう通知され得る。
同様に、アプリケーションは存在するが、構成されないかアクティブ化されない場合、通信アプリケーションを構成又はアクティブ化することができるオプションを、現在のユーザインタフェース内に提示することができる。やはり、ユーザには、ユーザのデバイス上で移行機能が可能であることが、役立つよう通知され得る。
__例５ − シームレスな通話移行を実装する例示の方法__
図４は、シームレスな通話移行が可能であるかどうかを決定する例示の方法４００のフローチャートであり、例えば図３に示されるシステムにおいて実装することができる。他の編成も可能であるが、実際には、方法４００は典型的に、第１の通話タイプの通話による別のデバイスとの通信中に起動される。方法は、通話移行のシームレスな性質を維持するよう実装され得る。例えば通話中にシームレスな移行が可能であるとき、特別な又は別個のユーザインタフェースへのナビゲーションを必要とする代わりに、簡単なユーザインタフェースオプションを提示することができる。
本明細書の例のいずれかにおいて、（例えば方法４００が開始する前に、方法４００の間等に）第２の通話タイプの通信アプリケーションが、ローカルの通信デバイスで利用可能であるかどうか（例えばインストールされているか、登録されているか、アクティブに構成されているか等）を判断することができる。本明細書で説明されるように、特定の通話タイプをサポートする複数の通信アプリケーションが利用可能である場合、その通話タイプについて、好みの又は優先アプリケーションを記憶することができる。その後、優先アプリケーションを、シームレスな移行プロセス全体を通して使用することができる。上記の判断は、アプリケーションが（例えば特定の通話タイプへの）シームレスな移行をサポートするかどうかを判断することも含むことができる。
第２の通話タイプの通信アプリケーションが利用可能でない場合、本明細書で説明されるように、そのアプリケーションを取得し、アクティブ化し、構成等するためのオプションを、現在のユーザインタフェースに表示することができる。そうではなく、第２の通話タイプの通信アプリケーションが利用可能であると判断したことに応答して、方法は継続することができる。したがって、第２の通話タイプの通信アプリケーションが、ローカルの通信デバイスにおいて利用可能であるかどうかを確認する。
４１０において、他の通信デバイスが、第２の通話タイプの第２の通話をサポートするかどうかを判断する。本明細書で説明されるように、そのような判断を様々な方法で行うことができる。
他のデバイスが通話をサポートするかどうかの判断は、他の通信デバイスについてのローカル情報をクエリすることによって達成され得る。例えばローカルの連絡先データベース（例えばアドレス帳）をチェックして、他の通信デバイス（例えば発信者ＩＤを介して見つかるか、ダイアルされた番号）又は他の通信デバイスに関連付けられるユーザ（例えばユーザは、現在の通話の番号に関連付けられるようにローカルの連絡先に記憶される）が、第２の通話タイプの通話をサポートするサービスプロバイダのアカウントを有するかどうかを確かめることができる。アカウントを有する場合、他のデバイスはそのような通話をサポートすると考えることができる。アドレス帳は、シームレスな移行が可能であるかどうかを示すように強化されるか、補足され得る。プラットフォームタイプやプラットフォームバージョン、アプリケーションタイプ、アプリケーションバージョン等のような情報を格納するか、調べて、あるいはその双方を行って、他デバイスがシームレスな移行を実装することができるかどうかを判断することができる。
他の技術は、他の通信デバイスに直接確認をすること（例えばクエリすること）を含む。ローカルアプリケーションと、第２の通話タイプの通話をサポートするリモートアプリケーション（又は例えばそのアプリケーションのバックグラウンドバージョン）との間でハンドシェークを行うことによって、そのような確認を行うことができる。例えば優先アプリケーションが特定の通話タイプについて指示される場合、他のデバイスが、そのアプリケーションの代わりのインスタンス又はバックグラウンドのリスナを有するかどうかを確かめるようクエリを行うことができる。あるいは、クエリコントローラ又は他のソフトウェアは、そのような情報を格納して、アプリケーションを起動しなければならないことを避けることができる。
別の技術は、アプリケーションサービス（例えば第２の通話タイプをサポートする通信アプリケーションに関連付けられるサーバ）にクエリして、（例えば他のデバイスに関連付けられる）番号又は連絡先が認識されるかどうかを確かめることである。認識には、番号又は連絡先が登録されているか、アクティブであるか又はその双方が含まれ得る。
判断を容易にするために、アプリケーション・プログラミング・インタフェース・コールを、通信アプリケーションについて定義することができ、このＡＰＩコールにより、ローカルの通信アプリケーションをクエリして、他のデバイスが適切な能力を有するかどうかに関する回答を提供することができる。入力は、通話タイプ、ユーザ識別子（例えば番号、アドレス等）又はその双方を含むことができる。
４２０において、現在のネットワークが、第２の通話タイプの通話をサポートすることができるかどうかを判断する。例えば特定のタイプのネットワークへの接続が利用可能でないか、不安定な場合、その通話タイプは可能ではない可能性がある。通信デバイスは、それぞれのネットワークの状態を示す、１つ以上のネットワーク状態インジケータ又はネットワーク接続状態インジケータを格納することができる。そのようなネットワークは、モバイルオペレータによって提供される無線データ接続（例えば３Ｇ、４Ｇ、４Ｇ ＬＴＥ、WiMAX等）、Wi-Fi接続等を含むことができる。異なる状態インジケータを異なるネットワークについて格納することができる。したがって、シームレスな移行が可能であるかどうかを判断することは、ネットワーク接続状態インジケータが、第２の通話タイプが可能であることを示すかどうかを判断することを含むことができる。
上記の判断が双方とも、第２の通話タイプの通話へのシームレスの移行が可能である（例えば他のデバイスがその能力を有し、かつネットワークが第２の通話タイプをサポートすることになる）ことを示す場合、次いで、本明細書で説明されるように移行を開始するためのオプションを提供することができる。他の条件を上記の判断に組み込むことができる。
__例６ − 例示の通話タイプ__
本明細書の例のいずれかにおいて、本技術は複数の異なる通話タイプをサポートすることができる。現代の通信デバイスにおいてほぼユビキタスな、ある通話タイプは、（例えばモバイルオペレータのインフラストラクチャを介して切り替え又は管理される）標準的な（携帯）電話の通話であり、これは、その基礎となる技術がセルラでないとしても、時々「セルラ通話」と呼ばれる。他の通話タイプは、ＶｏＩＰ通話を含み、ＶｏＩＰ通話は、一部の実装では音声のみのＶｏＩＰ通話及びビデオＶｏＩＰ通話等に更に分けられることがある。ＲＣＳ又はＲＣＳ−ｅ通話タイプもサポートすることができる。
本技術は、通話タイプを指定する様々な方法をサポートすることができる。例えば特定の特性を共有する異なる通信アプリケーションによって編成される通話を、同じ通話タイプであると見なすことができる（例えばSkype（登録商標）の通話とViber（登録商標）の通話は、ビデオ通話タイプと見なされる）。あるいは、そのような通話を、異なる通話タイプとして実装することができる（例えばSkypeの通話をある通話タイプとし、Viberの通話を別の通話タイプとする）。
実際には、異なるアプリケーションタイプを、異なるチャネルを通して又は異なるネットワーク上で実現することができる。しかしながら、一部又は全てのレッグが、同じネットワークインフラストラクチャを共有することができる。
__例７ − 例示の通信アプリケーションタイプ__
標準的な電話の通話をサポートする通信アプリケーション（app）に加えて、本明細書における例のいずれかにおいて、多様な他の通信アプリケーションタイプ（例えば電話以外の通話アプリケーション）が、単一のデバイス上でサポートされ得る。実際には、そのような通信アプリケーションは、異なるパーティ（例えば第三者）によって提供され得る（例えば電話のオペレーティングシステムのためのソフトウェア、通話コントローラ、電話通話アプリケーション等を提供及び維持するエンティティ以外のエンティティによって提供及び維持される）。サポートされ得る例示のアプリケーションタイプは、ビデオアプリケーション、（例えばビデオをサポートすることができる）ＶｏＩＰアプリケーション等を含む。
実際には、そのようなアプリケーションタイプは、通信を行うためのソフトウェアを供給し、かつ、接続又は他の機能を容易にするサーバを維持する、サービスプロバイダに関連付けられ得る。例えばMicrosoft社によって提供されるSkypeアプリケーション、Viber Media社によって提供されるViberアプリケーション、TangoME社によって提供されるTango（登録商標）アプリケーション及び他のものが、サポートされ得るアプリケーションを利用可能である。モバイルオペレータによって提供される様々なＲＣＳ及びＲＳＣ−ｅアプリケーションもサポートされ得る。
さらに、特定のサービス内で、異なるプラットフォーム又はハードウェアのバージョンについて異なる実際のアプリケーションが存在し得る。例えばSkypeアプリケーションは、様々なオペレーティングシステム上で実装され得る。したがって、単一のサービスプロバイダが、異なるプラットフォーム（例えばオペレーティングシステム）にわたって実装される通信アプリケーションを供給することができる。例えばSkype通信アプリケーションは、Microsoft社によって供給される様々なWindows（登録商標）オペレーティングシステムで、Apple社によって供給されるiOS及びMac OSのオペレーティングシステムで、Google社によって供給されるAndroid（登録商標）オペレーティングシステムで及び同様のものにおいて提供され得る。便宜上、そのようなアプリケーションの集合は時々、通信サービスに関連付けられる「アプリケーションファミリ」と呼ばれる。
したがって、別のデバイス上の対応するアプリケーションは、同じ実際のアプリケーションである必要はない。異なるプラットフォームの対応するアプリケーションを使用して、通信を確立することができる。本明細書における技術は、異なるバージョン及びプラットフォームを区別して、シームレスな通話移行が可能であるかどうかを判断し、それに応じて、シームレスな通話移行を実装することができる。
アプリケーションは、通話のエンドポイントとして機能することができる。したがって、シームレスな移行は、あるセットのエンドポイント（例えば電話通話アプリケーション）から別のセットのエンドポイント（例えば通信サービスに関連付けられるアプリケーションファミリ内のアプリケーション）へ移行することができる。
__例８ − 例示の能力の自動検出__
シームレスな通話移行をサポートする、他の通信デバイスのインストール済み通信アプリケーションの自動検出を実装して、ローカルデバイスにおいてアプリケーションとの交差が存在するかどうかを判断することができる。そのため、両デバイスが、第２の通話タイプの通話へのシームレスな通話移行をサポートする１つのアプリケーションを共通に有している場合、その共有のアプリケーションを、使用すべきものとして指定することができる。複数のアプリケーションが共有される場合、ユーザプリファレンスを調べることができる。幾つかの場合において、アプリケーションがシームレスな移行をサポートするかどうかは、アプリケーションのバージョン又はプラットフォームに依存し得る。
したがって、第１の通話に関与するパーティは双方とも、同じサービスに加入していると決定することができる。その後、サービスによりサポートされる通話タイプへのシームレスなアップグレードを達成することができる。
__例９ − 例示の実装：ビデオ通話へのアップグレード__
本明細書で説明される技術は、音声電話通話をビデオ通話へアップグレードするために実装され得る。そのような場合、第１の通話タイプは、電話通話（例えばビデオを伴わないオーディオ）であり、第２の通話タイプは、ビデオ通話（例えば典型的にはＶｏＩＰによるビデオとオーディオ）である。ビデオを示すアイコン及び言語を、インタフェース全体を通して使用し、本明細書で説明されるシームレスな通話移行技術を使用して通話をビデオにアップグレードすることができることを示すことができる。したがって、シームレスな移行は、オーディオ通話からビデオ通話へアップグレードする。
そのため、例えば２人のパーティがセルラ通話の一部として話をしているとき、彼らは、通話をビデオ通話タイプにシームレスに移行することにより、セルラ通話をビデオ通話にアップグレードすることができる。
そのような実装は、実行可能なオーディオ通話アプリケーション及び実行可能なビデオ通話アプリケーションを備えるシステムにより達成され得る。通話コントローラは、通話をオーディオ通話アプリケーションからビデオ通話アプリケーションへシームレスに移行するよう構成され得る。
__例１０ − 例示の実装：ＶｏＩＰへのアップグレード__
本明細書で説明される技術は、携帯電話の通話をＶｏＩＰ通話へアップグレードするために実装され得る。そのような場合、第１の通話タイプは、セルラ通話（例えばビデオを伴わないオーディオ）であり、第２の通話タイプは、ＶｏＩＰ通話である。ＶｏＩＰを示すアイコン及び言語を、インタフェース全体を通して使用し、本明細書で説明されるシームレスな通話移行技術を使用して通話をＶｏＩＰにアップグレードすることができることを示すことができる。したがって、シームレスな移行は、セルラ通話からＶｏＩＰ通話へアップグレードする。
そのため、例えば２人のパーティがセルラ通話の一部として話をしているとき、彼らは、通話をＶｏＩＰ通話タイプにシームレスに移行することにより、ＶｏＩＰ通話をビデオ通話にアップグレードすることができる。
そのような実装は、実行可能な電話通話アプリケーション及び実行可能なＶｏＩＰ通話アプリケーションを備えるシステムにより達成され得る。通話コントローラは、通話を電話通話アプリケーションからＶｏＩＰ通話アプリケーションへシームレスに移行するように構成され得る。
__例１１ − シームレスな通話移行を起動するユーザインタフェースオプション__
本明細書の例のいずれかにおいて、シームレスな通話移行を起動することができるユーザインタフェースオプションを提示することができる。本明細書で説明されるように、そのようなオプションは、通話の移行が可能であるかどうかに基づいて、条件付きで提示することができる。
図５は、例示の通話進行ユーザインタフェース５００のワイヤフレームであり、移行を開始するためのアクティブ化可能なユーザインタフェース要素５３５を含む。実際には、ユーザインタフェース要素５３５は、利用可能でないときはディスエーブル（無効）として表示され（例えばグレーアウトされるか、フェードされる等）、利用可能であるときはイネーブル（有効）として表示され得る。例えばユーザインタフェース要素は、ネットワーク状態が第２の通話タイプをサポートしないとき、ディスエーブルとして表示され得る。
ユーザインタフェース要素５３５は、説明、テキスト、ロゴ、グラフィック、あるいは（例えば第２の通話の）どのアプリケーション又は通話タイプに関係するかを示す他の情報を組み込むことができる。例えばビデオ通話タイプへの移行では、ビデオカメラ又は同様のアイコンを表示することができる。
この例では、ユーザインタフェース要素は、第１の通話を実施している間に、通話進行（例えば進行中の通話（ongoing call）、通話内（in-call）、通話中（mid-call)）ユーザインタフェースの一部として表示される。このユーザインタフェースは、他のパーティの写真５２０及び現在の通話を制御するための様々な他のユーザインタフェース要素（例えばスピーカボタン５３１、ミュートボタン５３２、add call（通話追加）ボタン５３３、保留ボタン５３４及びBluetooth（登録商標）ボタン５３９）。実際には、他の又は追加のユーザインタフェース要素を表示することができる。
適用可能な通信アプリケーションがインストールされていないために、シームレスな通話移行が利用可能でない場合、やはり、ユーザインタフェースを提示することができる。したがって、第２のタイプの通話をサポートするためのアプリケーションが通信デバイス上にインストールされていないと決定し、通話進行ユーザインタフェースの一部としてオプションを提示して、通信デバイス上でアプリケーションのインストールプロセスを開始することができる。
そのようなユーザインタフェース要素は、（例えばアイコン、グラフィクス、テキスト、色等を介して）シームレスな通話移行をサポートするアプリケーションをインストールすることが可能であるという事実への関心を呼び起こすことができる。ユーザインタフェース要素のアクティブ化は、サポートされる通信アプリケーションのリストを表示することにつながり得る。リスト内のアプリケーションのアクティブ化の結果、アプリケーションを取得することができる市場（marketplace）ページへのナビゲーションが行われ得る。あるいは、ユーザインタフェース要素のアクティブ化の結果、適切な通信アプリケーションを購入することができるアプリケーション市場又は市場ページへの直接的なナビゲーションが行われ得る。
ユーザインタフェース要素５３５は、通話移行が可能であるという判断があると、イネーブルされ得るが、そのような判断は必ずしも完全に厳密である必要はない。例えば他のパーティがもはや関連するサービスに加入していないこと、あるいはネットワーク状態が悪化していることであってもよい。
ある実装は、移行するために複数のユーザインタフェース要素５３５をサポートすることができる。例えば異なる通話タイプ、異なるサービス又は異なる通話特徴（例えばビデオ、画面共有等）について異なる要素を提示することができる。あるいは、単一の要素５３５が複数の通話タイプをサポートすることができる（例えばタップとホールドを介して、ユーザ挙動を学習すること等）。
所望であれば、利用可能なときに移行が自動的に起こるように、プリファレンスを設定することができる。
__例１２ − 例示のアクティブ化__
本明細書の例のいずれかにおいて、ユーザインタフェース要素は、ユーザによりアクティブ化可能な、表示又は暗示されるユーザインタフェース要素の形をとることができる。そのような要素は、グラフィカルユーザインタフェースの一部として提示される、タイル、アイコン、グラフィカルボタン、エリア、リスト内のアイテム、形状、スライダ等の形をとることができる。ユーザインタフェース要素は、機能を示すようテキスト、グラフィクス又は色を含むことができる。
（例えばアクティブ化可能なユーザインタフェース要素の）アクティブ化は、（例えばアクティブ化可能なユーザインタフェース要素の）選択を指示するユーザ入力の形をとることができる。例えばタッチをサポートするシステムでは、タップ、ホバリング又は他のタッチジェスチャを受け取ることができる。他のシステムは、クリック、ホバリング、音声によるアクティブ化、まばたき、ウィンク等をサポートすることができる。
__例１３ − 例示の連絡窓口（contact point）__
本明細書の例のいずれかにおいて、様々な番号及びアドレスタイプ（例えば自宅、モバイル、職場等）をサポートすることができる。連絡窓口は、連絡先に関連付けられる番号又はアドレスの形をとることができる。例えば連絡窓口は、連絡先の職場の番号、連絡先の携帯番号又は連絡先の自宅の番号といった、連絡先の電話番号又はユーザアドレスとすることができる。
他の通信デバイスを使用するパーティのアイデンティティを決定するとき、他の通信デバイスの電話番号を使用して、合致する連絡窓口を有する連絡先を検索することができる。次いで、連絡先のエントリを使用して、第２の通話を編成している通信アプリケーションのための番号又はユーザアドレスを見つけることができる。例えば電話番号を使用して、ＶｏＩＰ通話用のユーザアドレスを決定することができる。
__例１４ − 例示の同意__
本明細書の例のいずれかにおいて、第２の通話をアクティブ化又は開始する前に、他の通信デバイスにおいて通話移行に同意する機会を与えることができる。例えばビデオをサポートする通話タイプに移行するとき、他のパーティはそのデバイスがビデオを送信することを望まないことがある。
ユーザからの同意を取得するユーザインタフェースを表示することができる。要求側パーティ及び通話のタイプに関する情報を表示することができる（例えば「エレンは今通話にビデオを含めることを要求しています。OK?」）。同意の受信に応答して、移行は継続することができる。
ユーザの関心を得るために、同意を求めるときに、トーン又は他のオーディオ指示を再生することができる。
望まれる場合、ユーザの意思に配慮しつつも、やはり通話の移行が起こるように、同意を実装することができる。例えば通話をＶｏＩＰにアップグレードするが、未同意側からのビデオは含まれない。あるいは、追加のオプションをユーザに提示することができる。例えばアップグレードとビデオの包含について独立の同意を実装することができる。
一部の場合において、同意はサポートされないことがあり、被呼者側からの経験は、被呼者側におけるシームレスな移行ではないことがある（例えば着信は、着信として現れる）。
__例１５ − 通話を移行させる例示の方法__
図６は、通話を移行する例示の方法６００のフローチャートであり、例えば図１に図示されるシステムにおいて実装することができる。方法を実装するシステムは、本明細書で説明されるように、第１の通話の一意の識別子及びオーディオ抑制ロジックも含むことができる。
６２０において、ローカル通信デバイスから他の通信デバイスへの（例えば第１の通話タイプとは異なる）第２の通話タイプの第２の通話が開始される。この通話は、バックグラウンドで起こり得る（例えばユーザには別個の通話として提示されない）。一方、第１の（例えば現在の）通話はアクティブに保持される。例えば第２の通話の結果、典型的に、第１の通話を保留状態に置くことになる場合、そのような機能は阻止され得る。本明細書で説明されるように、第２の通話のオーディオは抑制され得る。
第２の通話はバックグラウンドに置かれ得るが、第２の通話が生じたという印象を与えることなく、進行についての何らかの指示を提供することができる。例えば接続を待っている間、移行の準備を示すマーキー（marquee）、アニメーション又は他の機構を表示することができる。また、移行を開始したユーザインタフェースをディスエーブルすることもできる。
６３０において、第２の通話の接続が確認される。例えば他の通信デバイスとの第２の通話が成功裏に確立されたかどうかを判断することができる。したがって、第１の通話を維持しつつ、第２の通話が（例えば第２のチャネル上で）確立される。何らかの理由で接続が（例えばｎ秒後に）成功しない場合、処理は失敗し、第１の通話が続く。
６４０において、第２の通話の接続を確認したことに応答して、第２の通話が完全にアクティブにされ得る。一部の実装では、その後、第１の通話が保留状態に置かれるか、終了又は切断され、あるいは他の方法で非アクティブにされ得る。第１の通話のアクティブ化解除を容易にするために、一意の識別子を使用して第１の通話を識別することができる。第１の通話の望まれない又は認証されないアクティブ化解除を避けるために、単純な一意の識別子は避けられる可能性がある。代わりに、より複雑な（例えばＧＵＩＤ等）識別子生成スキームを使用して通話を識別することができる。
移行の一部として、第２の通話タイプをより良く容易にするようオーディオリソースを切り替えることができる。例えば第２の通話タイプがビデオである場合、オーディオを、デバイスのイヤホンからスピーカに切り替えて、カメラの使用を容易にすることができる。Bluetooth（登録商標）のオーディオを使用している場合は、オーディオリソースを切り替える必要はない。
説明されるように、方法６００は、単一の通話に関係するという印象を維持しつつ、アプリケーションを切り替えること（例えばあるアプリケーションタイプによってサポートされる通話と、異なるアプリケーションタイプによってサポートされる通話との間で切り替えること）を達成することができる。
ビデオを含む通話タイプへ移行するとき、ローカルのビデオが他の通信デバイスに対して見えるようになる前に介在する期間（interstitial period）中に、（例えばユーザに見え方を確認する機会を与えるために）ローカルビデオをデバイス上に表示することができる。第１の通話からのオーディオは、その介在期間中、継続することができる。
被呼者側のデバイスにおいて、シームレスな移行を同様の方法で実装することができる。しかしながら、着信は、シームレスな移行の一部として取り扱われるべき特別な通話として指示され得る。そのため、着信を、着信として示す代わりに、バックグラウンドで処理して、次いで着信への移行がシームレスに達成され得る。本明細書で説明されるように、同意を得ることができる。
一部の場合において、ネットワーク状態が悪化することがあり、この場合、第１の通話の通話タイプへ戻すよう移行を促す。そのような移行は、本明細書で説明されるようにシームレスに実行され得る。（例えば通話からビデオを除外するとき）他のパーティの同意は可能でないか必要とされないことがある。
__例１６ − 例示のオーディオの抑制__
本明細書の例のいずれかにおいて、第２の通話のオーディオを、第２の通話がアクティブにされる前に抑制することができる。そのような技術は、オーディオ、エコー等の二重化を避けることができる。通話抑制は、通話コントローラ又は他のコンポーネントによって制御され得る。
__例１７ − 例示のユーザインタフェースシーケンス__
本明細書の例のいずれかにおいて、ユーザインタフェースは、元のユーザインタフェース（例えば通話進行ＵＩ）と、第２の通話をサポートする通話アプリケーションのユーザインタフェースとの間を順序付けすることができる。移行の完了の後、第１の通話が第２の通話に移行したことが見える。次いで、通信デバイスにおける使用のために、第２の通話タイプの機能が提示される。
他のデバイスにおいて、同意の要求を表示することができ、その同意後に、ユーザインタフェースは第２の通話をサポートするものへと移行する。
__例１８ − 例示の通話移行状態__
本明細書の例のいずれかにおいて、移行プロセスを編成するのを助けるよう通話移行状態を記憶することができる。そのような状態は、通話状態とともに又はその一部として実装され得る。例えば状態は「実装されていない」、「非アクティブ」、「第２の通話を開始する」、「完了」等を示すことができる。
同様に、本明細書で説明されるように、ネットワーク状態インジケータを記憶することができる。
__例１９ − 通信アプリケーションを登録する例示の方法__
図７は、シームレスな通話移行を達成するため通信アプリケーションを登録する例示の方法７００のフローチャートであり、例えば本明細書で説明される通信デバイスのいずれかで実装され得る。
７２０において、通信アプリケーションを通信デバイスに登録する。例えばオペレーティングシステム又は他の制御ソフトウェアは、通信アプリケーションがインストールされていること、通信アプリケーションが１つ以上の通信タイプをサポートすること、そして通信アプリケーションがシームレスな通話移行をサポートすることについての通知を受け取ることができる。
７３０において、登録に応答して、通信デバイスの構成が更新される。例えば特定の通話タイプをサポートする通信アプリケーションのリストは、通信アプリケーションをそのリストへ追加することにより更新され得る。特定の通話タイプについて、優先される通信アプリケーションを記憶することもできる。
７４０において、登録の結果として、通信アプリケーションによってサポートされるタイプの第２の通話へシームレスに移行するためのオプションが、通信デバイスのユーザインタフェース内に提示される。本明細書で説明されるように、そのようなオプションを（例えば他の通信デバイスの能力、ネットワーク状態等に応じて）条件付きで提示するか、条件付きでイネーブルすることができる。
したがって、第２の通話タイプをサポートするアプリケーションのインストール中に、第２の通話タイプを介したシームレスな移行を実施するときに使用されるように、アプリケーションを登録することができる。続いて、登録に応答して、第２の通話タイプ又はアプリケーションを示すユーザインタフェース要素を提示することができる。
__例２０ − 登録済み通信アプリケーション__
図８は、優先通信アプリケーションを記憶するテーブル８００のブロック図であり、構成データ（例えば移行構成データ１３０）の一部として記憶することができる。テーブル８００は、アプリケーション８３０Ａ及びアプリケーションが優先されるかどうか８３０Ｂを示すエントリ８３０を記憶することができる。テーブル８００は、通信アプリケーションが登録するときに、構築されて更新され得る。その後、シームレスな通話移行のためのユーザインタフェースオプションを提示するときを示すかどうか又はどのアプリケーションが示すかを決定するときに、テーブルを確認することができる。例えばアプリケーション３が優先アプリケーションである場合、このアプリケーションを、ユーザインタフェースオプションがアクティブ化されるときに起動されるアプリケーションとして（例えばテキスト、グラフィクス、ロゴ等により）示すことができる。
他の情報（例えばテキスト、アイコン、ロゴ又は他のグラフィクス）をテーブル内に記憶又は参照することもでき、ユーザインタフェース要素の一部として（例えば通話進行ＵＩの一部として）表示することができる。テーブルは、アプリケーションがシームレスな移行をサポートするかどうかを明示的に示すことができ、あるいはテーブルはそのような通信アプリケーションに制限されることもある。シームレスな移行の目的のために別個のプリファレンスを設定することができる。したがって、特定の通話タイプをサポートする複数のアプリケーションが存在する場合、サブセットがシームレスな移行をサポートしてもよい。サブセット内に複数のアプリケーションが存在する場合、通信アプリケーションのうちの特定のアプリケーションを、優先として指定することができる。
例では、単一の通話タイプについての通信アプリケーションを示すが、複数の通話タイプをサポートすることができる。異なるアプリケーションを、異なる通話タイプについての優先として指示することができる。
__例２１ − 通信アプリケーションの例示の構成__
図９は、通信タイプについて優先アプリケーションを選択するための例示の設定ユーザインタフェース９００のワイヤフレームである。この例では、通話の特定のタイプ（例えばビデオ）について、優先通信アプリケーションを選択するためのユーザインタフェースが表示されている。他の又は追加の通話タイプについてのユーザインタフェースをサポートすることができる。
優先アプリケーションを、ボックス９３０内に表示することができる。１つより多くの通信アプリケーションが利用可能である場合、ボックス９３０は、異なるアプリケーションの選択を可能にするドロップダウンボックスとすることができる。これに従って、本明細書で説明されるようなプリファレンスが更新され得る。
特定のアプリケーションを選択した結果（例えば選択されたアプリケーションが、通話進行ＵＩ内に表示されることになること）を説明する、説明テキスト９４０を表示することができる。アプリケーションがインストールされていない場合、インタフェースは、サポートする通信アプリケーションを取得した結果を示すテキスト９４０を表示することができる。例えばテキストは、ビデオを有する利点、シームレスな通話移行の利用可能性等を説明することができる（例えば「アップグレードアプリケーションにより通話をビデオ通話にアップグレードすることができることを御存知ですか？」）。
ユーザインタフェース９００は、本明細書で説明されるように、サポートするアプリケーションを取得することができるアプリケーション市場へのナビゲーションを可能にする、ユーザインタフェース要素９５０を表示することができる。
代替の技術は、アプリケーション自体を特定の通話タイプについての優先アプリケーションとして設定することを可能にすることができる。アプリケーションは、設定への直接アクセスを有する必要はない。例えば登録中に、アプリケーションは、（例えば通話タイプ、アプリケーション識別子等を特定する）ＡＰＩへのアクセスを有することができ、それ自体を優先アプリケーションとして設定することができる。構成に対する不正な変更を回避するために、ダイアログボックスを表示して変更を確認することができる（例えば「アプリケーションｘを、あなたの優先ビデオアプリケーションにしますか？はい／いいえ」）。アプリケーションは、ＡＰＩに照会して、それが既に優先されているかどうかを確かめることができる。優先になっている場合、変更は必要とされない。
__例２２ − 例示の利点__
本明細書で説明されるように、ユーザは、新たな処理について学習する必要なく、あるいは最初はデバイスの能力が存在することに気付くことさえ必要なく、自身のデバイスの能力を容易に利用することができる。
__例２３ − 例示のコンピューティングシステム__
図１０は、説明される革新の幾つかが実装され得る、適切なコンピューティングシステム又は環境１０００の一般的な例を図示している。本革新は、多様な汎用又は専用のコンピューティングシステムにおいて実装され得るので、コンピューティングシステム１０００は使用又は機能の範囲に関して如何なる限定を示唆するようにも意図されていない。本明細書で説明される通信デバイスは、説明されるコンピューティングシステム１０００の形をとることができる。
図１０に関連して、コンピューティングシステム１０００は、１つ以上の処理ユニット１０１０、１０１５及びメモリ１０２０、１０２５を含む。図１０では、この基本的構成１０３０は破線内に含まれる。処理ユニット１０１０、１０１５は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用の中央処理ユニット（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）内のプロセッサ又は任意の他のタイプのプロセッサとすることができる。マルチ処理システムでは、マルチ処理ユニットがコンピュータ実行可能命令を実行して、処理能力を向上させる。例えば図１０は、中央処理ユニット１０１０だけでなく、グラフィクス処理ユニット又はコプロセッシングユニット１０１５を示している。有形のメモリ１０２０、１０２５は、処理ユニットによってアクセス可能な、揮発性メモリ（例えばレジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えばＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ等）又はその２つの何らかの組合せであってよい。メモリ１０２０、１０２５は、本明細書で説明される１つ以上の革新を実装するソフトウェア１０８０を、処理ユニットによる実行に適したコンピュータ実行可能命令の形で記憶する。
コンピューティングシステムは、追加の特徴を有することがある。例えばコンピューティングシステム１０００は、ストレージ１００４０、１つ以上の入力デバイス１０５０、１つ以上の出力デバイス１０６０及び１つ以上の通信接続部１０７０を含む。バス、コントローラ又はネットワークといった相互接続機構（図示せず）が、コンピューティングシステム１０００のコンポーネントを相互接続する。典型的に、オペレーティングシステムソフトウェア（図示せず）が、コンピューティングシステム１０００内で動作する他のソフトウェアのための動作環境を提供し、コンピューティングシステム１０００のコンポーネントの動作を調整する。
有形のストレージ１０４０は、取外し可能であっても取外し不可能であってもよく、磁気ディスク、磁気テープ若しくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ又は非一時的に情報を格納するのに使用することができ、コンピューティングシステム１０００内でアクセス可能な任意の他の媒体を含む。ストレージ１０４０は、本明細書で説明される１つ以上の革新を実装するソフトウェア１０８０のための命令を記憶する。
入力デバイス１０５０は、キーボード、マウス、ペン若しくはトラックボールのようなタッチ入力デバイス、音声入力デバイス、スキャニングデバイス又はコンピューティングシステム１００に入力を提供する別のデバイスであってよい。ビデオエンコーディングのために、入力デバイス１０５０は、カメラ、ビデオカード、ＴＶチューナカード、あるいはアナログ又はデジタルの形のビデオ入力、コンピューティングシステム１０００へのビデオサンプルを読み取るＣＤ−ＲＯ又はＣＤ−ＲＷを受け入れる同様のデバイスであってよい。出力デバイス１０６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ又はコンピューティングシステム１０００からの出力を提供する別のデバイスであってよい。
通信接続部１０７０は、通信媒体上で別のコンピューティングエンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオ又はビデオ入力又は出力、あるいは変調データ信号内の他のデータのような情報を伝達する。変調データ信号は、信号内に情報をエンコードするような方法で設定又は変更された特性の１つ以上を有する信号である。限定ではなく例として、通信媒体は、電気、光、ＲＦ又は他の担体を使用することができる。
本革新を、コンピュータ読取可能媒体の一般的なコンテキストで説明することができる。コンピュータ読取可能媒体は、コンピューティング環境内でアクセス可能な任意の利用可能な有形の媒体である。限定ではなく例として、コンピューティングシステム１０００では、コンピュータ読取可能媒体は、メモリ１０２０、１０２５、ストレージ１０４０及び上記の任意の組合せを含む。
本革新を、コンピュータ実行可能命令の一般的なコンテキストで説明することもでき、コンピュータ実行可能命令は、例えばプログラムモジュールに含まれるか、対象の実際のプロセッサ又は（例えば最終的にハードウェア内で実行される）仮想プロセッサ上のコンピューティングシステム内で実行される。一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データタイプを実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラムモジュールの機能は、様々な実施形態で望まれるように、組み合わされてもよく、あるいはプログラムモジュール間に分割されてもよい。プログラムモジュールのためのコンピュータ実行可能命令は、ローカル又は分散コンピューティングシステム内で実行され得る。
「システム」及び「デバイス」という用語は、本明細書では交換可能に使用される。コンテキストにおいて、そうでないことを明示しない限り、いずれの用語もコンピューティングシステム又はコンピューティングデバイスのタイプに関するいかなる限定も示唆しない。一般に、コンピューティングシステム又はコンピューティングデバイスは、ローカルであっても分散させることもでき、本明細書で説明される機能を実装するソフトウェアを有する、専用のハードウェア及び／又は汎用のハードウェアの任意の組合せを含むことができる。
説明の目的で、詳細な説明では、「判断（決定）」及び「使用」等の用語を用いて、コンピューティングシステム内のコンピュータの動作を説明している。これらの用語は、コンピュータによって実行される動作についての高レベルな抽象であり、人間によって実行される動作と混同されるべきではない。これらの用語に対応する実際のコンピュータの動作は、実装に応じて変化する。
__例２４ − 例示のモバイルデバイス__
本明細書の例のいずれかにおいて、通信デバイスはモバイルデバイスの形をとることができる。図１１は、全体として１１０２で示される様々なオプションのハードウェア及びソフトウェアコンポーネントを含む、例示のモバイルデバイス１１００を示すシステム図である。モバイルデバイス内の全てのコンポーネント１１０２が任意の他のコンポーネントと通信することができるが、図の容易性のために必ずしも全ての接続を図示していない。モバイルデバイスは、様々なコンピューティングデバイス（例えばセルフォン、スマートフォン、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）等）のいずれかとすることができ、セルラネットワーク、サテライトネットワーク又は他のネットワークといった、１つ以上のモバイル通信ネットワーク１１０４との無線の双方向通信が可能である。（例えばWi-Fi又は他のネットワーク上での）ボイスオーバーＩＰシナリオもサポートすることができる。本明細書で説明される通信デバイスは、説明されるモバイルデバイス１１００の形をとることができる。
図示されるモバイルデバイス１１００は、上記タスクを信号の符号化、データ処理、入力／出力処理、電力制御及び／又は他の機能として実行するための、コントローラ又はプロセッサ１１１０（例えばシングルプロセッサ、マイクロプロセッサ、ＡＳＩＣ又は他のコントロール及び処理論理回路）を含むことができる。オペレーティングシステム１１１２は、コンポーネント１１０２の割当て及び利用を制御し、１つ以上のアプリケーションプログラム１１１４をサポートすることができる。アプリケーションプログラム１１１４は、一般のモバイルコンピューティングアプリケーション（例えば電子メールアプリケーション、カレンダ、連絡先マネージャ、ウェブブラウザ、メッセージングアプリケーション）又は任意の他のコンピューティングアプリケーションを含むことができる。アプリケーション１１１４を取得及び更新するために、アプリケーションストアにアクセスする機能１１１３を使用することもできる。
図示されるモバイルデバイス１１００は、メモリ１１２０を含むことができる。メモリ１１２０は、取外し不可能メモリ１１２２及び／又は取外し可能メモリ１１２４を含むことができる、取外し不可能メモリ１１２２は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ハードディスク又は他の周知のメモリストレージ技術を含むことができる。取外し可能メモリ１１２４は、フラッシュメモリ又はＧＳＭ（登録商標）通信システムで周知の加入者識別モジュール（ＳＩＭ）カード又は「スマートカード」のような他の周知のメモリストレージ技術を含むことができる。メモリ１１２０は、データ及び／又はコードを記憶し、オペレーティングシステム１１１２及びアプリケーション１１１４を実行するために使用され得る。例示のデータには、ウェブページ、テキスト、画像、サウンドファイル、ビデオデータ、あるいは１つ以上の有線又は無線ネットワークを介して１つ以上のネットワークサーバ又は他のデバイスへ送信及び／又はそのようなネットワークサーバ又はデバイスから受信する他のデータセットが含まれ得る。メモリ１１２０を使用して、ＩＭＳＩ（International Mobile Subscriber Identity）のような加入者識別子及びＩＭＥＩ（International Mobile Equipment Identifier）のような装置識別子を記憶することができる。そのような識別子を、ユーザ及び装置を識別するようネットワークサーバに伝送することができる。
モバイルデバイス１１００は、タッチスクリーン１１３２、マイクロフォン１１３４、カメラ１１３６、物理的なキーボード１１３８及び／又はトラックボール１１４０といった１つ以上の入力デバイス１１３０と、スピーカ１１５２及びディスプレイ１１５４といった１つ以上の出力デバイス１１５０をサポートすることができる。他の可能性のある出力デバイス（図示せず）は、圧電性又は他の触覚出力デバイスを含むことができる。一部のデバイスは、１つより多くの入力／出力機能を果たすことができる。例えばタッチスクリーン１１３２とディスプレイ１１５４を組み合わせて、単一の入力／出力デバイスにすることができる。
無線モデム１１６０をアンテナ（図示せず）に結合することができ、この無線モデム１１６０は、プロセッサ１１１０と、当技術分野で理解されるような外部デバイスとの間の双方向通信をサポートすることができる。モデム１１６０は、一般的に図示されており、モバイル通信ネットワーク１１０４と通信するためのセルラモデム及び／又は他の無線ベースのモデム（例えばBluetooth（登録商標）１１６４又はWi-Fi１１６２）を含むことができる。無線モデム１１６０は典型的に、ＧＳＭ（登録商標）やＣＤＭＡネットワークのような１つ以上のセルラネットワークとの通信のため、並びに単一のセルラネットワーク内、セルラネットワーク間又はモバイルデバイスと公衆交換電話網（ＰＳＴＮ）との間のデータ及び音声通信のために構成される。
モバイルデバイス１１００は、少なくとも１つの入力／出力ポート１１８０、電源１１８２、ＧＰＳ（Global Positioning System）レシーバのような衛星ナビゲーションシステムレシーバ１１８４、加速度計１１８６及び／又は物理的コネクタ１１９０を更に含むことができ、物理的コネクタ１１９０は、ＵＳＢポート、ＩＥＥＥ１３９４（FireWire（登録商標））ポート及び／又はＲＳ−２３２ポートとすることができる。いずれかのコンポーネントを削除することができ、他のコンポーネントを追加することができるので、図示されるコンポーネント１１０２は必須ではないか、全て包含しなくてもよい。
__例２５ − 例示のクラウドサポート環境__
図１２の例示の環境１２００において、クラウド１２１０は、様々な画面能力を有する接続デバイス１２３０、１２４０、１２５０のためのサービスを提供する。接続デバイス１２３０は、コンピュータ画面１２３５（例えば中程度のサイズの画面）を有するデバイスを表す。例えば接続デバイス１２３０は、デスクトップコンピュータ、ラップトップ、ノートブック、ネットブック等のようなパーソナルコンピュータであり得る。接続デバイス１２４０は、モバイルデバイス画面１２４５（例えば小さなサイズの画面）を有するデバイスを表す。例えば接続デバイス１２４０は、モバイルフォン、スマートフォン、パーソナルデジタルアシスタント、タブレットコンピュータ等であり得る。接続デバイス１２５０は、大きな画面１２５５を有するデバイスを表す。例えば接続デバイス１２５０は、テレビ画面（例えばスマートテレビ）又はテレビに接続される別のデバイス（例えばセットトップボックス又はゲームコンソール）等であり得る。接続デバイス１２３０、１２４０、１２５０のうちの１つ以上が、タッチスクリーン能力を含むことができる。タッチスクリーンは様々な方法で入力を受け入れることができる。例えば容量式タッチスクリーンは、物体（例えば指先又はスタイラス）がその表面にわたって流れる電流を妨げるか遮断すると、タッチ入力を検出する。別の例として、タッチスクリーンは、光学センサからのビームが遮断されると、タッチ入力を検出する光学センサを使用することができる。画面の表面との物理的な接触は、入力が一部のタッチスクリーンによって検出されることに必ずしも必要ではない。画面能力を持たないデバイスを例示の環境１２００で使用することもできる。例えばクラウド１２１０は、ディスプレイを持たない１つ以上のコンピュータ（例えばサーバコンピュータ）のためのサービスを提供することができる。
サービスは、クラウド１２１０によって、サービスプロバイダ１２２０を通して、あるいはオンラインサービスの他のプロバイダ（図示せず）を通して提供され得る。例えばクラウドサービスは、画面サイズ、ディスプレイ能力及び／又は特定の接続デバイス（例えば接続デバイス１２３０、１２４０、１２５０）のタッチスクリーン能力に対してカスタマイズされ得る。
例示の環境１２００において、クラウド１２１０は、少なくとも部分的にサービスプロバイダ１２２０を使用して、本明細書で説明される技術及び解決策を様々な接続デバイス１２３０、１２４０、１２５０に提供する。例えばサービスプロバイダ１２２０は、様々なクラウドベースのサービスのための集約的解決策を提供することができる。サービスプロバイダ１２２０は、ユーザ及び／又はデバイス（例えば接続デバイス１２３０、１２４０、１２５０及び／又はこれらのそれぞれのユーザ）についてサービス加入を管理することができる。
__例２６ − 例示の実装__
開示される方法の一部の動作は、説明の便宜上、特定の順番で説明されるが、特定の順序が以下で説明される具体的な言葉によって必要とされない限り、この説明の手法は再編成を含む。例えば順番に説明される動作は、一部の場合では、再編成されるか同時に実行されてよい。さらに、簡潔性の目的で、添付の図面は、開示される方法を他の方法とともに使用することができる、様々な方法を示していないことがある。
開示される方法のいずれかを、１つ以上のコンピュータ読取可能記憶媒体（例えば１つ以上の光媒体ディスクのような非一時的コンピュータ読取可能媒体、（ＤＲＡＭ又はＳＲＡＭのような）揮発性メモリコンポーネント又は（ハードドライブのような）不揮発性メモリコンポーネント）に格納され、コンピュータ（例えばスマートフォン又はコンピューティングハードウェアを含む他のモバイルデバイスを含む、任意の市販のコンピュータ）上で実行されるコンピュータ実行可能命令として実装することができる。開示される技術を実装するためのコンピュータ実行可能命令のいずれか、並びに開示される実施形態の実装中に作成及び使用される任意のデータを、１つ以上のコンピュータ読取可能媒体（例えば非一時的コンピュータ読取可能媒体）上に記憶することができる。コンピュータ実行可能命令を、例えば専用のソフトウェアアプリケーション、あるいはウェブブラウザ又は他のソフトウェアアプリケーション（例えばリモートコンピューティングアプリケーション）を介してアクセス又はダウンロードされるソフトウェアアプリケーションの一部とすることができる。そのようなソフトウェアは、例えば単一のローカルコンピュータ（例えば任意の適切な市販のコンピュータ）上で、あるいはネットワーク環境（例えばインターネット、ワイドエリアネットワーク、ローカエルエリアネットワーク、（クラウドコンピューティングネットワークのような）クライアンドサーバネットワーク又は他のそのようなネットワーク）内で１つ以上のネットワークコンピュータを使用して実行され得る。
明確性のために、ソフトウェアベースの実装の特定の選択された態様のみが説明される。当技術分野で周知の他の詳細は省略される。例えば開示される技術は、いずれかの特定のコンピュータ言語又はプログラムに限定されないことを理解されたい。例えば開示される技術は、C++、Java（登録商標）、Perl、JavaScript（登録商標）、Adobe（登録商標）Flash又は任意の他の適切なプログラミング言語によって実装され得る。同様に、開示される技術は、いずれかの特定のコンピュータ又はハードウェアのタイプに限定されない。適切なコンピュータ及びハードウェアの特定の詳細は周知であり、本開示で詳細に説明される必要はない。
さらに、ソフトウェアベースの実施形態（例えば開示される方法のいずれかをコンピュータに実行させるためのコンピュータ実行可能命令を備える）を、適切な通信手段を通してアップロードし、ダウンロードし、あるいはリモートでアクセスすることができる。そのような適切な通信手段には、例えばインターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル（ファイバ光ケーブルを含む）、磁気通信、電磁気通信（ＲＦ、マイクロ波、赤外線通信を含む）、電気通信又は他のそのような通信手段が含まれる。
開示される方法、装置及びシステムは、如何なる意味においても限定として解釈されるべきではない。代わりに、本開示は、単独並びに別のものとの様々な組合せ及び副次的組合せによる、様々な開示される実施形態の全ての新規で非自明な特徴及び態様に向けられる。開示される方法、装置及びシステムは、いずれかの具体的な態様又は特徴又はその組合せに限定されず、また開示される実施形態は、いずれか１つ以上の具体的な利点が存在すること又は課題が解決することを要しない。
__非一時的コンピュータ読取可能媒体__
本明細書におけるコンピュータ読取可能媒体のいずれかは、非一時的なもの（例えばメモリ、磁気ストレージ、光ストレージ等）とすることができる。
__コンピュータ読取可能媒体への記憶__
本明細書で説明される記憶動作のいずれかは、１つ以上のコンピュータ読取可能媒体（例えばコンピュータ読取可能記憶媒体又は他の有形の媒体）内に記憶することによって実装され得る。
記憶されるものとして説明されるもののいずれかを、１つ以上のコンピュータ読取可能媒体（例えばコンピュータ読取可能記憶媒体又は他の有形の媒体）内に記憶することができる。
__コンピュータ読取可能媒体における方法__
本明細書で説明される方法のいずれかは、１つ以上のコンピュータ読取可能媒体（例えばコンピュータ読取可能記憶媒体又は他の有形の媒体）内（例えばその上にエンコードされる）コンピュータ実行可能命令によって実装され得る。そのような命令は、コンピュータに方法を実行させることができる。本明細書で説明される技術を、様々なプログラミング言語で実装することができる。
__コンピュータ読取可能ストレージデバイスにおける方法__
本明細書で説明される方法のいずれかは、１つ以上のコンピュータ読取可能ストレージデバイス（例えばメモリ、磁気ストレージ、光ストレージ等）内に記憶されるコンピュータ実行可能命令によって実装され得る。そのような命令は、コンピュータに方法を実行させることができる。
__例示の組合せ__
様々な組合せがサポートされ得る。例えば着信ユーザインタフェースを、通話進行中ユーザインタフェース（例えば着信が受け入れられた後に）と組み合わせることができる。通話進行中ユーザインタフェースを（例えば通話がバックグラウンドに移る場合）バックグラウンドの通話進行ユーザインタフェースと組み合わせることができる。
通話進行中ユーザインタフェースを、（例えば通話中にホームユーザインタフェースへのナビゲーションが生じる場合）ホームユーザインタフェースと組み合わせることができる。そのような場合、バックグラウンドの通話進行中ユーザインタフェースも表示することができる。
同様に、通信を開始するためのユーザインタフェースを、他のユーザインタフェースのいずれかと組み合わせることも可能である。
__代替__
いずれかの例からの技術を、他の例のいずれか１つ以上において説明される技術と組み合わせることができる。「例示」という用語が使用される場合、理想的な実施形態ではなく、例を示すように意図される。開示される実施形態の原理を適用することができる多くの可能性のある実施形態の観点から、図示される実施形態は、開示される技術の例でると認識されるべきであり、開示される技術の範囲に対する限定として解釈されるべきではない。むしろ、開示される技術の範囲は、以下の特許請求の範囲によって網羅される範囲を含む。したがって、特許請求の範囲及びその精神にあるもの全てを本発明として請求する。
少なくとも部分的に通信デバイスによって実施される方法であって：
前記通信デバイスで第１の通話タイプの第１の通話が実施されている間に、第２の通話タイプの第２の通話へのシームレスな移行が可能であるかどうかを判断するステップであって、当該シームレスな移行が可能であるかどうかを判断するステップは、前記第２の通話タイプの通信アプリケーションが前記通信デバイスで利用可能であるかどうかを確認することを含む、ステップと；
シームレスな移行が可能であると判断したことに応答して、シームレスな移行へのユーザインタフェースオプションを提示するステップと；
前記ユーザインタフェースオプションのアクティブ化に応答して、前記第２の通話タイプの前記第２の通話へシームレスに移行するステップと；
を備える、方法。
前記シームレスな移行へのユーザインタフェースオプションを提示するステップは、
前記第１の通話を実施している間に、通話進行ユーザインタフェース内にグラフィカルボタンを提示することを備える、
請求項１に記載の方法。
前記グラフィカルボタンは、前記第２の通話タイプを示す、
請求項２に記載の方法。
ネットワーク状態が前記第２の通話タイプをサポートしないとき、前記のボタンをディスエーブルされるよう表示するステップ
を更に備える、請求項２に記載の方法。
前記第２の通話タイプをサポートする通信アプリケーションのインストール中に、前記第２の通話タイプを介してシームレスな移行を実施するときに使用されるように前記通信アプリケーションを登録するステップと；
前記登録に応答して、前記グラフィカルボタンを提示するステップと；
前記第２の通話タイプの前記第２の通話へシームレスに移行するステップは、
前記第２の通話タイプの前記第２の通話を開始することと；
前記第２の通話のオーディオを抑制することと；
前記第２の通話タイプの前記第２の通話の接続を確認することと；
を備える、請求項１に記載の方法。
前記第１の通話タイプはビデオを伴わないオーディオを備え、
前記第２の通話タイプはビデオを伴うオーディオを備え、
それにより、前記のシームレスに移行するステップは、オーディオ通話からビデオ通話へアップグレードする、
前記第２の通話タイプの通話をサポートする通信アプリケーションが、前記通信デバイスにインストールされていないと決定するステップと；
通話進行ユーザインタフェースの一部として、前記通信デバイスにおける前記通信アプリケーションのインストールプロセスを開始するオプションを提示するステップと；
を更に備える、請求項１に記載の方法。
前記第１の通話は、他の通信デバイスとの通話であり、
前記第２の通話タイプの第２の通話へのシームレスな移行が可能であるかどうかを判断するステップは、
前記他の通信デバイスが前記第２の通話タイプの通話をサポートするかどうかを判断することを備える、
通信デバイスであって：
１つ以上のプロセッサと；
実行可能なオーディオ通話アプリケーションと、実行可能なビデオ通話アプリケーションと、該実行可能なビデオ通話アプリケーションがシームレスな移行をサポートするかどうかを示すアプリケーション登録情報とを記憶する、メモリと；
通話を前記オーディオ通話アプリケーションから前記ビデオ通話アプリケーションへシームレスに移行するように構成される、通話コントローラと；