(57)【特許請求の範囲】
【請求項１】
ネットワークインターフェースと、
前記ネットワークインターフェースに連結されるプロセッサと、
前記プロセッサに連結され、前記プロセッサによって実行可能な複数の命令を記憶するように構成されるメモリと、を備える、モバイルデバイスであって、前記複数の命令は、
前記モバイルデバイスの前記メモリに記憶された機能ブロックによって、前記モバイルデバイスの前記メモリに記憶されたスーパーブロックアプリケーションからのオーディオ／ビデオ（Ａ／Ｖ）コールの要求を受け取る工程と、
前記機能ブロックによって、前記スーパーブロックアプリケーションが、前記機能ブロックによって提供されるＡ／Ｖコール機能へのアクセスを認可されていると判定する工程と、
前記機能ブロックによって、前記Ａ／Ｖコールが、前記モバイルデバイスの外部にあるリソースへのアクセスを要求していると判定する工程と、
前記機能ブロックによって、前記ネットワークインターフェースを介して前記スーパーブロックアプリケーションと前記リソースとの間の前記Ａ／Ｖコールを確立する工程であって、前記スーパーブロックアプリケーションによってサポートされていない、確立する工程と、
前記機能ブロックによって、前記モバイルデバイス上の前記スーパーブロックアプリケーションの表示ウィンドウ内において前記Ａ／Ｖコール用のビデオ出力をビデオウィンドウに提供する工程であって、前記モバイルデバイス上の別のアプリケーションのコンテキストに切り替えることなしに、前記ビデオウィンドウは、前記モバイルデバイスのスクリーン上で、前記スーパーブロックアプリケーションの前記表示ウィンドウと同時に表示される、提供する工程と、
前記機能ブロックによって、前記モバイルデバイスを介して、前記Ａ／Ｖコールのオーディオを提供する工程と、を含む、
前記モバイルデバイス。
【請求項２】
前記複数の命令はさらに、前記機能ブロックによって、前記機能ブロックが前記Ａ／Ｖコールを提供する能力を有するかどうかを判定する工程を含む、請求項１に記載の前記デバイス。
【請求項３】
前記複数の命令はさらに、前記機能ブロックによって、前記機能ブロックが前記Ａ／Ｖコールをレンダリングする能力を有するかどうかを判定する工程を含む、請求項２に記載の前記デバイス。
【請求項４】
前記複数の命令はさらに、前記機能ブロックによって、前記スーパーブロックが前記Ａ／Ｖコールをレンダリングする能力を有するかどうかを判定する工程を含む、請求項３に記載の前記デバイス。
【請求項５】
前記複数の命令はさらに、前記機能ブロックによって、前記Ａ／Ｖコールを確立する前に、前記リソースが現在利用できるかどうかを判定する工程を含む、請求項１に記載の前記デバイス。
【請求項６】
前記複数の命令はさらに、前記スーパーブロックアプリケーションが前記メモリにロードされ、実行されたときに、前記スーパーブロックアプリケーションによって、前記機能ブロックを初期化する工程を含む、請求項１に記載の前記デバイス。
【請求項７】
前記要求は、前記スーパーブロックアプリケーションから前記機能ブロックへのアプリケーションプログラミングインターフェース（ＡＰＩ）コールである、請求項１に記載の前記デバイス。
【請求項８】
前記複数の命令はさらに、前記機能ブロックによって、前記デバイスのユーザが、文書、ファイル、またはアプリケーションのうちの少なくとも１つに関して別のデバイス上のユーザと協働すること可能にする工程を含む、請求項１に記載の前記デバイス。
【請求項９】
モバイルデバイスのメモリに記憶された機能ブロックによって、前記モバイルデバイスの前記メモリに記憶されたスーパーブロックアプリケーションからのオーディオ／ビデオ（Ａ／Ｖ）コールの要求を受け取る工程と、
前記機能ブロックによって、前記スーパーブロックアプリケーションが、前記機能ブロックによって提供されるＡ／Ｖコール機能へのアクセスを認可されていると判定する工程と、
前記機能ブロックによって、前記Ａ／Ｖコールが、前記モバイルデバイスの外部にあるリソースへのアクセスを要求していると判定する工程と、
前記機能ブロックによって、前記ネットワークインターフェースを介して前記スーパーブロックアプリケーションと前記リソースとの間の前記Ａ／Ｖコールを確立する工程であって、前記スーパーブロックアプリケーションによってサポートされていない、確立する工程と、
前記機能ブロックによって、前記モバイルデバイス上の前記スーパーブロックアプリケーションの表示ウィンドウ内において前記Ａ／Ｖコール用のビデオ出力をビデオウィンドウに提供する工程であって、前記モバイルデバイス上の別のアプリケーションのコンテキストに切り替えることなしに、前記ビデオウィンドウは、前記モバイルデバイスのスクリーン上で、前記スーパーブロックアプリケーションの前記表示ウィンドウと同時に表示される、提供する工程と、
前記機能ブロックによって、前記モバイルデバイスを介して、前記Ａ／Ｖコールのオーディオを提供する工程と、
を含む、方法。
【請求項１０】
前記機能ブロックによって、前記機能ブロックが前記Ａ／Ｖコールを提供する能力を有するかどうかを判定する工程をさらに含む、請求項９に記載の前記方法。
【請求項１１】
前記機能ブロックによって、前記機能ブロックが前記Ａ／Ｖコールをレンダリングする能力を有するかどうかを判定する工程をさらに含む、請求項１０に記載の前記方法。
【請求項１２】
前記機能ブロックによって、前記スーパーブロックが前記Ａ／Ｖコールをレンダリングする能力を有するかどうかを判定する工程をさらに含む、請求項１１に記載の前記方法。
【請求項１３】
前記スーパーブロックアプリケーションが前記メモリにロードされ、実行されたときに、前記スーパーブロックアプリケーションによって、前記機能ブロックを初期化する工程をさらに含む、請求項９に記載の前記方法。
【請求項１４】
前記要求は、前記スーパーブロックアプリケーションから前記機能ブロックへのアプリケーションプログラミングインターフェース（ＡＰＩ）コールである、請求項９に記載の前記方法。
【請求項１５】
前記機能ブロックによって、前記デバイスのユーザが、文書、ファイル、またはアプリケーションのうちの少なくとも１つに関して別のデバイス上のユーザと協働すること可能にする工程をさらに含む、請求項９に記載の前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１３年９月１１日に出願された米国特許出願第１４／０２４，０２７号に対する優先権を主張するものであり、２０１３年７月１６日に出願された米国仮特許出願第６１／８４６，９５８号の利益を主張し、これらはどちらも参照によりその全体が本明細書に組み込まれる。
【背景技術】
【０００２】
モバイルデバイス環境等のある特定の環境において機能がアクセスされる様式は、性能及び／またはバッテリ寿命に影響を与え得る。故に、これらの問題に対処するシステム及び方法が必要である。
この出願の発明に関連する先行技術文献情報としては、以下のものがある（国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む）。
（先行技術文献）
（特許文献）
（特許文献１）  米国特許第８，４０７，５７６号明細書
（特許文献２）  米国特許第６，１９５，６９４号明細書
（特許文献３）  米国特許出願公開第２０１１／０１４１２２０号明細書
（特許文献４）  米国特許第８，２００，７９６号明細書
【図面の簡単な説明】
【０００３】
より完全な理解のために、次に、添付図面と関連してなされる以下の説明を参照する。
【図１】メモリを有するデバイス及びメモリ内に記憶されたスーパーブロックの一実施形態を例示する図である。
【図２Ａ】機能ブロックを追加した、図１のデバイスの一実施形態を例示する図である。
【図２Ｂ】スーパーブロックアプリケーションが、機能ブロックによって提供される追加機能と同時に表示される、図２Ａのデバイスの一実施形態を例示する図である。
【図３Ａ】スーパーブロックに組み込まれた、図２の機能ブロックの一実施形態を例示する図である。
【図３Ｂ】別のスーパーブロック内にネストされた、図３Ａのスーパーブロックの一実施形態を例示する図である。
【図３Ｃ】複数の部分でスーパーブロックの中へ組み込まれた、図２の機能ブロックの一実施形態を例示する図である。
【図４】スーパーブロック及び機能ブロック命令の実行を示すタイムラインの一実施形態を例示する図である。
【図５】図２の機能ブロックによって提供される機能にアクセスするために実行され得るプロセスの一実施形態のシーケンス図を例示する図である。
【図６Ａ】図５のプロセス中に機能ブロックがスーパーブロックに提供することができるサービスを決定し得るプロセスの一実施形態のフローチャートを例示する図である。
【図６Ｂ】図２の機能ブロックによって連結されるソース及びシンクを示す、線図の一実施形態を例示する図である。
【図６Ｃ】図６Ｂの線図のより詳細な実施形態を例示する図である。
【図７】スーパーブロックからのサービス要求に応答するために図２の機能ブロックによって実行され得るプロセスの一実施形態のシーケンス図を例示する図である。
【図８】機能ブロックが図７のサービス要求に応答して外部サービスを提供するかどうかを判定し得るプロセスの一実施形態のフローチャートを例示する図である。
【図９】外部サービスからの通知に応答するために図２の機能ブロックによって実行され得るプロセスの一実施形態のシーケンス図を例示する図である。
【図１０】機能ブロックが図９の通知をどのように取り扱うのかを判定し得るプロセスの一実施形態のフローチャートを例示する図である。
【図１１】図１のデバイスに使用され得るシステムの一実施形態を例示する図である。
【図１２】図２の機能ブロックの一実施形態を例示する図である。
【発明を実施するための形態】
【０００４】
以下の開示が、数多くの異なる実施形態または実施例を提供することを理解されたい。本開示を平易にするために、構成要素及び配設の具体的な実施例が下で説明される。当然、それらは、単なる実施例に過ぎず、限定することを意図しない。加えて、本開示は、種々の実施例における参照番号及び／または文字を繰り返し得る。この繰り返しは、簡潔さ及び明確さを目的とするものであり、それ自体は、論じられる種々の実施形態及び／または構成間の関係を決定付けるものではない。
【０００５】
図１を参照すると、一実施形態において、デバイス１００は、メモリ１０２を含む。メモリ１０２は、スーパーブロック１０４を記憶し、該スーパーブロックは、デバイス１００を介して１つまたは複数の機能を行うために使用される１組の実行可能命令であり得る。例えば、デバイス１００は、モバイルデバイスであり得、スーパーブロック１０４は、モバイルデバイス上のアプリケーション（「スーパーブロックアプリケーション」）であり得る。スーパーブロック１０４の命令は、モバイルデバイスのユーザが、通信、データ操作、及び／またはデータ管理等の１つまたは複数のアクションを行うことを可能にする。しかしながら、スーパーブロックアプリケーションの機能は、デバイス１００によって、及びスーパーブロック自体の命令によってある程度抑制される。
【０００６】
デバイス１００に関して、利用できるメモリの量、メモリ１０２がどのように構築されるか（例えば、セグメントサイズ）、及びメモリがどのように管理されるか（例えば、どのくらいのメモリがスーパーブロック１０４に割り当てられるか、別のアプリケーションが物理メモリを必要としたときにスワッピングがどのように起こるか、及び複数のアプリケーションがどのように扱われるか）は、全般的に、スーパーブロック１０４の制御の範囲外にある。しかしながら、モバイルデバイスは、しばしば、実行されている各アプリケーションについて別個のメモリ空間を提供し、よって、各アプリケーションについてメモリ境界を追跡しなければならない。この追跡は、処理時間及び電力等のリソースを必要とする。
【０００７】
さらに、ユーザがアプリケーション間を切り替える（例えば、コンテキストを切り替える）ときに、デバイス１００は、物理メモリとの間で命令をスワップしなければならない場合があり、これは、性能及びバッテリ寿命に影響を与える。デスクトップ及びラップトップコンピュータ等の他のデバイスではコンテキストの切り替えが起こるが、モバイルデバイスと比較して、そのようなデバイスに利用できるリソースの量がより多いので、全般的に、そのようなコンテキストの切り替えに使用されるリソースへの影響は少ない。例えば、モバイルデバイスは、全般的に、デスクトップ及びラップトップコンピュータ等のより大きいデバイスと比較して、より小さいメモリフットプリントを有するので、コンテキストの切り替えが起こったときにモバイルデバイスがメモリとの間でファイルをスワップすることが必要になり得るだけでなく、モバイルデバイスに関するプロセッサ負荷及びバッテリ寿命が、より多いリソースを有するより大きいデバイスよりも多くの悪影響を受ける可能性がある。加えて、単一のアプリケーションは、マルチスレッドを使用し得、したがって、異なるスレッドについてプロセッサ時間の割り当てを必要とするが、アプリケーション間のスワッピングは、全般的に、１つのモバイルデバイスについてよりリソース集約的なタスクである。
【０００８】
スーパーブロック１０４の命令に関して、命令によって提供されないスーパーブロックアプリケーションのために、追加機能が望まれ得る。例えば、スーパーブロックアプリケーションは、現在、特定のタイプのデータ及び／または動作（例えば、オーディオ、ビデオ、電子メール、及び／またはファイル転送）をサポートしていない場合があり、また、スーパーブロックアプリケーションがそうすることが望ましくない場合がある。そのような追加機能を提供するために、命令をスーパーブロック１０２に追加して、スーパーブロックアプリケーションに、データタイプ及び／または動作をサポートする能力を与えなければならない。このプロセスは、一般的に、所望の機能を含むためにスーパーブロックアプリケーションを再処理することが必要であり、よって、使用するためのスーパーブロックアプリケーションの更新されたバージョンを発行することが必要である。スーパーブロックアプリケーション及び所望の機能の複雑さ及び性質に応じて、このプロセスは、相当量の時間、労力、及び／または費用を費やし得る。
【０００９】
１つの代替例は、別のアプリケーションを使用して、所望の機能を提供することであるが、これは、十分な解決策にならない場合がある。例えば、スーパーブロック１０２が、電子メール機能を必要とするスーパーブロックアプリケーションを提供すると仮定する。現在のモバイルデバイス上に、ユーザは、一般的に、電子メールアドレス等のスーパーブロックアプリケーションの中のリンクを選択する。リンクの選択は、電子メールアプリケーションを開始するが（またはあるアプリケーションを既に実行している場合は、コンテキストを電子メールアプリケーションに切り替えるが）、それは、スーパーブロックアプリケーションからユーザを除去し、該ユーザを電子メールアプリケーションに配置する。次いで、ユーザは、スーパーブロックアプリケーションに再び切り替える前に、電子メールを構成して、スーパーブロックアプリケーションに送る。スーパーブロックアプリケーションから出て、いくつかの他の機能を行い、次いで、スーパーブロックアプリケーションに戻るこのプロセスは、現在、モバイルデバイスのユーザに共通して起こる。
【００１０】
しかしながら、このプロセスは、混乱を生じさせ、管理し難く、また、スーパーブロックアプリケーションからユーザを引き離す一方で、スーパーブロックアプリケーションのプロバイダは、ユーザがそのアプリケーションに引き続きとどまることを望む場合がある。さらに、スーパーブロックアプリケーションの機能は、他のアプリケーションに入っていない間は利用できず、よって、ユーザは、スーパーブロックアプリケーション及び他のアプリケーションの双方と対話するために、それらのアプリケーションの間を戻ったり進んだりしなければならない。これは、ユーザにとって非効率的であり、また、フラストレーションを引き起こし、さらに、双方のアプリケーションを同時に参照に利用できないので、電子メールのテキスト中の誤り数も増加させ得る。
【００１１】
別の例は、電話のためのビデオウィンドウである。ユーザが、スーパーブロックアプリケーションに入っていて、スーパーブロックアプリケーションが表示しているデータに関して質問があると仮定する。電話して質問に関して誰かと可視的に対話するが、それでもデータへのアクセスを有するために、ユーザは、電話のビデオウィンドウとスーパーブロックアプリケーションとの間を戻ったり進んだりしながら、電話を行わなければならない。これは、ユーザに多大な混乱を生じさせ、ただ音声に基づく以外に、視覚に基づいて誰かと対話する能力を含む、ビデオ電話の利点を制限する。
【００１２】
さらに別の例は、作業現場を歩き回り、自分の職務に従事しているユーザである。仮想会議に参加するために、ユーザは、スーパーブロックアプリケーションを出て、別のアプリケーションを使用して会議情報を見つけ、及び／またはそれに入り、そして、他のアプリケーションを使用して会議に参加しなければならない。上述の例と同様に、これは、ユーザに多大な混乱を生じさせ、時間を浪費し、そして、生産性を低下させる。
【００１３】
図２Ａ及び２Ｂを参照すると、別の実施形態において、機能ブロック２００がグルーポイント２０２（図２Ａ）を介してアタッチされる、図１のスーパーブロック１０４が例示される。図２Ａは、例示を目的としたものであり、メモリ１０２におけるスーパーブロック１０４及び機能ブロック２００の実際の配設を表していない場合があることを理解されたい。
【００１４】
機能ブロック２００は、別の場合であればスーパーブロック１０４によって保有されない１つまたは複数の機能（例えば、能力）をスーパーブロック１０４に提供するための命令を含む。そのような機能は、図１２で部分的に例示され、また、インスタントメッセージング、プレゼンス（例えば、オンライン、オフライン、及び不在）、オーディオ、ビデオ、協働（例えば、アプリケーション、文書、及び／またはファイルの共有）、ホワイトボード、ファイル転送、電子メール、バックグラウンド処理、通知のプッシュ、会議開催、会議、及び／または他の機能が挙げられる。先の例を続けると、機能ブロック２００は、スーパーブロック１０４のための電子メールまたはビデオ能力を提供し得るが、それは、そのような能力をスーパーブロックアプリケーション内に提供することによって行う。機能は、図２Ｂで示されるように（例えば、オーディオファイルを再生する事例において）視覚的に提供する必要はないが、スーパーブロックアプリケーションの表示から出ることなく、視覚機能も提示され得る。換言すれば、機能ブロック２００によって提供される追加機能にアクセスするために、コンテキストを電子メールアプリケーションに、または任意の他のアプリケーションに切り替える必要がない。
【００１５】
これを達成するために、スーパーブロック１０４に含まれる１組の命令として、機能ブロック２００が提供され得る。例えば、機能ブロック２００は、ソフトウェア開発者用キット（ＳＤＫ）として、または別様にはスーパーブロック１０４とは無関係な開発者による独立モジュールとして提供され得る。次いで、スーパーブロック１０４の開発者は、機能ブロック命令を編集するかまたは別様にはスーパーブロック１０４に含め得る。これは、モバイルデバイス１００によって別途他の場所に配置されない限り、機能ブロック２００がスーパーブロック１０４と同じメモリ空間を占有することを確実にする。例えば、スーパーブロック１０４は、モバイルデバイス１００がどのようにメモリ管理を取り扱うかに通じる制御を殆どまたは全く有しない可能性があるので、モバイルデバイスは、実際に、スーパーブロック１０４及び機能ブロック２００を構成する命令のいくつかまたは全てを分離し得る。しかしながら、スーパーブロック１０４の命令の中に機能ブロック２００の命令を含むことによって、命令が分離されるという可能性が最小になり得る。機能ブロック２００の独立した性質は、スーパーブロック１０４の開発者が、サービスにどのようにアクセスするかということ以外に、機能ブロック１００の動作に関する情報を殆ど必要としないことを意味する。
【００１６】
さらに、機能ブロック２００は、オペレーティングシステム環境に応じて、単一ブロックの命令として、または複数ブロックとして、開発者によって取り扱われ得る。例えば、機能ブロック２００は、ｉＯＳ（Ｃｕｐｅｒｔｉｎｏ，ＣａｌｉｆｏｒｎｉａにあるＡｐｐｌｅ  Ｉｎｃ．によって開発及び配布されるモバイルオペレーティングシステム）等の環境において、単一ブロックとして扱われ得、一方で、機能ブロック２００は、Ａｎｄｒｏｉｄ（Ｍｏｕｎｔａｉｎ  Ｖｉｅｗ，ＣａｌｉｆｏｒｎｉａにあるＧｏｏｇｌｅ  Ｉｎｃ．によってオープンソースとして発行されたモバイルオペレーティングシステム）等の環境において、複数ブロックとして扱われ得る。
【００１７】
機能ブロック２００は、スーパーブロックアプリケーションの一部として配布された後に設定可能であり得る。例えば、機能ブロック２００は、外部サービス２０４のサーバのネットワークアドレス情報等の、ある特定のパラメータへのアクセスを提供し得る。コールパラメータ（例えば、ペイロードサイズ）等の他のパラメータも設定可能であり得る。
【００１８】
機能ブロック２００は、自己内蔵様式のサービス（例えば、デバイス１００の以外のサポートを必要とすることなく提供され得る内部サービス）を提供し得るか、または１つまたは複数の外部サービス２０４を使用し得る。外部サービス２０４は、サーバ、ピアツーピアエンドポイントを介して、及び／または機能ブロック２００と通信することが可能である任意の他のソースによって提供され得る。例えば、デバイス１００がビデオを表示するための画面ならびに音声出力のためのスピーカー及び／またはヘッドセットを含むものと仮定すると、機能ブロック２００は、デバイス１００の外部に何も必要とすることなく、メモリ１０２に記憶されたファイルのためのオーディオ／ビデオ再生サービスを提供することが可能であり得る。
【００１９】
しかしながら、オーディオ／ビデオコールセッションについて、機能ブロック２００は、ローカルにオーディオ／ビデオを再生することができる場合であっても、セッションを確立するために、別のデバイスに接続する必要がある。他のデバイスに接続するために、機能ブロック２００は、サービス２０４を使用し得る。故に、機能ブロック２００がスーパーブロック１０４からの特定のサービス要求をどのように取り扱うかは、特定のサービス及びそのサービスのリソースの必要性に依存し得る。スーパーブロック１０４の観点から、スーパーブロック１０４は、単に機能ブロック２００からサービスを要求しているだけなので、機能ブロック２００がローカル及び／または外部サービスを使用するかどうかは重要でない。外部サービス２０４を使用する実施形態において、機能ブロック２００は、スーパーブロック１０４と外部サービス２０４との間のエンティティであるが、スーパーブロック１０４または外部サービス２０４のいずれも制御しない。
【００２０】
外部サービス２０４からの要求（例えば、着信ファイルの転送または電話）の事例において、機能ブロック２００によって行われる取り扱いもまた、特定のサービス及びそのサービスのリソースの必要性に依存し得る。例えば、機能ブロック２００は、通知をスーパーブロック１０４に送り、応答のために待機し得るか、または定義されたパラメータに従って、外部開始の要求を取り扱い得る。
【００２１】
先の例に戻ると、機能ブロック２００は、ユーザが、スーパーブロックアプリケーションから出ることなく、通知を受け取ること、電子メールを確認すること、及び電子メールを構成する／編集する／送る／管理することを可能にする電子メール機能を、スーパーブロックアプリケーションに提供し得る。オーディオ／ビデオ電話について、機能ブロック２００は、スーパーブロックアプリケーションの表示内に電話のためのビデオウィンドウを提供し得、ユーザが、ビデオウィンドウ及びスーパーブロックアプリケーションを同時に視認することを可能にする。ビデオウィンドウは、サイズ変更可能であり得、及び／または移動可能であり得る。作業現場を歩き回るユーザについて、機能ブロック２００は、そのユーザが、会議の通知の受け取り、会議の受諾、及び会議への参加の全てをスーパーブロックアプリケーション内で行うことを可能にし得る。これを達成するために、機能ブロック２００は、（例えば、サーバ上の）会議情報にフックし得、そして、これをスーパーブロックアプリケーションにおいてレンダリングし得る。
【００２２】
図３Ａを参照すると、スーパーブロック１０４の一実施形態は、スーパーブロック１０４が機能ブロック２００と対話することを可能にする際のグルーポイント２０２の役割を例示する。例えば、グルーポイント２０２は、アプリケーションプログラミングインタフェース（ＡＰＩ）であり得、スーパーブロック１０４は、機能ブロックの能力にアクセスするために、機能ブロック２００に対してＡＰＩコールを行い得る。次いで、機能ブロック２００は、ＡＰＩコールに応答して、サービスをスーパーブロック１０４に提供する。いくつかの実施形態において、外部サービス２０４によってトリガーされたイベントに応答して、機能ブロック２００はまた、通知もスーパーブロック１０４に提供し得る。
【００２３】
本実施例において、必要または所望に応じていくつかのカスタマイゼーションが行われ得るが、機能ブロック２００を構成する１組の命令は、数多くの異なるアプリケーションによって、数多くの異なるプラットフォーム上で使用され、また、ＡＰＩ２０２を介してアクセスされる。機能ブロック２００は、本明細書で説明されるタスクを行うために必要とされる知能を提供する１組の命令とみなされ得、その１組の命令は、編集され得るか、またはスーパーブロック１０４の命令の中へ組み込まれ得る。数多くの異なる必要性を満たすために、命令を数多くの異なるアプリケーションの中へ組み込むことができるので、機能ブロック２００によって提供される能力のいくつかは、特定のアプリケーションによって使用されない場合があるが、それでも存在し得る。他の実施形態では、機能ブロック２００のフットプリントを最小にするために、望まれない機能が除去され得る。
【００２４】
機能ブロック２００のためのヘッダーの一実施形態（Ａｍａｄｅｏブロックとしてヘッダテキストにおいて参照される）は、以下の通りである。
【００２５】
【数１】
0006470281.tif 000002
0006470281.tif 000003
0006470281.tif 000004
【００２６】
図３Ｂを参照すると、別の実施形態は、別のスーパーブロック２０６の一部であるようにスーパーブロック１０４を例示する。任意の数のネストしたスーパーブロックが存在し得ることを理解されたい。機能ブロック２００は、直接的に、またはスーパーブロック１０４を介して、スーパーブロック１０４だけにアクセス可能であり得るか、または他のスーパーブロックの１つまたは複数（例えば、スーパーブロック２０６）にアクセス可能であり得る。例えば、スーパーブロック２０６は、いくつかの実施形態において、機能ブロック２００に対してＡＰＩコールを直接行うことが可能であり得るか、または他の実施形態において、スーパーブロック１０４を通してコールを行うことだけが可能であり得る（例えば、スーパーブロック２０６は、サービスについてスーパーブロック１０４にコールし得、次に、スーパーブロック１０４は、そのサービスについて機能ブロック２００にＡＰＩコールを行い得る）。
【００２７】
図３Ｃを参照すると、上述したように、機能ブロック２００は、メモリにおいて単一ブロックである必要がないことを理解されたい。ブロック２００ａ及び２００ｂで例示されるように、（例えば、オペレーティングシステムの動作、及びそれがメモリ割り当てをどのように取り扱うかにより）機能ブロック２００は、異なる部分に自動的に分割され得るか、または（例えば、スーパーブロックアプリケーションの開発者によって）スーパーブロックアプリケーションへの統合化中に別個の部分として取り扱われ得る。
【００２８】
図４を参照すると、タイムライン４００の一実施形態は、１つまたは複数のサービスをスーパーブロックアプリケーションに提供するために機能ブロック２００の命令が実行されているときの、スーパーブロック１０４及び機能ブロック２００の同時動作を例示する。タイムライン４００は、左から右に移動し、５つの特定時間ｔ１〜ｔ５を含む。時間ｔ１では、（線４０２によって示されるように）スーパーブロックの命令は実行されているが、機能ブロック２００の命令は実行されていない。換言すれば、スーパーブロックアプリケーションは、使用中であり、また、任意のサービスを提供するために、機能ブロックＡＰＩにコールしていない。機能ブロック２００は、時間ｔ１で待機状態であり得、待機状態を維持するために機能ブロック２００の命令が実行され得るが、機能ブロック２００は、サービスを動的に提供していないことを理解されたい。
【００２９】
時間ｔ２では、スーパーブロックアプリケーションが機能ブロックＡＰＩにコールするか、または外部サービスが機能ブロック２００に連絡し、そして、ＡＰＩコールによって要求されるサービスを提供するために、または外部サービス２０４からの連絡を取り扱うために、（線４０４で示されるように）機能ブロック２００の命令が実行される。スーパーブロック１０４及び機能ブロック２００に関する命令は、時間ｔ２から時間ｔ３まで実行され、そのときに機能ブロック２００は不要になり、（例示の目的で、待機状態に入ることを含み得るが）シャットダウンされる。スーパーブロック命令は、時間ｔ３から時間ｔ４まで実行され、そのときに（線４０６によって示されるように）機能ブロック２００が再度コールされる。スーパーブロック１０４及び機能ブロック２００に関する命令は、時間ｔ４から時間ｔ５まで実行され、そのときに機能ブロック２００は不要になり、（例示の目的で、待機状態に入ることを含み得るが）シャットダウンされるが、スーパーブロックの命令は実行され続ける。
【００３０】
故に、モバイルデバイス上の２つの異なるアプリケーションは、一般的に、並行して実行しないので、図４で示されるようなスーパーブロック１０４及び機能ブロック２００のための命令の実行は、機能ブロック２００が、ＡＰＩコールの使用を通して、追加能力をスーパーブロック１０４に提供することを可能にする。ＡＰＩ等の機能ブロック２００のためのインターフェースを提供することによって、スーパーブロック１０４の命令は、機能ブロック２００によって提供される能力にアクセスするために、最小の修正しか必要とし得ない。
【００３１】
図５を参照すると、シーケンス図５００は、機能ブロック２００によって提供される機能にアクセスするために実行され得るプロセスの一実施形態を例示する。スーパーブロック１０４は、静的モデルまたは動的モデルの下で機能ブロック２００を使用し得る。静的モデルでは、スーパーブロック１０４が特定の機能（例えば、ビデオ）をコールし、機能ブロック２００が要求された機能を（利用できる場合に）提供し、スーパーブロック１０４が提供されたサービスを消費し、そして、機能ブロック２００がシャットダウンされる。動的モデルでは、機能ブロック２００が待機状態に入り、スーパーブロック１０４からの要求及び／または外部サービス２０４からの要求もしくは別のイベントトリガー（例えば、着信コール、電子メール、またはファイル転送）を待機し、要求を取り扱い、次いで、待機状態を再開し得る。
【００３２】
ステップ５０２で、スーパーブロック１０４は、機能ブロック２００をロック解除する。例えば、ロック解除プロセスは、スーパーブロック１０４が、鍵または他の認可インジケータを提供することにより機能ブロック２００によって提供される機能のいくつかまたは全てをロック解除するよう認可されることを示し得る。このステップは、スーパーブロック１０４を認可された機能に限定し得るだけでなく、他のアプリケーションが機能ブロックの能力にアクセスできないことも保証し得る。ステップ５０４で、機能ブロック２００が初期化される。これらのステップは、スーパーブロック１０４の初期化中に起こり得るか、またはスーパーブロック１０４が特定の機能について機能ブロック２００にコールしたとき等の、後で起こり得ることに留意されたい。例えば、ステップ５０２及び５０４は、スーパーブロックアプリケーションが起動されたときに起こり得、かつスーパーブロックアプリケーションが開かれている間は繰り返され得ず、スーパーブロックアプリケーションがサービスについて機能ブロックＡＰＩにコールする度に起こり得、特定のサービスに関してのみ起こり得、定義された期間にわたって起こり得（例えば、３０分毎に機能ブロック２００がロックし得る）、及び／または他のパラメータを使用して起こり得る。いくつかの実施形態では、ステップ５０２及び５０４が逆になり得ることを理解されたい。
【００３３】
初期化中または別の時間に、ポリシーが適用され得る。例えば、コストポリシーは、任意の利用できるＷｉ−Ｆｉネットワークが、３Ｇネットワークより先に使用されることを必要とし得る。セキュリティポリシーは、利用できる場合は常に、仮想プライベートネットワーク（ＶＰＮ）が使用されることを必要とし得る。バックグラウンド処理は、スーパーブロックアプリケーションをバックグラウンドで動作させることを可能にするために利用できるときに、オプションとして選択され得る。故に、機能ブロック２００は、所望により特定の挙動を提供するように構成され得、また、この挙動は、次に、スーパーブロック１０４の能力を限定し得るか、または強化し得る。
【００３４】
ステップ５０６及び５０８で、スーパーブロック１０４は、ログイン情報を機能ブロック２００に提供し得、機能ブロック２００は、この情報を使用して外部サービス２０４にアクセスし得る。例えば、機能ブロック２００が外部サービス２０４にアクセスするために認証証明書を必要とする場合、それらの外部サービスへのアクセスを獲得するために、ステップ５０６及び５０８を使用し得る。いくつかの実施形態において、ステップ５０６及び／または５０８は、ステップ５０２と組み合わせられ得、機能ブロック２００をロック解除することは、認可された及び／または利用できるどのような外部サービスにもログインすることを含み得る。
【００３５】
ステップ５１０で、機能ブロック２００及びスーパーブロック１０４は、能力交換を行い得る。より具体的には、機能ブロック２００は、（１）機能ブロック２００が特定の能力を有するかどうか、（２）機能ブロック２００がその能力をレンダリングできるかどうか、及び（３）スーパーブロック１０４がその能力をレンダリングできるかどうかを判定し得る。例えば、機能ブロック２００は、機能ブロック２００がオーディオを獲得し、そして、スピーカーを通してその獲得したオーディオを再生する能力を有すると判定し得る。
【００３６】
次に、機能ブロック２００は、例えば、利用できるマイクロホン（マイク）入力及び利用できるスピーカー出力があるかどうかを確認することによって、その能力をレンダリングできるかどうかを判定し得る。マイク及びスピーカーの一方または双方が存在しない場合、機能ブロック２００は、オーディオを取り扱う能力は有するが、オーディオをレンダリングする能力は有しない。スーパーブロック１０４は、オーディオのレンダリングには不要であるので、このプロセスには関与せず、よって、第３の判定が行われない場合がある。スーパーブロック１０４は、オーディオをレンダリングする際に関与しないが、スーパーブロック１０４は、アイコン、１つまたは複数の制御ボタン（例えば、再生及び停止）、及び／または他の視覚的な表現等によって、オーディオを視覚的に表し得ることを理解されたい。
【００３７】
別の例において、スーパーブロック１０４は、ビデオを表示することを望み得る。ここでも、機能ブロック２００は、機能ブロック２００がビデオを取り扱う能力を有すると判定し得る。次に、機能ブロック２００は、例えば利用できる画面があるかどうかを確認することによって、その能力をレンダリングできるかどうかを判定し得る。画面が存在しない場合、機能ブロック２００は、ビデオを取り扱う能力は有するが、ビデオをレンダリングする能力は有しない。この例において、スーパーブロック１０４は、ビデオをレンダリングするためにビデオウィンドウを提供することが必要であるので、このプロセスに関与し（例えば、機能ブロック２００は、レンダリングされるビデオデータを提供し得、スーパーブロック１０４は、そのビデオデータをビデオウィンドウの中に配置し得る）、よって、第３の判定が行われる。
【００３８】
そのような決定を行うことによって、機能ブロック２００は、利用できる機能をスーパーブロック１０４に通知することが可能である。機能が外部サービス２０４を必要とする場合、接続の不足は、機能ブロック２００が外部サービスをスーパーブロック１０４に送達することを妨げ得るが、それでも、ローカルサービスは提供され得る。画面、スピーカー、または他の宛先（例えば、シンク）が利用できない場合がある間、機能ブロック２００は、後で使用するためにビデオまたはオーディオが記憶されたメモリ等の二次シンクを使用して、いくつかのサービスを取り扱い得ることを理解されたい。
【００３９】
追加的に図６Ａを参照すると、フローチャート６００は、図５のステップ５１０の能力交換のためのプロセスの一実施形態を例示する。ステップ６０２で、機能ブロック２００は、（能力交換が初期化時に行われる実施形態において）初期化され得るか、または機能ブロック２００は、（サービスが要求されたときに能力交換が起こる実施形態において）サービスの要求を受け取り得る。
【００４０】
ステップ６０４で、機能ブロック２００が特定の能力を有するかどうかに関して判定が行われる。例えば、機能ブロック２００がオーディオ／ビデオコールをサポートする能力を有するかどうか、である。ステップ６０４の判定で、機能ブロック２００が特定の能力を有しないとされた場合、方法６００は、ステップ６０６に移動し、その能力は利用できないものとして示される。特定の能力がロック解除されていなかった場合、機能ブロック２００は、機能ブロック２００が実際にその能力を提供することができる場合であっても、その能力が利用できないと示し得ることに留意されたい。ステップ６０４の判定で、機能ブロック２００が特定の能力を有するとされた場合、方法６００は、ステップ６０８に移動する。
【００４１】
ステップ６０８で、機能ブロック２００が上で説明されるように能力をレンダリングできるかどうかに関して判定が行われる。このステップは、デバイス１００が、必要とされる機能をサポートするかどうか（例えば、オーディオ入力が必要である場合にマイクロホンを有するか、またはオーディオ出力が必要である場合にスピーカーを有するか）を判定し得る。ステップ６０８の判定で、機能ブロック２００が能力をレンダリングできないとされた場合、方法６００は、ステップ６０６に移動し、その能力は利用できないものとして示される。ステップ６０８の判定で、機能ブロック２００が能力を有するとされた場合、方法６００は、ステップ６１０に移動する。
【００４２】
ステップ６１０で、能力を提供するために外部サービス２０４が必要であるかどうかに関して判定が行われる。ステップ６１０の判定で、外部サービス２０４が不要であるとされた場合、方法６００は、ステップ６１４に移動する。ステップ６１０の判定で、外部サービス２０４が必要であるとされた場合、方法６００は、ステップ６１２に移動する。
【００４３】
ステップ６１２で、必要とされる外部サービス２０４が利用できるかどうかに関して判定が行われる。例えば、外部サービス２０４は、オフラインであり得る（例えば、サービスを提供するために使用されるサーバが無応答であり得るか、またはデバイス１００がネットワーク接続性を殆どまたは全く有し得ない）。このステップはまた、スーパーブロックアプリケーションが外部サービス２０４へのアクセスを認可されているかどうか（例えば、外部サービスがスーパーブロックアプリケーションによるアクセスを可能にするかどうか）も判定し得る。ステップ６１２の判定で、必要とされる外部サービス２０４が利用できないとされた場合、方法６００は、ステップ６０６に移動し、その能力は利用できないものとして示される。ステップ６１２の判定で、必要とされる外部サービス２０４が利用できるとされた場合、方法６００は、ステップ６１４に移動する。
【００４４】
ステップ６１４で、上で説明されるように能力をレンダリングするためにスーパーブロック１０４が必要であるかどうかに関して判定が行われる。ステップ６１４の判定で、能力をレンダリングするためにスーパーブロック１０４が不要であるとされた場合、方法６００は、ステップ６１８に移動し、そのサービスが利用できるものとして示される（例えば、能力リストが更新され、及び／またはサービスが提供される）。ステップ６１４の判定で、能力をレンダリングするためにスーパーブロック１０４が必要であるとされた場合、方法６００は、ステップ６１６に移動する。
【００４５】
ステップ６１６で、スーパーブロック１０４が上で説明されるように能力をレンダリングできるかどうかに関して判定が行われる。ステップ６１６の判定で、スーパーブロック１０４が能力をレンダリングできないとされた場合、方法６００は、ステップ６０６に移動し、その能力は利用できないものとして示される。ステップ６１６の判定で、スーパーブロック１０４が能力を有するとされた場合、方法６００は、ステップ６１８に移動する。
【００４６】
スーパーブロック１０４及び／または機能ブロック２００は、利用できる能力を列記するためのテーブルまたは他の構造を使用し得る。例えば、テーブルは、特定のサービス、スーパーブロック１０４がサービスへのアクセスを認可されるかどうか、機能ブロック２００がサービスをサポートできるかどうか、機能ブロック２００がサービスをレンダリングできるかどうか、サービスをレンダリングするためにスーパーブロック１０４が必要であるかどうか、及びスーパーブロック１０４が必要に応じてサービスをレンダリングできるかどうかを識別し得る。この情報は、全ての実施形態において詳細に提供され得るのではなく、サービスが利用できるかどうかという単純な指示に凝縮され得ることを理解されたい。しかしながら、追加レベルの詳細を提供することによって、より有用なインジケータが提供され得る。例えば、スーパーブロックアプリケーションは、単にオーディオサービスが利用できないことを示すのではなく、特定のサービスが認可されていないこと、またはスピーカーが利用できないことを示すことが可能であり得る。
【００４７】
表１は、機能ブロック２００がデバイス１００上のスーパーブロック１０４に提供することができる能力を追跡するために使用され得るマッピング表の一実施形態を例示する。このマッピング表は、特定のサービスに対して必要であるときにデバイス１００がネットワークアクセスを有しているかどうか等の、異なるシナリオにおいて同じ機能ブロック２００、スーパーブロック１０４、及びデバイス１００について異なり得ることを理解されたい。例示の目的で、第１の列は、機能ブロック２００によってサポートされるサービスを列記し、第２の列は、そのサービスがデバイスによってサポートされるかどうか（例えば、機能ブロック２００がサービスをレンダリングできるかどうか）を識別し、第３の列は、スーパーブロックアプリケーションが（必要に応じて）サービスをレンダリングできるかどうかを識別し、第４の列は、外部サービス２０４が（必要に応じて）サービスをサポートするかどうかを識別し、そして、第５の列は、スーパーブロックアプリケーションがそのサービスに対する認可権を有するかどうかを識別する。
【００４８】
いくつかの実施形態において、サービス列は、スーパーブロックアプリケーションがアクセスを認可されるサービスに限定され得る。例えば、機能ブロック２００がインスタントメッセージングをサポートするが、スーパーブロックアプリケーション１０４がこの特徴を使用することが認可されていない場合、特定の実装に応じて、サービスがマッピング表の中に現れる場合もあり、またはそうでない場合もある。追加的な列は、必要とされる外部サービスが現在利用可能であるかどうかを識別するために使用され得るか、または第４の列は、この情報を示すために使用され得る。
【００４９】
【表１】
0006470281.tif 000005
【００５０】
例示の目的で、第１のサービスは、ファイルからビデオを再生することに関与し、また、デバイス１００及びスーパーブロック１０４の双方によってサポートされる。外部サービス２０４は不要であり、また、利用できないものとしてマークされる。第２のサービスは、ローカルオーディオファイルを再生することに関与し、また、デバイス１００によってサポートされる。スーパーブロック１０４及び外部サービス２０４は不要であり、また、利用できないものとしてマークされる。第３のサービスは、ストリーミングオーディオファイルを再生することに関与し、また、デバイス１００及び外部サービス２０４によってサポートされる。スーパーブロック１０４は不要であり、また、利用できないものとしてマークされる。第４のサービスは、コンテンツを共有することを含み、また、デバイス１００及びスーパーブロック１０４によってサポートされるが、外部サービス２０４によってサポートされない。本実施例では、共有するために外部サービス２０４が必要であるので、このサービスは、スーパーブロックアプリケーションで利用できない。第５のサービスは、インスタントメッセージングに関与し、また、デバイス１００及び外部サービス２０４によってサポートされるが、スーパーブロック１０４によってサポートされない。
【００５１】
第６のサービスは、ホワイトボードに関与するが、スーパーブロック１０４は、このサービスにアクセスすることが認可されず、よって、能力は確認されない。他の実施形態では、認可されていないサービスの能力が確認され得、サポートされている場合、スーパーブロックアプリケーションは、サービスが認可されていないことをユーザに通知し得る。そのような実施形態では、ユーザが加入すること、または別様には、許可された場合にサービスへのアクセスを獲得することを可能にする、ダイアログまたは他のオプションが現れ得る。
【００５２】
追加的に図６Ｂを参照すると、線図６３０は、ソース／シンクの観点から、図６Ａのプロセスの視覚的な実例を提供する。機能ブロック２００がソース６３２及びシンク６３４を成功裏にブリッジしてサービスを提供するためには、それぞれ線６３６及び６３８によって示されるように、ソース６３２及びシンク６３４の双方が存在し、かつ機能ブロック２００で利用できなければならない。ソース６３２は、スーパーブロック１０４、外部サービス２０４、ならびに／または無線インターフェース、マイクロホン、カメラ、及び／または入力を機能ブロック２００に提供することができる任意の他の構成要素等のデバイス１００の構成要素であり得る。シンク６３２は、スーパーブロック１０４、外部サービス２０４、ならびに／または無線インターフェース、スピーカー、ディスプレイ画面、及び／または機能ブロック２００から出力を受け取ることができる任意の他の構成要素等のデバイス１００の構成要素であり得る。いくつかの事例において、シンクの可用性の欠如は、ダミーシンクの使用（例えば、利用できるいかなるスピーカーもないときに、オーディオをメモリに書き込むこと）をもたらし得る。
【００５３】
ソース６３２及びシンク６３４によって提供されるソース／シンクモデルは、一般的なものとみなされ得ることを理解されたい。例えば、デバイスレベルで、ソース６３２及びシンク６３４は、データを読み出す／送るように動作する。ネットワークインターフェースレベルで、ネットワークインターフェースは、大部分の最新のデバイスにおいて同時に読み出し／書き込みを行うことを可能にするので、両側がソース／シンクの双方として作用する。対照的に、マイクロホンは、ソースであり、スピーカーは、シンクである。スピーカーは、複数のオーディオソースが単一のスピーカーに混合された場合等の、いくつかの事例において、複数のデータのためのシンクとしての役割を果たし得る。このシナリオにおいて、オーディオデータをレンダリングするためのソースは、マイクロホン、ネットワークオーディオ符号化データ、デバイス上の音楽ファイル、及び／または他のソースであり得る。ソース／シンクモデルは、サービスレベルの消費者／生産者モデルについても考慮することができる。例えば、機能ブロック２００は、クライアント側の能力をサーバに提示するためのソースとみなされ得ると同時に、サーバによって提示される能力をレンダリングするためのシンクとみなされ得る。
【００５４】
追加的に図６Ｃを参照すると、線図６４０は、図６Ｂのより詳細な実例を提供する。ソース６４２は、マイクロホンであり、機能ブロック２００は、マイクロホンから獲得したオーディオを、外部サービス２０４を表すシンク６４４に（例えば、電話のためのアウトバウンドオーディオとして）送ることである。機能ブロック２００がソース６４２及びシンク６４４を成功裏にブリッジするためには、それぞれ線６４６及び６４８によって示されるように、ソース６４２及びシンク６４４の双方が存在し、かつ機能ブロック２００で利用できなければならず、ソース６４２、シンク６４４、及び機能ブロック２００は、サービスを取り扱うことができなければならない。機能ブロック２００が一連のスイッチを介してサービスを提供していると考えられる場合は、線６４６及び６４８の双方を閉じて、ソース６４２及びシンク６４４を接続しなければならない。故に、図６Ａのプロセスは、機能ブロック２００がオーディオ入力をレンダリングすることができること、及び外部サービスへの接続が有効である（例えば、スイッチを閉じることができる）ことを確実にするために実行され得る。
【００５５】
本実施例では、線６５０によって表される１つまたは複数のフロー層も表し得る。例えば、線６５０は、オーディオ保持が存在するかどうかを表し得る。オーディオが保持されたままである場合、機能ブロック２００は、オーディオパイプラインを停止するよう通知する（例えば、スイッチが開かれる）。オーディオ獲得は、継続され得るが、機能ブロック２００によって形成される回路がもはや完全でなくなるので、レンダリングはされない（シンク６４４によって表される外部サービスに送られない）。
【００５６】
再度図５を参照すると、ステップ５１２で、機能ブロック２００は、静的モデルの下で動作している場合にはシャットダウンし得るか、または動的モデルの下で動作している場合には待機モードに入り得る。ステップ５１４で、機能ブロック２００は、スーパーブロック１０４または外部サービス２０４によって要求された場合に、１つまたは複数のサービスをスーパーブロック１０４に提供し得る。ステップ５１２及び５１４は、スーパーブロックアプリケーションが動作している間に、任意の回数繰り返し得ることを理解されたい。いかなるサービスも要求されなかった場合、ステップ５１４は実行されない。
【００５７】
ステップ５１６及び５１８で、スーパーブロック１０４は、任意のサービス要求をファイナライズし、機能ブロック２００をシャットダウンし得る。例えば、スーパーブロックアプリケーションが閉じている場合、スーパーブロック１０４は、機能ブロック２００が（例えば、外部サービス２０４との）任意の開いたポートを閉じ、かつ任意の動作中のプロセスを終了させるべきであることを機能ブロック２００に通知するために、機能ブロック２００に対して１つまたは複数のＡＰＩコールを使用し得る。
【００５８】
図７を参照すると、シーケンス図７００は、スーパーブロック１０４によって要求されるサービスに応答して、機能ブロック２００によってサービスを提供するために実行され得るプロセスの一実施形態を例示する。本実施例は、静的モデルまたは動的モデルいずれかの下で動作し得る。プロセスは、図５のステップ５１２から始まるが、本実施例では詳細に説明されない。
【００５９】
ステップ７０２で、スーパーブロック１０４は、ＡＰＩコールまたは別の適切な方法を使用して、機能ブロック２００にサービスの要求を発行する。ステップ７０４で、機能ブロック２００は、外部サービス２０４から任意の必要とされるサポートを取得する。ステップ７０６で、機能ブロック２００は、サービスをスーパーブロック１０４に提供する。ステップ７０８で、機能ブロック２００は、ステップ５１２を繰り返し得、そして、機能ブロック２００が静的モデルの下で動作しているか、または動的モデルの下で動作しているかに依存して、シャットダウンし得るか、または待機モードに入り得る。
【００６０】
図８を参照すると、フローチャート８００は、図７のステップ７０４に関して起こり得るような、外部サービス２０４にアクセスするためのプロセスの一実施形態を例示する。ステップ８０２で、機能ブロック２００は、（図７のステップ７０２で起こるように）スーパーブロック１０４から要求を受け取る。ステップ８０４で、要求を取り扱うために機能ブロック２００が外部サービスを使用する必要があるかどうかに関して判定が行われる。ステップ８０４の判定で、いかなる外部サービスも必要でないことを示した場合、方法８００は、ステップ８０６に移動する。ステップ８０６で、機能ブロック２００によってサービスが提供される。ステップ８０４の判定で、外部サービスが必要であることを示した場合、方法８００は、ステップ８０８に移動する。
【００６１】
ステップ８０８で、外部サービスが利用できるかどうかに関して判定が行われる。ステップ８０８の判定で、外部サービスが利用できることを示した場合、方法８００は、ステップ８１０に移動し、そこでは、通信及び／またはサービスの提供に必要とされる任意のパラメータが、機能ブロック２００と外部サービス２０４との間でネゴシエートされ得る。そのようなパラメータは、帯域幅、コーデック、及び／または類似の情報等の、シグナリング及び媒体パラメータの双方を含み得、また、一般的に、特定のサービスに依存する。
【００６２】
方法８００は、次いで、ステップ８０６に移動し、そこでは、機能ブロック２００によってサービスが提供される。ステップ８０８の判定で、外部サービスが利用できないことを示した場合、方法８００は、ステップ８１２に移動する。ステップ８１２で、機能ブロック２００は、サービスが利用できないことを示し得る。例えば、機能ブロック２００は、サーバが応答していないこと、またはデバイス１００のためのいかなるネットワーク接続もないことを示し得る。
【００６３】
図９を参照すると、シーケンス図９００は、外部サービス２０４からの通知に応答して、機能ブロック２００によってサービスを提供するために実行され得るプロセスの一実施形態を例示する。本実施例は、外部サービス２０４から通知を受け取るために機能ブロック２００がリスニングモードであるときに、動的モデルの下で動作し得る。プロセスは、図５のステップ５１２から始まるが、本実施例では詳細に説明されない。
【００６４】
ステップ９０２で、外部サービス２０４は、外部サービス２０４がスーパーブロック１０４のための何かを有するという通知を、機能ブロック２００に発行する。ステップ９０４で、機能ブロック２００は、スーパーブロック１０４に通知を渡し得る。ステップ９０４は、実際には通知を渡さない場合があるが、ステップ９０２の通知は、スーパーブロック１０４に通知する役割を果たす、機能ブロック２００内の機能をトリガーし得ることを理解されたい。例えば、ステップ９０２の通知が電話の着信に関するものである場合、機能ブロック２００は、通知を受け取り得、電話の応答の表示（例えば、通話を受け入れるか、または拒否するためのオプションを伴う表示）を開始し得、そして、その様式で情報をスーパーブロック１０４に提供し得る。別の実施例において、ステップ９０２の通知は、プレゼンス変更（例えば、ユーザが、オフラインからオンラインに状態を変更する）であり得、機能ブロック２００は、スーパーブロックアプリケーションの表示内のプレゼンスインジケータを更新し得る。さらに別の実施例において、機能ブロック２００は、イベントシステムを使用し得、また、イベント通知をスーパーブロック１０４に送り得る。故に、いくつかの通知は、スーパーブロックアプリケーションのユーザ側に対してアクションを必要とし得る一方で、他の通知は、アクションを必要とし得ない。
【００６５】
本実施例において、通知は、応答を必要とし、そしてステップ９０６で、サービス（例えば、電話）を要求する及び／または受け入れることによって、スーパーブロック１０４が応答する。ステップ９０８で、機能ブロック２００は、スーパーブロック１０４と外部サービス２０４との間でサービスを取り扱う。換言すれば、機能ブロック２００は、外部サービス２０４とスーパーブロック１０４との間でインターフェースとしての役割を果たす。例えば、機能ブロック２００は、電話をブリッジし得、待機中の通話及び他の通話の特徴を取り扱い得、また、別の場合であれば、スーパーブロックアプリケーションのサポートを提供し得る。ステップ９１０で、機能ブロック２００は、サービスが提供された後に待機モードに入り得る。
【００６６】
図１０を参照すると、フローチャート１０００は、図９に関して起こり得るような、外部サービス２０４に関して機能ブロック２００によって実行するためのプロセスの一実施形態を例示する。ステップ１００２で、機能ブロック２００は、外部サービス２０４から通知を受け取る。ステップ１００４で、機能ブロック２００がスーパーブロック１０４からの命令を必要とするかどうかに関して判定が行われる。ステップ１００４の判定で、命令が必要であることを示した場合、方法１０００は、ステップ１００６に移動する。ステップ１００６で、機能ブロック２００は、サービスが要求されていることをスーパーブロック１０４に示す。方法１０００は、次いで、ステップ１００８に移動する。
【００６７】
ステップ１００８で、サービス要求がスーパーブロック１０４によって承認されたかどうかに関して判定が行われる。ステップ１００８の判定で、要求が承認されなかったことを示した場合、方法１０００は、ステップ１０１０に移動し、そこでは、通知が拒否され得るか、無視され得るか、または別様には取り扱われ得る。ステップ１０１０における機能ブロック２００の実際の応答は、通知のタイプに応じて変動し得ることを理解されたい。例えば、機能ブロック２００は、通話が拒否されたことを外部サービス２０４に示し得る。ステップ１００８の判定で、要求が承認されたことを示した場合、方法１０００は、ステップ１０１２に移動し、そこでは、機能ブロック２００がサービスの提供を取り扱い得る。
【００６８】
ステップ１００４に戻ると、ステップ１００４の判定で、命令が不要であることを示した場合、方法１０００は、ステップ１０１４に移動する。ステップ１０１４で、通知に基づいてスーパーブロック１０４を更新するべきであるかどうかに関して判定が行われる。ステップ１０１４の判定で、スーパーブロック１０４を更新する必要がないことを示した場合、方法１０００は、ステップ１０１０に移動し、そこでは、通知が拒否され得るか、無視され得るか、または別様には取り扱われ得る。ステップ１０１４の判定で、スーパーブロック１０４を更新するべきであることを示した場合、方法１０００は、ステップ１０１６に移動し、そこでは、更新が行われ得る。例えば、別のユーザのプレゼンス状態は、オンラインからオフラインに、またはその逆に更新され得る。
【００６９】
再度図１を参照すると、デバイス１００の実施形態としては、携帯電話（スマートフォンを含む）、パーソナルデジタルアシスタント（ＰＤＡ）、ネットブック、タブレット、ラップトップ、デスクトップ、ワークステーション、テレプレゼンスコンソール、ならびに無線及び／または有線の通信リンクを使用して別のコンピューティングデバイスと通信できる任意の他のコンピューティングデバイスが挙げられる。そのような通信は、（例えば、ピアツーピアネットワーク、アドホックネットワーク、または直接接続の使用を介した）直接通信であり得るか、（例えば、クライアント−サーバモデルにおいて）サーバもしくは他のプロキシを通す等の間接通信であり得るか、または直接通信及び間接通信の組み合わせを使用し得る。図示されていないが、他の実施形態において、デバイス１００は、特定用途向け集積回路（ＡＳＩＣ）、プロセッサ、または機能ブロック２００が組み込まれ得る別のデバイスであり得る。いくつかの実施形態では、外部アクセスが不要であり得る。故に、機能ブロック２００は、数多くの異なる方法で、及び数多くの異なるタイプのシステムで実現され得、また、必要に応じて、特定の環境内で動作するようにカスタマイズされ得る。
【００７０】
図１１を参照すると、システム１１００の一実施形態が例示される。システム１１００は、図１のデバイス１００等のデバイスの１つの可能な実施例である。システム１１００は、コントローラ（例えば、中央処理ユニット（「ＣＰＵ」））１１０２と、メモリユニット１１０４と、入力／出力（「Ｉ／Ｏ」）デバイス１１０６と、ネットワークインターフェース１１０８とを含み得る。構成要素１１０２、１１０４、１１０６、及び１１０８は、輸送システム（例えば、バス）１１１０によって相互接続され得る。電力供給源（ＰＳ）１１１２は、電力システム１１１４（輸送システム１１１０を伴って例示されているが、異なる場合もある）を介して、ＣＰＵ１１０２及びメモリユニット１１０４等のコンピュータシステム１１００の構成要素に電力を提供し得る。システム１１００が異なって構成され得ること、及び列記された構成要素のそれぞれが実際には複数の異なる構成要素を表し得ることを理解されたい。例えば、ＣＰＵ１１０２は、実際には、マルチプロセッサまたは分散処理システムを表し得、メモリ装置１１０４は、異なるレベルのキャッシュメモリ、メインメモリ、ハードディスク、及びリモート記憶場所を含み得、Ｉ／Ｏデバイス１１０６は、モニタ、キーボード、及び同類のものを含み得、ならびにネットワークインターフェース１１０８は、１つまたは複数の有線及び／または無線接続をネットワーク１１１６に提供する、１つまたは複数のネットワークカードを含み得る。したがって、コンピュータシステム１１００の構成では、広範囲にわたる柔軟性が予想される。
【００７１】
システム１１００は、Ｍｉｃｒｏｓｏｆｔ（ＷＩＮＤＯＷＳ（登録商標）等）、Ａｐｐｌｅ（Ｍａｃ  ＯＳ  Ｘ等）、ＵＮＩＸ（登録商標）、及びＬＩＮＵＸ（登録商標）によって提供される種々のバージョンのオペレーティングシステムを含む、任意のオペレーティングシステム（または複数のオペレーティングシステム）を使用し得、また、システム１１００の用途に応じて、ハンドヘルドデバイス、パーソナルコンピュータ、サーバ、及び組み込みデバイスのために特別に開発されたオペレーティングシステムを含み得る。オペレーティングシステム、ならびに（例えば、スーパーブロック１０４及び機能ブロック１１００のための）他の命令は、メモリユニット１１０４に記憶され、プロセッサ１１０２によって実行され得る。例えば、システム１１００がデバイス１００である場合、メモリユニット１１０４は、本明細書で説明されるメッセージシーケンス及び方法の一部または全部を行うための命令を含み得る。
【００７２】
図１２を参照すると、一実施形態において、機能ブロック２００は、２００５年３月１５日に出願された米国特許第７，６５６，８７０号、名称「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＰＥＥＲ−ＴＯ−ＰＥＥＲ  ＨＹＢＲＩＤ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ」で詳細に説明されるようなエンドポイントの機能に類似する機能を含み得、参照によりその全体が本明細書に組み込まれる。そのような実施形態において、エンドポイントのグラフィカルユーザインターフェース（ＧＵＩ）は、図２のＡＰＩ２０２と置き換えられ得、いくつかの機能は、機能ブロック２００の特定の実装に不要である場合に除去され得る。モバイルデバイス管理（ＭＤＭ）機能等の、必ずしも説明されるエンドポイントにあるとは限らない他の機能は、機能ブロック２００に含まれ得る。故に、説明されるエンドポイントの基本的な機能は、機能ブロック２００の命令セットに組み込まれる論理として存在し得る。
【００７３】
例示の目的で、機能ブロック２００は、ＡＰＩ２０２によってアクセスされ得、また、図１のデバイス１００のオペレーティングシステム１２０４と通信し得る。ＡＰＩ２０２は、当業者に知られているように、スーパーブロック１０４のための機能ブロック２００の能力へのアクセスを提供し、一方で、オペレーティングシステム１２０４は、下層の機能を提供する。例示の目的で、機能ブロック２００とは別体であるように示されているが、ＡＰＩ２０２は、いくつかの実施形態において、機能ブロック２００の一部であり得ることを理解されたい。
【００７４】
機能ブロック２００は、スーパーブロック１０４によって要求される動作を行うために必要とされる機能をサポートする、複数の構成要素及び層を含み得る。例えば、機能ブロック２００は、ソフトスイッチ１２０６と、管理層１２０８と、暗号化／解読モジュール１２１０と、特徴層１２１２と、プロトコル層１２１４と、スピーチツーテキストエンジン１２１６と、テキストツースピーチエンジン１２１８と、言語変換エンジン１２２０と、ネットワーク外接続性モジュール１２２２と、他のネットワークモジュールからの接続１２２４と、ｐコマースエージェント及びｐコマースブローカーを含むｐコマース（例えば、ピアコマース）エンジン１２２６と、セルラーネットワークインターフェースモジュール１２２８とを含み得る。
【００７５】
これらの構成要素／層のそれぞれは、複数のモジュールにさらに分割され得る。例えば、ソフトスイッチ１２０６は、コール制御モジュール、インスタントメッセージング（ＩＭ）制御モジュール、リソース制御モジュール、ＣＡＬＥＡ（法執行のための通信援助法）エージェント、媒体制御モジュール、ピア制御モジュール、シグナリングエージェント、ファックス制御モジュール、及びルーティングモジュールを含み得る。
【００７６】
管理層１２０８は、プレゼンス（すなわち、ネットワークプレゼンス）、ピア管理（ピアを検出し、オンラインであることをピアに通知する）、ファイアウォール管理（ナビゲーション及び管理）、媒体管理、リソース管理、プロファイル管理、認証、ローミング、ファックス管理、及び媒体再生／録画管理、のためのモジュールを含み得る。
【００７７】
暗号化／解読モジュール１２１０は、発信パケットのための暗号化及び着信パケットのための暗号解読を提供し得る。本実施例において、暗号化／解読モジュール１２１０は、ネットワークにおいてではなく、ソースにおいてアプリケーションレベルの暗号化を提供する。しかしながら、暗号化／解読モジュール１２１０は、いくつかの実施形態において、ネットワークでの暗号化を提供し得ることを理解されたい。
【００７８】
特徴層１２１２は、音声、ビデオ、ＩＭ、データ、音声メール、ファイル転送、ファイル共有、クラス５特徴、ショートメッセージサービス（ＳＭＳ）、双方向音声応答（ＩＶＲ）、ファックス、及び他のリソース等の、種々の特徴のサポートを提供し得る。プロトコル層１２１４は、ＳＩＰ、ＨＴＴＰ、ＨＴＴＰＳ、ＳＴＵＮ、ＲＴＰ、ＳＲＴＰ、及びＩＣＭＰを含む、機能ブロック２００によってサポートされるプロトコルを含み得る。これらは、例に過ぎず、より少ない、またはより多いプロトコルがサポートされ得ることを理解されたい。
【００７９】
スピーチツーテキストエンジン１２１６は、（例えば、マイクロホンまたはネットワークを介して）機能ブロック２００によって受け取ったスピーチをテキストに変換し、テキストツースピーチエンジン１２１８は、（例えば、スピーカーを介した出力のために）機能ブロック２００によって受け取ったテキストをスピーチに変換し、言語変換エンジン１２２０は、インバウンドまたはアウトバウンド情報（テキストまたはスピーチ）をある言語から別の言語に変換するように構成され得る。ネットワーク外接続性モジュール１２２２は、機能ブロック２００と外部サービス２０４との間の接続を取り扱うために使用され得、他のネットワークモジュール１２２４からの接続は、外部サービス２０４からの着信接続試行を取り扱う。セルラーネットワークインターフェースモジュール１２２８は、無線ネットワークと相互作用するために使用され得る。
【００８０】
上の説明は、１つまたは複数の実施形態を示し、説明するが、当業者は、本開示の趣旨及び範囲から逸脱することなく、実施形態において形態及び詳細に種々の変更が行われ得ることを理解するであろう。例えば、特定のフローチャートまたはシーケンス図内で例示される種々のステップは、組み合わせられ得るか、またはさらに分割され得る。加えて、１つのフローチャートまたは線図で説明されるステップは、別のフローチャートまたは線図に組み込まれ得る。さらに、説明される機能は、ハードウェア及び／またはソフトウェアによって提供され得、また、分散され得るか、または単一のプラットフォームに組み合わせられ得る。加えて、特定の実施例で説明される機能は、例示される様式とは異なる様式で達成され得るが、それでも本開示の範囲に包含される。したがって、請求項は、広義の様式において、本開示と一致するものと解釈されるべきである。
【図１】
0006470281.tif 000006
【図２Ａ】
0006470281.tif 000007
【図２Ｂ】
0006470281.tif 000008
【図３Ａ】
0006470281.tif 000009
【図３Ｂ】
0006470281.tif 000010
【図３Ｃ】
0006470281.tif 000011
【図４】
0006470281.tif 000012
【図５】
0006470281.tif 000013
【図６Ａ】
0006470281.tif 000014
【図６Ｂ】
0006470281.tif 000015
【図６Ｃ】
0006470281.tif 000016
【図７】
0006470281.tif 000017
【図８】
0006470281.tif 000018
【図９】
0006470281.tif 000019
【図１０】
0006470281.tif 000020
【図１１】
0006470281.tif 000021
【図１２】
0006470281.tif 000022