(57)【要約】  本発明は、モバイルデバイスと自動的に相互作用して前記モバイルデバイス上で利用可能なメニューシステム、モバイルアプリケーション及びモバイルサービスのグラフを生成するための手段を提供する。よって前記グラフに記録される情報は、後に相互作用式に再生され得る。グラフをこの自動化方式で構築するために、物理的モバイルデバイスは記録／制御環境と一体化される。この環境はデバイスインタフェースを有し、デバイスインタフェースはモバイルデバイスのユーザインタフェースを制御し、かつ前記デバイスからの結果的なビデオ及びオーディオデータを記録する能力を有する。自動化クローラはこのデバイスインタフェースを使用して、モバイルデバイスをマップされていない状態へナビゲートする。状態リスナは、モバイルデバイスから着信し、かつモバイルデバイスへ発信するデータを監視してこれを単一の状態へと分解し、必要に応じて新しい状態をグラフに保存する。
2011517795.tif 000002
【特許請求の範囲】
【請求項１】
モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するための方法であって、
前記モバイルデバイスからカレント状態を受信することと、
前記カレント状態から状態間の遷移シーケンスと安定状態とを分離することと、
前記安定状態からの動的コンテンツをマスキングして前記安定状態を表す正規サンプルを識別することを含む方法。
【請求項２】
前記安定状態内の安定したループを検出することをさらに含む、請求項１記載の方法。
【請求項３】
前記安定状態を先に識別された状態と比較することをさらに含む、請求項１記載の方法。
【請求項４】
前記先に識別された状態との一致が発見されなければ、前記安定状態を記録することをさらに含む、請求項３記載の方法。
【請求項５】
先行状態から前記カレント状態へのリンクを生成することをさらに含む、請求項１記載の方法。
【請求項６】
先に記録されていない状態へナビゲートすることをさらに含む、請求項１記載の方法。
【請求項７】
モバイルデバイスのカレント状態を識別してモバイルデバイスオプションへとナビゲートする方法であって、
前記モバイルデバイスからオーディオ及びビデオデータを検索することと、
動的コンテンツをフィルタリングすることと、
迅速な比較のために前記ビデオデータを処理することと、
前記ビデオデータにおけるループを検出することを含む方法。
【請求項８】
前記ビデオデータをピクセル更新のストリームとして格納することをさらに含む、請求項７記載の方法。
【請求項９】
前記ピクセル更新をＸＹ座標及び画像チェックサムとして格納することをさらに含む、請求項７記載の方法。
【請求項１０】
前記ビデオデータを処理することは前記動的コンテンツをマスキングすることを含む、請求項７記載の方法。
【請求項１１】
後にモバイルデバイスの特定の状態へナビゲートするために状態図を構築する方法であって、
ルートノードを確定することと、
発信リンクを持たない最初のノードを発見することと、
前記モバイルデバイス上の前記最初のノードに対応する状態へナビゲートすることと、
ナビゲーションイベントを前記モバイルデバイスへ送信することを含む方法。
【請求項１２】
前記ナビゲーションイベントを状態図に格納することをさらに含む、請求項１１記載の方法。
【請求項１３】
前記状態図におけるカレント状態から所望される状態までの最短経路を決定することをさらに含む、請求項１１記載の方法。
【請求項１４】
前記最短経路に対応するナビゲーションイベントを前記モバイルデバイスへ送信することをさらに含む、請求項１３記載の方法。
【請求項１５】
前記最短経路は、
前記モバイルデバイスの前記カレント状態と前記所望される状態とを識別することと、
前記所望される状態の前記ルートノードからの深さを決定することと、
前記カレント状態から前記ルートノードまでの設定された経路を加算すること、によって決定される、請求項１３記載の方法。
【請求項１６】
前記モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するための装置であって、
前記モバイルデバイスへ接続するように構成されるインタフェースと、
前記インタフェースへ通信可能式に結合され、かつ前記モバイルデバイスとの相互作用を、
前記モバイルデバイスからカレント状態を受信することと、
前記カレント状態から状態間の遷移シーケンスと安定状態とを分離することと、
前記安定状態からの動的コンテンツをマスキングして前記安定状態を表す正規サンプルを識別すること、
によって記録するようにプログラムされるプロセッサとを備える装置。
【請求項１７】
前記プロセッサはさらに、前記安定状態における安定したループを検出するようにプログラムされる、請求項１６記載の装置。
【請求項１８】
前記プロセッサはさらに、前記安定状態を先にナビゲートされた状態と比較するようにプログラムされる、請求項１６記載の装置。
【請求項１９】
前記プロセッサはさらに、先行状態から前記カレント状態へのリンクを生成するようにプログラムされる、請求項１６記載の装置。
【請求項２０】
前記プロセッサはさらに、先にナビゲートされた状態を比較することによって状態間の遷移シーケンスを決定するようにプログラムされる、請求項１６記載の装置。
【請求項２１】
前記モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するための装置であって、
前記モバイルデバイスへ接続するように構成されるインタフェースと、
前記インタフェースへ通信可能式に結合され、かつ前記モバイルデバイスとの相互作用を、
前記モバイルデバイスからオーディオ及びビデオデータを検索することと、
動的コンテンツをフィルタリングすることと、
迅速な比較のために前記ビデオデータを処理することと、
前記ビデオデータにおけるループを検出すること、
によって記録するようにプログラムされるプロセッサとを備える装置。
【請求項２２】
前記プロセッサはさらに、前記動的コンテンツをマスキングすることによって前記ビデオデータを処理するようにプログラムされる、請求項２１記載の装置。
【請求項２３】
後にモバイルデバイスの特定の状態へナビゲートするために状態図を構築する装置であって、
前記モバイルデバイスへ接続するように構成されるインタフェースと、
前記インタフェースへ通信可能式に結合され、かつ前記モバイルデバイスのナビゲーション経路を、
ルートノードを確定することと、
発信リンクを持たない最初のノードを発見することと、
前記モバイルデバイス上の前記最初のノードに対応する状態へナビゲートすることと、
ナビゲーションイベントを前記モバイルデバイスへ送信すること、
によって決定するようにプログラムされるプロセッサとを備える装置。
【請求項２４】
前記プロセッサはさらに、前記モバイルデバイスにおけるカレント状態から所望される状態までの最短経路を決定するようにプログラムされる、請求項２３記載の装置。
【請求項２５】
前記最短経路は、
前記モバイルデバイスの前記カレント状態と前記所望される状態とを識別することと、
前記所望される状態の前記ルートノードからの深さを決定することと、
前記カレント状態から前記ルートノードまでの設定された経路を加算すること、によって決定される、請求項２４記載の方法。
【請求項２６】
モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するためのプログラムコードを備えるコンピュータ読取り可能媒体であって、前記プログラムコードは、
前記モバイルデバイスからカレント状態を受信することと、
前記カレント状態から状態間の遷移シーケンスと安定状態とを分離することと、
前記安定状態からの動的コンテンツをマスキングして前記安定状態を表す正規サンプルを識別すること、
を含む方法のパフォーマンスを引き起こすためのものであるコンピュータ読取り可能媒体。
【請求項２７】
前記プログラムコードはさらに、前記安定状態における安定したループを検出することを含む方法のパフォーマンスを引き起こすためのものである、請求項２６記載のコンピュータ読取り可能媒体。
【請求項２８】
前記プログラムコードはさらに、前記安定状態を先にナビゲートされた状態と比較することを含む方法のパフォーマンスを引き起こすためのものである、請求項２６記載のコンピュータ読取り可能媒体。
【請求項２９】
前記プログラムコードはさらに、先行状態から前記カレント状態へのリンクを生成することを含む方法のパフォーマンスを引き起こすためのものである、請求項２６記載のコンピュータ読取り可能媒体。
【請求項３０】
前記プログラムコードはさらに、先にナビゲートされた状態を比較することによって状態間の遷移シーケンスを決定することを含む方法のパフォーマンスを引き起こすためのものである、請求項２６記載のコンピュータ読取り可能媒体。
【請求項３１】
モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するためのプログラムコードを備えるコンピュータ読取り可能媒体であって、前記プログラムコードは、
前記モバイルデバイスからオーディオ及びビデオデータを検索することと、
動的コンテンツをフィルタリングすることと、
迅速な比較のために前記ビデオデータを処理することと、
前記ビデオデータにおけるループを検出すること、
を含む方法のパフォーマンスを引き起こすためのものであるコンピュータ読取り可能媒体。
【請求項３２】
前記プログラムコードはさらに、前記動的コンテンツをマスキングすることによって前記ビデオデータを処理することを含む方法のパフォーマンスを引き起こすためのものである、請求項３１記載のコンピュータ読取り可能媒体。
【請求項３３】
後にモバイルデバイスの特定の状態へナビゲートするために状態図を構築するためのプログラムコードを備えるコンピュータ読取り可能媒体であって、前記プログラムコードは、
ルートノードを確定することと、
発信リンクを持たない最初のノードを発見することと、
前記モバイルデバイス上の前記最初のノードに対応する状態へナビゲートすることと、
ナビゲーションイベントを前記モバイルデバイスへ送信すること、
を含む方法のパフォーマンスを引き起こすためのものであるコンピュータ読取り可能媒体。
【請求項３４】
前記プログラムコードはさらに、前記モバイルデバイスにおけるカレント状態から所望される状態までの最短経路を決定することを含む方法のパフォーマンスを引き起こすためのものである、請求項３３記載のコンピュータ読取り可能媒体
【請求項３５】
前記プログラムコードはさらに、前記最短経路を、
前記モバイルデバイスの前記カレント状態と前記所望される状態とを識別することと、
前記所望される状態の前記ルートノードからの深さを決定することと、
前記カレント状態から前記ルートノードまでの設定された経路を加算すること、
によって決定することを含む方法のパフォーマンスを引き起こすためのものである、請求項３４記載のコンピュータ読取り可能媒体。
【請求項３６】
モバイルデバイスを制御し、かつ仮想環境における後続のシミュレーションのために装置と前記モバイルデバイスとの間の相互作用を記録するための装置であって、
前記モバイルデバイスへ接続して前記モバイルデバイスのナビゲーションを制御するためのデバイスインタフェースと、
前記モバイルデバイスのマップされていない状態を決定するための自動化されたクローラと、
前記モバイルデバイスの制御及び前記モバイルデバイスからの応答を記録して前記応答が先に記録されているかどうかを決定するための状態リスナとを備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定のモバイルデバイスに使用可能な機能の広範かつ象徴的な体験をユーザに提供できる相互作用的バーチャルモバイルデバイスエミュレータに関する。
【背景技術】
【０００２】
移動情報処理デバイス（「モバイルデバイス」）は、毎年、多種多様なものが製造されている。モバイルデバイスの消費者はデバイスの購入に際して様々な選択肢に直面し、全体の７０％を超える消費者は購入を行う前にインターネットで何らかの探索を行い、全消費者の約１５％は実際にインターネットからモバイルデバイスを購入する。
【０００３】
これまで、入手可能な一般情報はモバイルデバイス自体の機能に関するもの、即ちその無線データサービス（「モバイルサービス」）及びダウンロード可能なアプリケーション（「モバイルアプリケーション」）に限定されていた。この情報は、概して、ディスプレイサイズ、メモリサイズ、無線ネットワーク互換性及びバッテリ寿命情報等のデバイス仕様から成っている。
【０００４】
モバイルデバイス、モバイルサービス及びモバイルアプリケーションがさらに高度なものになるにつれて、消費者が利用可能なデバイス及びサービスのより広範かつ相互作用的なプレビューを提供することが必要となっている。これまでに、ＨＴＭＬまたはＡｄｏｂｅ Ｆｌａｓｈ等の標準オーサリングツールにより生成される視覚的デモンストレーションを使用してモバイル製品及びサービスを見せる試みが行われてきたが、これらは概して、実際に提供されている機能の限定的かつ非相互作用的表現を提供するものである。これらの表現は、その生成方法、概して、モバイルデバイスのＬＣＤディスプレイの静止画像を撮り、かつこれらの個々のフレームを繋ぎ合わせて実際のアプリケーションまたはサービスをモックアップするという方法に必然的に限定される。また、これらのデモンストレーションは事前に生成されなければならないことから、ライブモバイルデバイス上でのアプリケーションの実際的な体験に似た如何なる方法でもこれらを相互作用的に行うことは不可能であった。
【０００５】
従って、特定のモバイルデバイスに利用可能な機能を遙かに広範かつ象徴的に体験することのできるバーチャルモバイルデバイスの相互作用式エミュレータ（「バーチャルデバイス」）を生成する、より高度な方法が必要とされている。
【発明の概要】
【０００６】
相互作用式エミュレータを生成する１つの方法は、物理的モバイルデバイスを手動でナビゲートする一方で、システムがこのデバイスから画像、音声及びハードウェア状態形式の出力を捕捉し、かつ人であるユーザがこれを起動するために実行するアクションを基礎としてこれらを接続するというものである。このアプローチは冗漫である可能性があり、かつこれを効果的に使用するために、ユーザはモバイルデバイスの出力を捕捉するシステムに関して詳細な知識を有することが必要とされる場合がある。このアプローチに対する改良は、人であるユーザを、キー押し、タッチスクリーンのタッチ、音声入力、他等のユーザ入力を呼び出すことによってモバイルデバイスをナビゲートするオートマトンに置換することである。オートマトンは、以前にナビゲートされた全ての経路を追跡することができ、かつ捕捉システムと相互作用してモバイルデバイス上で新しい経路をナビゲートするための最も効率的な経路を決定できることから、これは、モバイルデバイスをナビゲートするより体系的なアプローチを可能にする。
【０００７】
本発明は、モバイルデバイス上で利用可能なメニューシステム、モバイルアプリケーション及びモバイルサービスの構造マップまたはグラフを生成することを目的としてモバイルデバイスと自動的に相互作用するための手段を提供する。よって、グラフに記録された情報は、後に相互作用的に再生され得る。
【０００８】
グラフをこの自動化様式で構築するために、物理的モバイルデバイスは、記録及び制御環境（「記録／制御環境」）と一体化される。この環境は、モバイルデバイスのボタンまたはタッチスクリーンインタフェースを制御し、かつ生成される結果的なビデオ及びオーディオデータを記録する能力を有するインタフェース（「デバイスインタフェース」）を有する。デバイスインタフェースの実装には、モバイルデバイス上にソフトウェアエージェントをインストールすること、機械的ハーネスを構築すること、またはモバイルデバイスのハードウェアへ直に電気接続することを含む幾つかの方法が存在する。
【０００９】
モバイルデバイスのグラフは、この自動化された制御及び記録プロセスを介して発生された後、ユーザが物理的モバイルデバイス自体と相互作用することなくモバイルデバイスの様々な画面を介してナビゲートすることを可能にする方法でユーザへ提示され得る。代わりに、モバイルデバイスから捕捉されてセントラルサーバに格納されたデータはユーザへ送り返され、実際のモバイルデバイス上で見られるように表示される。この方法では、物理的モバイルデバイスを仮想化して同時的な相互作用セッションにおいて多くのユーザへ表示することができる。
【００１０】
モバイルデバイスのグラフを構築するプロセスの間、モバイルデバイスのユーザインタフェースのメニュー構造において利用可能な各ページは、大型多方向グラフにおける１つの状態として表現され得る。グラフの各状態（またはページ）は、２つのページ間をナビゲートするために使用される手段を表すリンクによってグラフ内の他の状態へ接続される。例えば、モバイルデバイスのユーザインタフェースのホームページが「ホーム」とラベリングされたグラフ内の１つの状態によって表現され、かつモバイルデバイス上のアプリケーションメニューが「メニュー」とラベリングされたグラフ上の別の状態によって表現されていれば、２つのページ間をナビゲートするために使用されるキーはグラフのこれらの状態間のリンクを形成することになる。
【００１１】
記録／制御環境において、自動化エンジン（「クローラ」）はデバイスインタフェースを使用してモバイルデバイスの状態を操作し、一方でリスナ（「状態リスナ」）はデバイスインタフェースを介してモバイルデバイスとの間で行き来するデータを監視し、かつこれを単一の状態に分解し、必要に応じて新しい状態をグラフに保存する。状態リスナは、スクリーン画像、音声、振動状態またはモバイルデバイスからの他の物理的イベント等のデバイスインタフェースからの発信データを聴き、これらを既知の既存状態と比較する。状態リスナは、キー押し、タッチスクリーンイベント、オーディオ入力、他等のデバイスインタフェースへの着信データを聴き、モバイルデバイスのグラフにおける先行状態とカレント状態とをリンクする。状態リスナは、発信データのシーケンスを既存の保存されている状態として認識しなければ、グラフ内に新しい状態をそのデータシーケンスで生成する。
【００１２】
クローラは、クローラがモバイルデバイスのナビゲーションを開始するために、モバイルデバイスを既知の状態（「ルート」）に置く既知の入力シーケンスで、かつその状態を認識する方法を保有して設定される。クローラは、モバイルデバイス上の既知の状態までナビゲートした後、モバイルデバイスへ入力シーケンスを繰返し送信することができ、一方で状態リスナは、結果的に生じる状態から成るグラフを構築する。グラフが構築されるにつれて、クローラは、ルートから最小数のリンクで離隔され、かつ全ての可能なデバイス入力に対する発信リンクを持たない状態を反復的に発見し、次いでルートへ戻る前にこれらの入力のうちの１つを送信する。これは、モバイルデバイスのグラフを広さ優先方式に構築するが、深さ優先方式、反復深化深さ優先方式または発見的アプローチを含む他のアルゴリズムが使用される可能性もある。
【００１３】
大部分のモバイルデバイスの複雑さは、モバイルデバイス上のあらゆる一意の状態までナビゲートすることを事実上不可能にし、よってクローラは、所定の状態を超えるナビゲートを、比較及び許可または限定された入力（「限界条件」）のリストによってこれらの状態を識別することにより回避するように設定され得る。これは、クローラがモバイルデバイスのユーザエクスペリエンスに関連する状態を介するナビゲーションにより多くの時間を費やし、かつ関連性がほとんどないランダム入力、例えば自由形式のテキストまたは数値エントリの送信により少ない時間を費やすことを可能にする。
【００１４】
最後に、モバイルデバイスのグラフを構築する際には、自動化されたクローラが到達しないと思われるスクリーン、具体的には、テキストまたは数値エントリ等の特有の非ランダム入力による到達を要求するスクリーンが幾つか存在する場合がある。しかしながら、これらのスクリーンは、グラフを基礎とするランタイム環境においてバーチャルデバイスを使用する者にとって関心のあるものであると思われる。従って、記録／制御環境は、モバイルデバイスの２つのモードにおける手動制御を見越している。両モードにおいて、クローラは無効化されるが、デバイスインタフェース及び状態リスナはアクティブなままである。一方のモードにおいて、グラフを構築するユーザは、各スクリーン及びキー押しを捕捉する状態リスナによって、あたかもクローラがナビゲートしているかのようにしてモバイルデバイスをナビゲートする。もう一方のモードにおいて、グラフを構築するユーザは、連続する多くの状態から成る場合のある単一のビデオを捕捉し、かつこのビデオを特殊な型式を有するグラフ内の単一ノードに関連づけることができる（「エンドポイントビデオ」）。このタイプのノードは、グラフの自由にナビゲートできる部分を超える機能性を実証し、物理的モバイルデバイスの使用方法を表すものであることが意図されるバーチャルデバイス上のユーザ入力の１つの特有のシーケンスを示す。モバイルデバイスによる電話番号のダイアリング、ＳＭＳメッセージの入力及び送信またはライブ写真及びビデオの撮影はその例であるが、このモデルは、モバイルデバイスがサポートする場合のあるほぼ全ての複雑な使用事例に適用可能である。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る自動メニューシステムのマップ発生システムを使用する例示的なシステムを示すブロック図である。
【図２】本発明の実施形態に係る例示的な状態リスナのプロセスを示す例示的なフロー図である。
【図３】本発明の実施形態に係る状態リスナ内の例示的なオーディオ／ビデオ処理論理を示す例示的なブロック図である。
【図４】本発明の実施形態に係る状態リスナによって使用される例示的なオーディオ／ビデオバッファフォーマットを示す。
【図５】本発明の実施形態に係る状態リスナによって使用される動的コンテンツのマスキング論理を示す例示的な機能ブロック図である。
【図６】本発明の実施形態に係る状態リスナによって動的コンテンツマスキングに使用される例示的なマスクコンフィギュレーションツールを示す。
【図７】本発明の実施形態に係る状態リスナによって使用される例示的なオーディオ／ビデオ処理データ構造を示す。
【図８】本発明の実施形態に係る状態リスナによって使用される例示的なループ検出アルゴリズムを示す。
【図９】状態比較アルゴリズムの一実施形態を示す例示的な状態図である。
【図１０】本発明の実施形態に係る例示的な自動化されたクローラを示す例示的なブロック図である。
【図１１】本発明の実施形態に係る例示的な自動化されたクローラのナビゲーション論理を示す例示的なブロック図である。
【図１２】本発明の実施形態に係る記録／制御環境の属性を使用する例示的な装置を示す。
【発明を実施するための形態】
【００１６】
以下の好適な実施形態の説明においては、添付の図面を参照して、その一部が形成されており、かつ本発明が実施されてもよい特有の実施形態を例示的に示している。本発明のこれらの好適な実施形態の範囲を逸脱することなく、他の実施形態が使用されてもよく、かつ構造的変更が行われてもよいことは理解されるべきである。
【００１７】
図１は、自動メニューシステムのマップを発生するシステムの一実施形態を示す代表的なブロック図である。本システムは、モバイルデバイスの様々なオプションを介してナビゲートし、かつ結果的に生じる、及び様々なユーザ入力に対応するオーディオ及びビデオデータを記録するために使用される。このデータを使用して、ユーザが前記デバイスを外部からナビゲートしてデバイスのオプション及びケイパビリティの高信頼的かつ広範なインタラクティブプレビューを体験することを許容するモバイルエミュレータが生成される。
【００１８】
モバイルデバイス１０２は携帯情報処理デバイスであって、これは携帯電話、ＰＤＡ、ＧＰＳユニット、ラップトップ、他等のデバイスを含んでもよい。モバイルデバイスの最も一般的なコンフィギュレーションは小型のハンドヘルド式デバイスであるが、デジタルオーディオプレーヤ（例えば、ＭＰ３プレーヤ）及びデジタルカメラ等の他の多くのデバイスも本発明の範囲に包含される。モバイルデバイス１０２は、一般にモバイルアプリケーション及びサービスを実行または見るために使用される。モバイルデバイス１０２は、記録／制御環境１０４と一体化される。この環境は、モバイルデバイスを制御し、かつ生成される、画像またはビデオを含む結果的なディスプレイ及びオーディオデータを記録する能力を有する。発生されるデータは、次に、グラフ／ビデオ／オーディオ記憶装置１０６に格納される。
【００１９】
モバイルデバイス１０２は、様々なユーザインタラクティブ機能またはスピーカもしくは視覚的ディスプレイ、他等の出力デバイスを含んでもよい。出力デバイス１１０から発生される視覚的表示または音声は、記録／制御環境１０４によって捕捉されるデータに含まれてもよい。オーディオスピーカ１１１は、キーが押されたとき、またはデバイス上でアプリケーションが実行されているときに音を発してもよい。或いは、または追加的に、モバイルデバイス１０２はモバイルディスプレイ１１２を含んでもよい。モバイルディスプレイ１１２は、モバイルデバイスのステータスに関する情報を表示し、かつモバイルデバイスとの相互作用を可能にするために使用される。モバイルディスプレイはフラットパネルＬＣＤディスプレイであってもよいが、プラズマまたはＯＬＥＤ技術等の他の任意のディスプレイタイプから製造される可能性もある。
【００２０】
出力デバイスに加えて、モバイルデバイス１０２は、タッチスクリーン、キーパッド、キーボードまたは他のボタン等の入力デバイス１１４を含んでもよい。タッチスクリーンセンサ１１５は、デバイス上で実行するメニューまたはアプリケーションを選択するために使用され得る。タッチスクリーンセンサ１１５は、デバイスのＬＣＤディスプレイ上に嵌る、またはＬＣＤディスプレイに関連して作動する接触感知パネルであってもよく、ユーザがスタイラスまたは他のオブジェクトを使用してスクリーンの１つの領域をクリックすることを可能にする。代替として、或いはタッチスクリーンに加えて、モバイルデバイスは、キーパッドボタン１１６を使用してデバイス上のメニュー間をナビゲートし、かつテキスト及び数値データをデバイスに入力してもよい。ある典型的なモバイルデバイス１０２は、数字０−９の数字パッド、＃、＊、及び方向矢印、選択キー、左右メニューキーを含むナビゲーションキーセット、及び送信キー及び終了キーを有する。デバイスの中には、数値データを入力するためのフルキーパッドを有してもよいものがあり、または異なるデバイスモードにおいて利用可能な複数のキーパッドを有してもよいものがある。
【００２１】
モバイルデバイス１０２はさらに、モバイルオペレーティングシステム１１８を含んでもよい。モバイルオペレーティングシステム１１８は必ずしもモバイルデバイス１０２内に収容される必要はなく、代わりにデバイスの外部に存在し、通信リンクを使用してデバイスとオペレーティングシステムとの間で必要な情報を転送してもよい。このオペレーティングシステム１１８は、モバイルデバイス１０２の機能を制御するために使用されてもよい。オペレーティングシステム１１８は、中央処理装置（ＣＰＵ）、揮発性及び不揮発性コンピュータメモリ、入力及び出力信号ワイヤ及びシステムの機能を制御する実行可能命令セットから成ってもよい。モバイルオペレーティングシステム１１８は、ＢＲＥＷ、Ｓｙｍｂｉａｎ、Ｗｉｎｄｏｗｓモバイル、Ｐａｌｍ ＯＳ、Ｌｉｎｕｘ並びにモバイルデバイス製造業者により開発された様々な独自仕様のプラットフォーム等のオープン開発プラットフォームであってもよい。
【００２２】
ある実施形態において、通信データ及び制御信号１２０は、グラフィック画像を形成する、またはモバイルディスプレイ１１２上に他の情報を表示するという目的でモバイルオペレーティングシステム１１８からモバイルディスプレイ１１２へ転送されている情報を編成する。情報がモバイルオペレーティングシステムからモバイルデバイスへ送られるにつれて、様々な中間のハードウェアグラフィックスプロセッサによってディスプレイ情報の変換が発生してもよい。変換は、パラレルデータストリーム（データが一度に多くのワイヤを通って転送される）からシリアルデータストリーム（データはより少数のワイヤ上で転送される）への変換等の単純なものであってもよい。或いは、グラフィック処理装置（ＧＰＵ）によって実行される、より高レベルの描画またはモデリングコマンドの最終ビットマップビジュアルフォーマットへの変換等のより複雑な変換が存在してもよい。前記情報は様々な処理ステージで異なる形態をとってもよいが、この情報の意図は、モバイルディスプレイ１１２上へグラフィック情報または他の情報を表示するタスクを達成することにある。
【００２３】
通信データ及び制御信号１２１からのビデオデータ１２２は、記録／制御環境１０４へ送信される。通信データ及び制御信号１２０からの生情報は抽出され、または傍受されかつコピーされて記録／制御環境１０４が利用できるようにされる。傍受は、情報がモバイルディスプレイ１１２へ転送されるにつれてこの情報を受動的にコピーしてもよく、または破壊的アプローチを使用して情報を抽出してもよい。情報を抽出するための破壊的アプローチはモバイルディスプレイのオペレーションを妨害することがあるが、モバイルデバイス１０２と相互作用するために記録／制御環境１０４しか必要とされない事例では、これは重要ではない場合がある。
【００２４】
傍受及びコピーは、通信データ及び制御信号１２０の信号レベルを検出し、かつ情報がモバイルディスプレイ１１２へ転送されるにつれて、この情報のデジタルコピーを作製することができるハードウェアセンサによって達成されてもよい。概して、ロジックアナライザ等の利用可能なプロダクツ、並びにモバイルデバイスからこのデジタル情報を抽出するように設計されるカスタムハードウェアもこのタスクを実行することができる。或いは、ソフトウェアエージェントベースの類似アプローチを使用して、記録／制御環境１０４へ供給される生情報が抽出されてもよい。本例において、このソフトウェアエージェントは、モバイルオペレーティングシステム１１８自体で実行され、かつモバイルデバイス１０２上で発見される任意の標準通信チャネルを介して環境１０４と通信するソフトウェアプログラムであると思われる。この通信チャネルは、無線通信、ＵＳＢ、シリアル、ブルートゥースまたはモバイルオペレーティングシステム上で実行されるアプリケーションと情報を交換するために使用される他の任意数の通信プロトコルを含む可能性もある。
【００２５】
オーディオデータ１２４は、モバイルデバイス１０２上で利用可能な聴覚情報の全てである。この情報は、記録／制御環境１０４がオーディオデータを利用できるようにするために、物理デバイスからアナログ−デジタル変換器によって抽出されてもよい。これは、前記デバイスを装備したヘッドセットへの接続、またはデバイスからスピーカを外してスピーカに対しオーディオが発生されると思われるポイントへ接続することの何れかによって行われてもよい。また、この情報は、モバイルデバイス１０２からネイティブデジタルオーディオフォーマットで抽出されることも可能であり、これはデジタル変換を必要としない。
【００２６】
ナビゲーション制御１２６は、記録／制御環境１０４からモバイルデバイス１０２を制御するためのシステムである。前記デバイスとの最も望ましい集積化は、ハードウェアベースの集積化を使用してキーパッドボタン押し及びタッチスクリーンの選択を電気的に刺激することである。これは、デバイスのオペレーティングシステム１１８とのソフトウェアインタフェースを使用することで制御される可能性もある。ソフトウェアインタフェースは、デバイスのデータケーブルを介して、またはブルートゥース等の無線通信を介してデバイス上で実行されているソフトウェアエージェントと通信する可能性もある。ナビゲーション制御は、モバイルデバイス１０２の入力デバイス１１４の全てを高信頼的に制御することができる。
【００２７】
グラフ／ビデオ／オーディオ記憶装置１０６は、モバイルデバイス１０２の相互作用の設計時記録の間に格納される情報のレポジトリである。この格納システムは標準的なリレーショナルデータベースシステムであり得、または単に記録情報を有するフォーマットされたファイルセットである可能性もある。記録情報は、概して、大型多方向グラフを表現するデータベース表エレメントのフォーマットをとる。このグラフは、モバイルデバイス１０２上へメニュー及びアプリケーションの構造マップを表示する。さらに、この格納システムは、モバイルデバイス１０２から記録されたオーディオ、ビデオ及び／または静止フレーム情報を含む。
【００２８】
グラフデータ１４４は、グラフ／ビデオ／オーディオ記憶装置１０６のコンポーネントに格納される永続的情報から構成される。グラフデータ１４４をメモリに保持することは、複数のサブシステムが複数の変更を読み取ってアトミックトランザクションにより記憶装置コンポーネントへ変更を書き込むことを可能にし、これにより、永続データの同時的変更が回避される。これは、これらのサブシステムが、ハードウェア制約または物理的近接性に起因してより遅い応答時間を要する場合のある記憶装置コンポーネント１０６への反復的アクセスを行う必要なしに、グラフデータ１４４に対して例えば探索である複雑なオペレーションを実行することも可能にする。記憶システム１０６へのデータ送信は、ＸＭＬメッセージングが発生されるインメモリ構造の独自仕様のフレームワークを使用して行ってもよい。他に、Ｊａｖａ Ｂｅａｎｓ、Ｈｉｂｅｒｎａｔｅ、ダイレクトＪＤＢＣ、他等のフレームワークを含む実装の可能性が存在する。
【００２９】
記録／制御環境１０４は、汎用コンピュータ１０８または他の何らかの処理装置上で実行されてもよい。汎用コンピュータ１０８は、ソフトウェアアプリケーションまたは他の電子的命令を実行することができる任意のコンピュータシステムである。これには、Ｗｉｎｄｏｗｓ（登録商標） ＰＣまたはＡｐｐｌｅ Ｍａｃｈｉｎｔｏｓｈ（登録商標）等の一般的に利用可能なコンピュータハードウェア及びオペレーティングシステム、またはＵｎｉｘまたはＬｉｎｕｘサーバ等のサーバベースのシステムが含まれる。またこれには、汎用ＣＰＵまたはＣＰＬＤ、ＦＰＧＡまたは他の任意の類似タイプのプログラマブル論理技術を基礎とするカスタム設計のプログラマブル論理プロセッサの何れかを使用して命令を処理するように設計されるカスタムハードウェアが含まれる可能性もある。
【００３０】
記録環境１０４は、デバイスユーザインタフェースの一意の状態またはページを識別し、かつこれらのページ間のナビゲーションリンクを確立する。ナビゲーションリンクは、モバイルデバイス１０２の１つのページから別のページへとナビゲートするように操作されなければならない入力デバイス１１４のファンクションとして定義される。記録環境１０４は、モバイルデバイス１０２のメニューを介して手動でトラバースする人間によって使用され得、もしくは、マップされていないナビゲーション経路を探索し、かつこれらをデバイス上で自動的にナビゲートする自動化されたコンピュータプロセスによって使用される可能性もある。
【００３１】
ある実施形態において、記録／制御環境１０４はデバイスインタフェース１３０を含む。デバイスインタフェース１３０は、モバイルデバイス１０２のナビゲーション制御１２６及びモバイルデバイス１０２から戻る処理及びバッファリングオーディオデータ１２４及びビデオデータ１２２に対して責任を負う。物理的モバイルデバイス１０２と相互作用するハードウェアまたはソフトウェアとの通信には、ＵＳＢ接続が使用されてもよい。しかしながら、この通信チャネルには、無線通信、シリアル、ブルートゥースまたは双方向データ転送に使用される他の任意数の通信プロトコルが含まれる可能性もある。デバイスインタフェース１３０は、状態リスナ１３２へモバイルデバイス１０２からのオーディオデータ１２４、ビデオデータ１２２及びナビゲーション制御１２６のイベントであるオーディオ／ビデオ１４０のデータを共通フォーマットで供給する。これは、人であるユーザまたは自動化されたクローラ１３４がナビゲーション１４２のイベントをモバイルデバイス１０２へ共通フォーマットで送信することも可能にする。
【００３２】
ある実施形態では、記録／制御環境１０４はさらに、オーディオデータ、ビデオデータ及びナビゲーションイベントについてデバイスインタフェース１３０をポーリングする状態リスナ１３２を含む。データがモバイルデバイス１０２から戻りつつあるとき、状態リスナ１３２は遷移状態を入力し、かつこの遷移に至ったナビゲーションイベントを追跡する。状態リスナ１３２は、データが停止するか設定された時間期間に渡ってループするまでデバイスインタフェース１３０からのオーディオ及びビデオデータのバッファを保持する。データが停止するか設定された時間期間に渡ってループした時点で、状態リスナ１３２はそのバッファ内のデータをグラフ内の既存状態と比較し、グラフ内に新しい状態を生成するか、一致が発見されればそのカレント状態を更新する。また状態リスナ１３２は、ナビゲーションのためのグラフ内の先行状態からカレント状態へ至るリンクがまだグラフ内に存在していなければ、これを生成する。最後に、状態リスナ１３２は安定状態に入り、デバイスインタフェース１３０からのさらなる出力を待つ。
【００３３】
別の実施形態において、記録／制御環境１０４は自動化されたクローラ１３４を含む。自動化されたクローラ１３４は人であるオペレータによって開始され、かつ相互作用的プロセスを辿って、その状態から至る可能性のある全てのナビゲーションイベントがまだ探索されたことのないグラフ内の状態を発見することにより、グラフデータ１４４を拡張する。自動化されたクローラ１３４は次に、その状態に対応するモバイルデバイス１０２上のスクリーンへとナビゲートし、かつマップされていない経路に対応するナビゲーションイベントを送信する。この実行に際して、状態リスナ１３２は、そのナビゲーションイベントのためにその状態からの新しい発信リンクを生成し、よって、自動化されたクローラ１３４は、次にマップされていない経路を探索する際に状態とナビゲーションイベントとの異なる組合せを発見する。
【００３４】
図２は、本発明の実施形態による例示的な状態リスナプロセス２００を示すフロー図である。プロセス２００は、ブロック２１０において始まる。状態リスナ１３２は、人であるオペレータまたは自動化されたクローラ１３４によって開始される。開始されると、これはデバイスインタフェース１３０からフルフレームのビデオデータを要求し、かつこれをそのビデオバッファに格納する。状態リスナ１３２のオペレーションは、人であるユーザによって手動で停止されるまで、または自動化されたクローラ１３４がその処理を終了するまで継続される。
【００３５】
モバイルデバイス１０２から着信する新しい非ループのデータが存在すれば、状態リスナ１３２はそのカレント状態をクリアする。これは、モバイルデバイス１０２がブロック２１２「デバイスは遷移状態」において遷移状態にあることを指す。モバイルデバイス１０２が遷移状態にあるかどうかは、自動化されたクローラ１３４等の他のシステムまたは人であるオペレータが状態リスナ１３２をチェックして確認してもよい。遷移状態であれば、前記システムまたはオペレータはモバイルデバイス１０２へのさらなる入力送信を回避すべきである。
【００３６】
次に、状態リスナ１３２は、ブロック２１４においてオーディオデータ、ビデオデータオペレータ入力イベントを追跡する。モバイルデバイス１０２が遷移状態にあるとき、状態リスナ１３２はデバイスインタフェース１３０から最新のナビゲーションイベント及びオーディオ／ビデオデータをログする。この情報は後に、グラフへ追加される場合もある新しいリンク及び状態を投入するために使用される。
【００３７】
状態リスナ１３２は、ブロック２１６において、デバイスインタフェース１３０からのオーディオ／ビデオ出力を待つ。人であるオペレータによって先に設定された時間しきい値の経過後に何も存在しなければ、状態リスナ１３２はそのカレント状態を更新し、そのバッファ内のデータを記憶装置コンポーネントに保存する。その時間しきい値内にモバイルデバイス１０２から新しいデータが着信すれば、状態リスナ１３２はループに関してデータバッファをチェックし、着信データを保存するか、或いはそのデータがループしていれば、到来するデータが存在しなかったかのようにそのカレント状態を更新する。
【００３８】
モバイルデバイス１０２上には、決定的サイクルで継続的にオーディオまたはビデオデータを発生し、絶対に停止しない状態が存在することがある。従って、モバイルデバイス１０２からデバイスインタフェース１３０を介してオーディオ／ビデオデータが着信すると、状態リスナ１３２はそれが無限ループ２１８の一部であるかどうかを確認するチェックを行う。状態リスナ１３２はまず、データバッファにおいてカレントデータの先行例を探す。次に状態リスナ１３２は、カレントデータから遡って参照し、バッファ内にこれまでカレントシーケンスの反復が同じ順序で何回存在したかを確認する。そのデータが、人であるオペレータによって先に設定されたしきい値より多い反復回数で存在していれば、状態リスナ１３２はモバイルデバイス１０２が無限ループ状態にあることを決定する。この後、モバイルデバイス１０２から着信する、カレントパターンを同じ順序で継続するデータは何れも却下される。データが無限ループ状態でなければ、状態リスナ１３２はそのカレント状態をクリアしてそのデータをバッファに追加する。
【００３９】
状態リスナ１３２は、ブロック２２２においてモバイルデバイス１０２からそれ以上新しい非ループのデータが着信しないと決定すれば、そのカレント状態を更新するプロセスを開始する。まず、ブロック２２４で状態リスナ１３２は、保存されたグラフ構造体における、データバッファ内に存在するオーディオ及びビデオデータを同じ順序で含む状態を探索する。ループを含むデータバッファの部分について、照合アルゴリズムは、ループを前後に移動してそれがグラフにおける標的状態におけるループデータと整合するかどうかを確認しようとする。ブロック２２６において、グラフ内に何れかの一致する標的状態が存在すれば、状態リスナ１３２は、それが物理的モバイルデバイス１０２のカレント状態であると想定する。存在しなければ、状態リスナ１３２は、グラフ内に新しい状態を生成するプロセスを開始する。
【００４０】
ブロック２２６において、データバッファ内にそのデータに対する一致が発見されなければ、ブロック２２８において、状態リスナ１３２はグラフ内に新しい状態を生成する。次に、データバッファ内のデータは変換されてその状態１０６に関連づけられ、データバッファはクリアされる。ブロック２２６においてそのデータの一致がデータバッファ内に発見されれば、状態リスナ１３２はまず標的状態上に存在する全てのデータをデータバッファから除去する。次にブロック２３０において、状態リスナ１３２は、グラフ内の標的状態が、モバイルデバイス１０２上で発生したナビゲーションイベントに関して状態リスナの先行状態からの着信リンクを有するかどうかを確認する。ブロック２３２において、このようなリンクが存在すれば、新しいリンクは生成されない。ブロック２３２において、このようなリンクが存在しなければ、ブロック２３４において状態リスナ１３２はグラフ１０６内に新しいリンクを生成する。ブロック２３４において、状態リスナ１３２は、バッファ内に存在するナビゲーションイベントに関して、その先行状態からカレント状態への新しいリンクを生成する。また状態リスナ１３２は、データバッファ内に残される任意の残りのオーディオ／ビデオデータもそのリンクに関連づける。
【００４１】
状態リスナ１３２は、格納されたグラフ構造体内に任意の新しいエンティティを生成すると、ブロック２３６において、そのカレント状態を（１つの一致が存在する場合は）グラフ内の一致した状態、または生成されたばかりの新しい状態の何れかとして設定する。これは、ブロック２３８において、モバイルデバイス１０２がもはや遷移状態にはないことを示す。自動化されたクローラ１３４等の他のシステムまたは人であるオペレータは、この情報を、モバイルデバイス１０２へ別のナビゲーションイベントを送信できることを意味するものとして捉える。
【００４２】
既存の状態との一致または新しい状態の生成の何れかによって、グラフにおける、モバイルデバイス１０２から着信するデータバッファのコンテンツに一致する状態に落ち着いた後、状態リスナ１３２は、ブロック２３８において、モバイルデバイス１０２は安定状態にあるものと考える。これは、具体的にはモバイルデバイス１０２から非ループのオーディオ／ビデオデータが着信する場合に、状態リスナ１３２が遷移状態を検出するまで真であり続ける。モバイルデバイス１０２が安定状態にあるかどうかは、自動化されたクローラ１３４等の他のシステムまたは人であるオペレータが状態リスナ１３２をチェックして確認してもよい。安定状態にあれば、前記システムまたはオペレータには、モバイルデバイス１０２へ、状態遷移をトリガする場合のあるナビゲーションイベントを送信しても差し支えないことが分かる。
【００４３】
状態リスナ１３２が、モバイルデバイス１０２からのオーディオ及びビデオデータを処理し、かつモバイルデバイス１０２上の新しい状態を保存されたグラフ構造体１０６内の既存のノードと比較する場合に克服しなければならない場合のある技術的課題は、幾つか存在する。第１に、画像の迅速な更新及び比較を可能にする、バッファ内のビデオデータを表す確実な手段が存在すべきである。第２に、デバイスインタフェース１３０からのビデオ供給には、ユーザナビゲーションに関わりなく変わるコンテンツ（「動的コンテンツ」）が存在する場合がある。検出されなければ、このデータは最終的に、人が論理的には同一と見なす、状態リスナ１３２にとって区別的であるように見える２つの状態を招来する可能性もある。第３に、モバイルデバイス１０２上には、無限にループする動画（「ループ」）を有し、かつ決して停止しない状態が存在する場合がある。これは検出されなければならず、そうでなければ、状態リスナ１３２はモバイルデバイス１０２が事実上、安定しているが反復的な状態にあることを絶対に識別しなくなる場合がある。第４に、状態リスナ１３２は、デバイスインタフェース１３０から着信するオーディオ及びビデオデータをダウンサンプリングして圧縮する方法を必要とする場合がある。必要としなければ、グラフにおけるノードの保存、検索または比較に際してデータの量が扱いにくいものになる可能性もある。最後に、ビデオデータがダウンサンプリングされる場合には、モバイルデバイス１０２上の状態をグラフ１０６内のノードとして変換されて保存された状態と高信頼的に比較する方法が存在すべきである。この方法は、変換プロセスの間に失われるデータを容認するものであるべきである。
【００４４】
図３は、本発明の実施形態に係る状態リスナ１３２内の例示的なオーディオ／ビデオ処理ステップを示すブロック図である。まず、ブロック３０２において、状態リスナ１３２はデバイスインタフェース１３０からオーディオ／ビデオ１４０のデータを検索する。第２に、ブロック３０４において、動的コンテンツがフィルタリングされる。次に、ブロック３０６において、状態リスナは、迅速な更新及び比較のためにビデオデータを処理する。次に、ブロック３０８において、状態リスナはビデオデータ内のループを検出する。最後に、ブロック３０８において、結果的に生じるオーディオ及びビデオデータがデータ記憶装置のために圧縮される。本発明では、状態リスナ１３２のこのプロセスは順序を変えて実行されてもよいこと、またはあるブロックはプロセスから完全に除去されてもよいことが企図される。例えば、最終的に格納するためのデータがさほど大きくなければ、データは、最後のブロック３１０におけるように圧縮される必要はない場合がある。以下、本発明の幾つかの実施形態に従って各ブロックについてさらに説明する。
【００４５】
状態リスナ１３２のプロセス３００の最初のブロック３０２は、デバイスインタフェース１３０からオーディオ／ビデオデータを検索するためのものである。オーディオ／ビデオ１４０のデータストリームは、デバイスインタフェース１３０からリアルタイムで流れる。状態リスナ１３２はこのデータを、モバイルデバイス１０２上の離散的変化を表すアトミックユニットに分解する。オーディオデータの場合、オーディオサンプルは離散的間隔で格納される、または単一のオーディオストリームへ添付される固定長さであってもよい。本発明の好適な一実施形態は、オーディオバッファを固定長さのサンプルのシーケンスとして格納するが、オーディオデータを保存してこれをビデオフレームに相関させる任意のアプローチでもうまく作動する。ビデオデータの場合、データを表す方法としては、離散的間隔で撮られる画像シーケンスとして、個々のピクセル更新のストリームとして、またはハイブリッドアプローチによるもの、を含む幾つかの方法が可能性として存在する。本発明のこの好適な実施形態は、何らかの前処理によってビデオバッファをピクセルストリームとして格納するハイブリッドアプローチを採用し、これらのピクセル更新を一定間隔で単一の画像に圧潰する後処理ループがこれに続く。しかしながら、ビデオデータを先に保存されたビデオとの比較を可能にする方式で格納する任意の方法は本発明の範囲内である。後に詳述する図４は、オーディオ／ビデオバッファのフォーマットの一実施形態を示す。
【００４６】
第２のブロック３０４は、状態リスナ１３２が動的コンテンツをフィルタリングするためのものである。モバイルデバイス１０２のビデオディスプレイ上のピクセルは、何れのナビゲーションイベントにも関わりなく変わることがある。例としては、クロック表示、バッテリインジケータ、信号強度インジケータ、カレンダ、他が含まれる。この動的コンテンツはディスプレイ上の画像を変えることができ、実際には人であるユーザが論理上モバイルデバイス１０２を同じ状態にあると解釈するときに、状態リスナにモバイルデバイス１０２上の状態変化を解釈させる。この動的コンテンツを処理する方法は、画像の比較に際してこのようなコンテンツを無視する発見的画像照合アルゴリズムを使用すること、テキスト抽出を使用してコンテンツを識別し、かつこれを画像バッファ内で置換すること、またはディスプレイの他の領域上の画像比較を使用して動的コンテンツをマスクすべき時点を識別し、かつこのコンテンツを先に保存された画像のそれでマスクすること、を含んで幾つか存在する可能性がある。本発明の好適な一実施形態は後者のアプローチを使用するが、動的コンテンツをフィルタリングする、または処理するソリューションは何れも本発明の範囲内にある。動的コンテンツのマスキング論理の例示的な実施形態については、図５及び図６に関連して後に詳述する。
【００４７】
次のブロック３０６において、状態リスナ１３２は迅速な更新及び比較のためにビデオデータを処理する。モバイルデバイス１０２から着信するデータ量に起因して、全てのデータユニットをグラフ記憶装置１０６のコンポーネントに保存することは非実際的である。また、状態比較の間にデータバッファの全てのエレメントを保存された全ての状態の全てのエレメントと比較することも非実際的である。従って、ビデオデータを表す所定のデータ構造を使用してメモリ使用量を最適化し、かつ計算量を最小限に抑えることが必要とされる場合がある。実装によっては、全てのピクセル更新を所定の間隔で単一画像に圧潰し、次いで（もしあれば）この画像及びオーディオサンプルを圧縮することによって、ビデオバッファをダウンサンプリングすれば足りることがある。しかしながら、ビデオループの検出が必要とされる、または単一の静止画像ではなく多重フレームの動画を一致させることが望ましい実装の場合、ビデオバッファを表現するデータ構造及び比較に使用されるアルゴリズムは、変換及び比較プロセスの間のデータ損失を容認するものであるべきである。一般的な意味において、これは、ビデオバッファは格納用の圧縮バージョンへと容易に変形しなければならないだけでなく、発生する場合もあったタイミングまたはサンプルレートのシフトに関わらず、同じバッファから結果的に生じることができたはずの全ての可能な圧縮を識別するに足る情報も含むべきであることを意味する。しかしながら、各比較の間の単一のピクセル／チェックサムバッファの線形トラバーサルを含む、これらの基準を満たすデータ構造及びアルゴリズムのシステムは何れもうまく作動する。後述する図７は、ハッシング及びルックアップのシステムを使用することによって遙かに少ない処理で同じタスクを達成する、本発明の一実施形態によるオーディオ及びビデオ処理データ構造を示す。
【００４８】
次に、ブロック３０８において、状態リスナ１３２はビデオデータ内のループを検出する。無限にループするビデオデータストリームから成るモバイルデバイスの状態に関しては、状態リスナのビデオバッファをルックバックして反復するセクションを発見し、かつこれが続く限りさらなる反復はどれも無視する方法が存在する場合がある。そうでなければ、ビデオバッファは任意の長さを得る可能性もあり、状態リスナ１３２は絶対にモバイルデバイス１０２上に安定状態を検出せず、従属システム（自動化されたクローラ１３４等）はモバイルデバイスが安定するのを待つ間にブロック状態になる可能性もある。ビデオバッファが離散的間隔で画像フレームに分解されれば、フレーム捕捉間隔はモバイルデバイス１０２上のループの間隔と絶対に同期せず、結果的に非反復画像のシーケンスが生じることから、これらのフレームのみを基礎としてループを検出することは不可能である場合がある。チェックサムヒットバッファが使用されていれば、カレントフレームバッファにおいてチェックサムヒットバッファにも現出する反復するフレームインスタンスを探索することによって、ループを検出することは可能であると思われる。しかしながら、このアプローチは、チェックサムヒットバッファにおいてエントリを増殖させる結果となる可能性がある。モバイルデバイス１０２上のループ状態は何れも正確に同じピクセル更新を繰返し生じさせることから、別のアプローチは、単にチェックサムバッファ内でループを探すというものである。後述する図８は、例示的なループ検出アルゴリズムを示す。
【００４９】
最後にブロック３１０において、状態リスナ３１２は格納のためにオーディオ／ビデオデータを圧縮する。オーディオ／ビデオバッファによって表現される状態はグラフに保存される必要があると決定されていれば、データは、後処理によって格納のためにさらに圧縮されてもよい。オーディオ及びビデオデータを圧縮する方法は、多く存在する。具体的には、ＪＰＥＧ及びＧＩＦ画像圧縮の双方がサポートされていて、オーディオサンプルは、オーディオサンプルレートを変換し、かつＷＡＶファイルとして保存することによって圧縮され得る。しかしながら、ＭＰＥＧ、ＰＮＧ、他等の他の圧縮方法も本発明の範囲内である。圧縮方法は、圧縮データを状態リスナのオーディオ／ビデオバッファのコンテンツと比較できるものであるべきである。本発明のこの好適な実施形態は、単にソース（非圧縮）データから計算されるチェックサムを圧縮された結果と共に保存し、かつチェックサムを使用して比較を行う。
【００５０】
図４は、図３の最初のブロック３０２「デバイスインタフェースからオーディオ／ビデオデータを検索する」において使用される例示的なオーディオ／ビデオバッファフォーマットを示す。ある実施形態において、デバイスインタフェース１３０から着信するビデオデータはピクセル更新のストリーム４００として格納され、各ストリームはＸＹ座標４０２と、ピクセル値４０４と、各ピクセルの前処理の間に計算される画像チェックサム４０６とを有する。チェックサムは画像内のあらゆるピクセルの累積ハッシュであり、任意の単一ピクセルの変更に対して、単に古いピクセルのハッシュ値を減算し、かつ新しいピクセルのハッシュ値を加算することにより迅速に更新され得る。計算されるチェックサムを変更しないピクセル更新は何れも、メモリ及び処理を節約するためにバッファから除外される。デバイスインタフェース１３０は、状態リスナ１３２の開始時にフル画像からチェックサムを計算し、その後は、ピクセルが変わる毎に画像の実行チェックサムを増分式に更新する。
【００５１】
状態リスナによるループポーリングの反復は悉く、ストリーム内の各ピクセル更新を捕捉し、これらをカレント画像に適用し、画像を保存し、画像を最終のチェックサム値に関連づけ、かつ（もしあれば）オーディオデータ４０８のサンプルを関連させる。画像、チェックサム値及びオーディオサンプルから成るこの保存された構造体を「フレーム」４１０と呼ぶ。データはモバイルデバイス１０２から超高速で流れる場合があるが、フレーム４１０はループポーリングにつき１つの速度でしか保存されない。フレームは、チェックサム値を比較することによって、かつチェックサム値が等しければ、任意選択としてオーディオサンプルを比較することによって互いに比較され得る。フレームは、４１２において、高速ルックアップのためにデータ構造内のチェックサムにより指数を付けられる。ピクセル更新を離散的間隔で単一画像に圧潰することは、モバイルデバイス１０２から着信するビデオを効果的にダウンサンプリングし、結果的に、状態がグラフへ保存される際の格納スペースの消費を少なくする。
【００５２】
図５は、図３の状態リスナ１３２による第２のプロセスブロック３０４において使用される動的コンテンツのマスキング論理を示す機能ブロック図である。モバイルディスプレイ１１２上の動的コンテンツの存在は、画面の１つの領域を、人であるユーザによって状態リスナコンフィギュレーションの一部として選択された同じ画像領域（「マスクコンフィギュレーション」）５００と比較することにより識別される。コンフィギュレーションの間、ユーザは、それを動的コンテンツを含む画面として識別する画像領域（「条件領域」）を選択する。またユーザは、動的コンテンツのロケーションを表現する異なる画面領域（「マスク領域」）５０４ａも選択する。この画像は、比較を目的として格納される。次に、モバイルデバイスディスプレイ１１２の条件領域５０６がコンフィギュレーション５０２内の格納された画像のコンテンツに一致すると、格納された画像のマスク領域５０４ａのコンテンツはビデオバッファ５０４ｂ内へ挿入され、画面のその領域における、そのバッファに早期に挿入されたかもしれない動的コンテンツ５０８が上書きされる。モバイルデバイス１０２上の動的コンテンツ５０８の領域から着信するさらなるピクセル更新は何れも、条件領域５０６のコンテンツがそれ以上格納された画像５０２のそれに一致しなくなるまでビデオバッファから除外される。
【００５３】
図６は、図５に記述された例示的なマスクコンフィギュレーションツールを示す。本例において、マスクコンフィギュレーション６００は、クロック及びカレンダディスプレイを伴うホームページを示すモバイルディスプレイについて示されている。選択された条件領域６０２はホームページ上の静止画像の一部であり、マスク領域６０４ａはクロック及びカレンダのディスプレイエリア全体を含む。従って、条件領域６０２における静止画像によって識別される画面が識別されると、保存されたマスク領域６０４ｂの部分領域のコンテンツはビデオバッファ内でポピュレートされ、変化するクロック及びカレンダディスプレイからのピクセル更新はバッファに挿入されない。モバイルデバイス１０２がそれ以上静止背景画像６０２ｂを表示しなくなると直ぐに、状態リスナ１３２は、先にマスクされていた領域からのピクセル更新の受信を開始する。
【００５４】
条件領域６０４ｂがマスクコンフィギュレーション６００に一致することを識別する比較アルゴリズムは、全ピクセルの線形探索または局部的なチェックサム比較を含む任意のものを使用することができる。ある好適な実施形態では、局部的チェックサムが使用され、各マスクコンフィギュレーション６００毎に１つのランニングチェックサムが保持され、かつ条件領域６０４ｂにおける１つのピクセルが変わる時点でいつでも更新される。マスクコンフィギュレーション６００のチェックサムが、格納された画像内のマスク領域６０４ａのチェックサムに一致すると、マスク領域６０４ａは先に述べたようにしてビデオバッファ内で更新される。この方法は画像領域の高速比較を見越したものであるが、この比較を実行する他の任意の方法も本発明の範囲内である。
【００５５】
図７は、状態リスナ１３２によるオーディオ／ビデオ処理のために図３の第３のブロック３０６において使用される例示的なオーディオ／ビデオ処理データ構造７００を示す。状態リスナ１３２はフレーム７０２のバッファを保持するが、ループ検出の目的で、カレント状態において見られる全てのチェックサム７０４のバッファも保持する。但しこれらは、状態が安定すれば、グラフ記憶装置コンポーネント１０６内に永続しない。また、フレームインデックスルックアップ７１２に対するチェックサムも存在してもよい。さらに、状態リスナ１３２は全てのフレームに関するタイミング情報７０６、並びにチェックサムによる永続フレームのルックアップのためのデータ構造７０８を保持する。チェックサムバッファ内の１つのチェックサムが１つまたは複数の永続フレームに一致すると、これはチェックサムヒットバッファ７１０内で追跡される。永続的構造７１４の場合、状態リスナ１３２はチェックサム７１６によってハッシュされるフレームルックアップを使用する。データ構造は、モバイルデバイスの状態変化毎にクリアされる一時的な構造であってもよい。
【００５６】
チェックサムヒットバッファ７１０は、単にカレントフレームバッファ内のフレームに一致するフレームだけではなく、任意の個々のピクセル更新の間に一致された全てのフレームを追跡する。単一画像から成るモバイルデバイス状態の場合、各状態は結果的にバッファ内に１つのフレームとなることからこれは重要ではない。しかしながら、静止画像に落ち着く前の動画からなるモバイルデバイス状態の場合、フレームバッファへ保存されるフレームのタイミングは僅かにシフトする可能性もあり、結果的に、最終フレームを除いてフレームバッファ内の全く異なるフレームによって表現される可能性もある単一状態になる。さらに、動画が無期限にループすれば、フレームバッファ内のシフトは、同一の状態がフレームバッファにおいて２つ以上の完全に区別的なフレームセットによって表現され得ることを意味する可能性もある。全てのチェックサムヒットのバッファの保持は、これが発生しないことを保証する。
【００５７】
図８は、状態リスナ１３２によって実行されるオーディオ／ビデオ処理の第４のブロック３０８において利用されてもよい例示的なループ検出アルゴリズムを示す。図８で表現される一例の場合、チェックサムバッファ８０４におけるループ８０２、Ｃ７−Ｃ２−Ｃ４−Ｃ５−Ｃ４−Ｃ６は３回反復し、第１のループはフレームバッファ８０６におけるフレームＦ１及びＦ２内に出現し、第２のループはフレームＦ２及びＦ３内に、かつ第３のループはフレームＦ４及びＦ５内に出現する。この結果、フレームＦ１はチェックサムＣ４を有することになり、Ｆ２はチェックサムＣ２を、Ｆ３はＣ６を、Ｆ４はＣ５を、かつＦ５はＣ６を有することになる。フレームＦ１からＦ５までを見ることによって、このモバイルデバイス状態がループしていると述べることは不可能であるが、ピクセル更新ストリームからのチェックサムバッファを見れば、それは可能である。
【００５８】
最終チェックサムから開始し、かつ遡って進んでいけば、チェックサムバッファにおけるループを検出することができる。ループ検出アルゴリズムは単に最終チェックサム８１０の先行インスタンスを探し、かつこれを発見する度に、順次、その一致から遡って先行チェックサムがカレントチェックサム８１２より前のチェックサムに一致するかどうかの確認を続ける。一致するストリング８１４が最初の２つの一致の間のスペース全体がトラバースされる前に終われば、ループは存在していない。最初の２つの一致の間のスペースが完全に再現されていれば、潜在的ループが発見されている。
【００５９】
ループ検出アルゴリズムは遡って探す作業を続け、潜在的ループの反復が存在する回数を確認する。潜在的ループの反復回数が予め設定されたしきい値より多ければ、動画はループであるとされる。デバイスインタフェース１３０から着信する、同じパターンに一致する後続のチェックサムは全て無視されるが、これもまた、フレームバッファにこれ以上フレームは追加されないことを意味する。予測されるパターンに一致しないチェックサムが受信されれば、そのループは終了していて、チェックサム及びフレームは再びバッファへ追加される。
【００６０】
ループ検出は計算集約的なオペレーションであり、よってアルゴリズムを指定された持続時間のループの探索のみに限定することが一助となる。フレームインデックスルックアップ８２０に対するチェックサムを使用し、かつ先行フレーム８２２の時間をチェックすることによって、ループ検出アルゴリズムは任意に短いループの探索、または極端に長い動画におけるループの探索を回避することができる。ループ検出持続時間の最短及び最長しきい値は、人であるオペレータによって設定することができる。
【００６１】
状態リスナ１３２は、モバイルデバイス状態が安定したことを決定すると、一致が存在するかどうかを確認するために、データバッファのコンテンツを保存されたグラフ内の既存のノードと比較してもよい（図２のブロック２２４）。概して、考慮すべき事例は、ビデオバッファが単一の静止画像において終了した、または無限にループする動画として終了した、という２つが存在する。
【００６２】
静止画像の場合、グラフ内の一致するノードは何れも、バッファ内の最終コンテンツに一致する画像内で終わらなければならない。遷移動画が静止画像に先行している状態の場合、可能なアプローチは幾つか存在する。最も単純なソリューションでは、状態リスナ１３２は全ての遷移動画をドロップして１つのノードにつき１つのフレーム画像のみを格納することができる。このアプローチに対する改良は、任意の遷移画像をグラフ内の２ノード間のリンクに関連づけることである。しかしながら、同じ状態へ至る多くの経路が同じ遷移画像の幾つかまたは全てを共有する可能性もあることから、これによりデータの複製が生じる可能性もある。ある好適なアプローチは、まず全ての遷移画像を宛先ノードの一部として保存し、かつこのノードがモバイルデバイス上の状態によって一致される度に、データバッファ上の全てのチェックサムヒットと保存されたノード上のフレームとの共通部分を保持することである。この共通部分に存在しない状態リスナのデータバッファにおけるフレームは、カレントナビゲーションイベントに関連づけられる着信リンクに関連づけられ、共通部分に存在しない保存されたノード上のフレームは、他の全ての着信リンクのために各動画の終わりへ移動される。このアプローチは、グラフ内の保存されたノードが全ての可能な着信経路に共通する最大の遷移フレームセットを含み、一方で他の全ての遷移動画を、これらが関連づけられる着信リンクに固有のものとして正確に表現することを保証する。
【００６３】
データバッファがループ内で終わる事例では、これが静止画像内で終わるかのように同じ概念が当てはまるが、ループはアトミックエンティティとして扱われなければならないことが異なる。言い替えれば、グラフ内の任意のノードもまた、一致するループ内において終わるべきである。ループに先行して、状態リスナ１３２は、遷移動画の関連づけを行う上述のアプローチのうちの何れをも採用することができる。ある好適な実施形態では、全ての遷移動画の共通部分を発見し、かつ他のフレームを着信リンク間に分散させる同じアプローチが採用される。無限にループする動画を一致させることは、静止フレームの一致より複雑である。単一動画を比較する際と同じ問題が存在するが、モバイルデバイスは必ずしも動画の表示を同じポイントで開始しなくてもよい点が異なる。従って、ループする動画を比較する何れの方法も、この事例に対処するために、比較の間に円形のデータ構造におけるループ部分をシフトする何らかの方法を採用すべきである。ある好適な実施形態では、任意の既存のループする動画との一致をチェックする際に、ループの一部であるチェックサムに対応するチェックサムヒットバッファのコンテンツがシフトされる。但し、ピクセルストリームのループ部分をシフトすることを含む他の方法も本発明の範囲内である。
【００６４】
図９は、状態比較アルゴリズムの一実施形態を表す状態図であり、考慮すべき２つの事例、即ち、９０２における、ビデオバッファが単一の静止画像において終わるか、または９０４における、無限にループする動画で終わるか、が記述されている。
【００６５】
９０２において、フレームバッファが静止画像において終われば、同じ静止画像内で終わるノードは何れも潜在的一致とされる。図９における例では、状態リスナ１３２は、フレームバッファ９１０においてフレームＦ４と同じチェックサムを有する全てのフレームを探索し、これらが属するノードを取得し、かつ一致フレームにおいて終わるノードのみを保持する。このようなノードが２つ以上存在すれば、状態リスナ１３２はチェックサムヒットバッファ９１２へ遡って参照し、順次、最も連続的なフレームに一致するものを発見する。本例において、一致するノードはフレームＦ９及びＦ８において終わっていて、これらのフレームは各々最終フレームＦ４と、フレームＦ３において結果的に生じた処理ループの間に見られたチェックサムとに一致した。カレントナビゲーションイベントに関して着信リンクが既に存在していれば、９１４において一致する状態が存在し、９１６においてカレント状態が更新され、かつ新しいリンクは生成されない。存在していなければ、フレームバッファ上の任意の先行する不一致フレームが一致する部分のプリアンブルとされ、カレントナビゲーションイベント用に生成された新しい着信リンクに関連づけられる。この事例では、フレームＦ２及びＦ３が新しい着信リンクに関連づけられた。同様に、保存されたノード上の任意の先行する不一致フレームは一致する部分のプリアンブルとされ、任意の既存の着信リンクに関連づけられる動画の終わりへ移動される。この事例では、フレームＦ１１が既存の着信リンクの終わりへ移動された。
【００６６】
９０４において、フレームバッファ９２０がループする動画において終われば、状態リスナ１３２は、チェックサムヒットバッファ９２２において、既存のノードの終わりにおけるループする動画の一部であるフレームを探索する。この例では、状態リスナ１３２はフレームＦ６、Ｆ７、Ｆ８及びＦ９について考察し、これらのフレームのうちの１つまたはそれ以上を含むループする動画で終わる任意のノードを発見する。次に、状態リスナ１３２は、チェックサムヒットバッファのループする部分を一度に１つずつシフトして、任意の既存のループする動画における全てのフレームが順次一致されたかどうかを確認しようとする。９０４の例では、状態リスナ１３２はチェックサムヒットバッファのシーケンスＦ６−Ｆ７−Ｆ８−Ｆ９について考察し、次にＦ９−Ｆ６−Ｆ７−Ｆ８、次にＦ８−Ｆ９−Ｆ６−Ｆ７、次にＦ７−Ｆ８−Ｆ９−Ｆ６と考察する。９２４において、第３の反復時に、既存のノードを終わらせるループする動画Ｆ８−Ｆ９−Ｆ７が一致する。カレントナビゲーションイベントに関して着信リンクが既に存在していれば、９２６において、カレント状態が更新され、新しいリンクは生成されない。存在していなければ、フレームバッファ上の任意の先行する不一致フレームは一致する部分のプリアンブルとされて、カレントナビゲーションイベント用に生成された新しい着信リンクに関連づけられる。この事例では、フレームＦ１及びＦ２が新しい着信リンクに関連づけられた。同様に、保存されたノード上の任意の先行する不一致フレームは一致する部分のプリアンブルとされ、任意の既存の着信リンクに関連づけられる動画の終わりへ移動される。この事例では、このようなフレームは存在せず、よって着信リンクは変更されないままにされた。
【００６７】
図１０は、本発明の実施形態による例示的な自動化されたクローラ１３４の論理１０００を示すブロック図である。まず、ブロック１０１０において、自動化されたクローラ１３４は人であるオペレータによって開始される。状態リスナ１３２がまだ開始されていなければ、自動化されたクローラ１３４は状態リスナ１３２を開始し、作業を続ける前に、状態リスナ１３２によりモバイルデバイス１０２が安定状態にあることが表示されるのを待つ。また、自動化されたクローラ１３４は、グラフのルートノードが確定されていること、及びルートノードに至るナビゲーション制御の経路が設定されていることを確認するチェックも行う。
【００６８】
自動化されたクローラ１３４は、ルートノードに至るナビゲーションイベントの経路を検索する。前記経路は、人であるオペレータによってコンフィギュレーション設定としてグラフ内に保存されている。自動化されたクローラ１３４は次に、ブロック１０１２において、これらのナビゲーションイベントをモバイルデバイス１０２へ送信し、これを既知の状態にさせる。
【００６９】
ある実施形態では、ブロック１０１４において、自動化されたクローラ１３４は、あらゆる可能なナビゲーションイベントに関して確定された発信リンクを持たないノードを発見するまで、グラフ内のあらゆるノードの広さ優先トラバーサルを実行する。自動化されたクローラ１３４は、デバイスインタフェース１３０へ問い合わせることにより、モバイルデバイス１０４によってどのナビゲーションイベントがサポートされているかを発見する。このリストを発信リンクのためのナビゲーションイベントリストによってフィルタリングすることにより、自動化されたクローラ１３４は、モバイルデバイス１０２上のその状態に関してはまだ試行されていないナビゲーションイベントを発見する。
【００７０】
自動化されたクローラ１３４は、ルート状態から所定数より少ないナビゲーションイベントだけ離れたモバイルデバイス１０２上の状態までしかナビゲートしないように構成され得る。完全にマップされていない最近ノードがこのナビゲーションイベント数よりさらに離れていれば、自動化されたクローラ１３４はそれ以上行う作業がなく、停止する。自動化されたクローラ１３４がこのような限定的機能を有していれば、ブロック１０１６において、自動化されたクローラ１３４は、クローラ１３４が依然として設定された最大深さ内に存在していることを確認するチェックを行う。最大深さが超過されていれば、ブロック１０１８において、自動化されたクローラ１３４は終了する。
【００７１】
最大深さが超過されておらず、かつ完全にマップされていないノードが発見されていれば、ブロック１０２０において、自動化されたクローラ１３２はモバイルデバイス上のその状態までナビゲートする。自動化されたクローラは、その標的ノードに到達すると、ブロック１０２２において、その状態用に設定された限界条件が存在するかどうかを確認するチェックを行う。所定の事例では、自動化されたクローラ１３４による望ましくないダウン経路の継続を禁止するために、ナビゲーションイベントは、モバイルデバイス上に存在するオーディオまたはビデオデータを基礎として有効化または無効化されてもよい。
【００７２】
限界条件により無効化される任意のナビゲーションイベントに関して、自動化されたクローラ１３４は、ブロック１０２４において、そのノード及びナビゲーションイベントに関する空の発信リンクを生成する。これは、グラフ・トラバーサルアルゴリズムに対して、この経路について、それが辿られなかったとしても考慮されたことを表示し、前記ノードは、許容された全てのナビゲーションイベントが取り込まれた時点でアルゴリズムに完全にマップされて現出する。
【００７３】
カレントノードからの発信リンクを持たない許容された任意のナビゲーションイベントについて、ブロック１０２６において、自動化されたクローラ１３４はこれらのうちの１つを選択し、デバイスインタフェース１３０を介してこれをモバイルデバイス１０２へ送信する。次にクローラ１３４は、プロセスの次の反復を開始する前に、状態リスナによってモバイルデバイスが安定状態にあることが表示されるのを待つ。
【００７４】
保存されたグラフ構造体における、モバイルデバイスの仮想化を表す宛先ノードを所与として、物理的モバイルデバイス１０２上のそのノードに対応する状態までナビゲートする必要がある所定の時点が存在する。自動化されたクローラによるループ処理の間は、このようなシナリオが２つ発生するが、人であるユーザが物理的モバイルデバイス１０２を手動でナビゲートすることによって所定のノードからグラフ構造体を拡張したい場合を含む他のシナリオも存在することがある。これらの事例の全てにおいて、グラフにおいて物理的モバイルデバイス１０２のカレント状態に対応するノードを発見し、グラフにおいてカレントノードと宛先との間の最短経路を発見し、かつ次にこの経路に対応するナビゲーションイベントをモバイルデバイス１０２へ送信する手段が存在しなければならない。以下、このプロセスについてさらに詳しく説明する。
【００７５】
図１１は、本発明の実施形態による例示的な自動化されたクローラのナビゲーション論理を示す、図１０からのブロック図の１１００である。ナビゲーション論理１１００はブロック１１１０において開始され、この時点で自動化されたクローラ１３４はモバイルデバイス１０２をグラフ内の宛先ノードに対応する状態に置く必要がある。ナビゲーション論理１１００は、モバイルデバイス１０２のカレント状態を表すノードと、グラフ内の宛先ノードとを認識している必要がある。
【００７６】
ナビゲーション論理１１００は次に、ブロック１１２０において、宛先状態までの経路を発見する。宛先がルートノードであれば、ナビゲーション論理は先に設定された経路を使用する。宛先が、マップされていないノードの探索の間にグラフのトラバーサルによって発見されていれば、そのトラバーサルアルゴリズムは、定義からすると既存の最短経路であるルートノードから宛先までの経路を発見している。他の任意の事例については、単一ペア最短経路のＡ＊アルゴリズムが使用され、この場合、経路のコストは、当初、ルートノードまでの設定経路の長さとグラフにおける宛先ノードのルートノードからの深さとの合計を超えないものであるように推定される。
【００７７】
ナビゲーション論理１１００は次に、ブロック１１３０において、次の適切なキーを押す。ナビゲーション論理は経路から次のナビゲーションイベントを除去してデバイスインタフェースへ送り、モバイルデバイス上でナビゲーションを実行する。ナビゲーション論理１１００は、ブロック１１４０において、状態リスナ１３２を、状態リスナ１３２によってモバイルデバイス１０２が安定状態にあることが表示されるまでポーリングする。またナビゲーション論理は状態リスナ１３２に問い合わせて、モバイルデバイス１０２が、安定状態となった後はそのナビゲーションイベントの後に予測された状態にあることを検証する。予測された状態になければ、もしくはその状態が最大時間しきい値の後に安定していなければ、ナビゲーション論理１１００はエラーが発生しているものと判断する。
【００７８】
ブロック１１５０において、さらにナビゲーションイベントが存在していれば、ナビゲーション論理１１００は次のナビゲーションイベントをモバイルデバイス１０２へ送信する。存在しなければ、モバイルデバイス１０２はその宛先状態へ到達しているか、エラーを発生している。何れの場合も、ブロック１１６０において、ナビゲーション論理１１００はその処理を終了している。ナビゲーション論理１１００は、ナビゲーションの間にエラーに遭遇すれば、自動化されたクローラ１３４をモバイルデバイス上のルート状態までナビゲートするその初期状態へ戻す。
【００７９】
モバイルデバイス上には、自動化されたクローラによって生成されたバーチャルデバイスのユーザの関心を惹くと思われる画面、しかしながら限界条件に起因して、またはナビゲーションイベントのランダムなシーケンスはその画面に到達するとは思えないことからクローラは発見しない画面が存在する場合がある。例としては、モバイルデバイスによる電話番号のダイアリング、ＳＭＳメッセージの入力及び送信またはライブ写真及びビデオの撮影が含まれてもよい。このような画面に対しては、状態リスナが実行中である間に人であるオペレータが経路を手動でナビゲートすることができる。これは、人であるユーザによるコンテキスト上の案内のみによって、自動化されたナビゲーションの間と同様にグラフ内の経路を捕捉しかつ保存する。
【００８０】
手動ナビゲーションの間に捕捉される状態のシーケンスは、バーチャルデバイスのエンドユーザへ双方向式に、または非双方向ビデオとして表示され得る。後者の場合、これらの状態は、エンドポイントビデオとして集合的に定義される。バーチャルデバイスのグラフ表現を生成する人であるオペレータは、これらの画面を１つのエンティティにグループ化し、かつこのエンティティを画面へのエントリポイントを表すグラフ内のノードに関連づける。ユーザは、バーチャルデバイスをナビゲートしていて特定のノードに到達すると、エンドポイントビデオ内に、特有の機能を示す画面シーケンスを見るオプションを与えられる。
【００８１】
図１２は、本発明の実施形態による記録／制御環境の属性を使用する例示的な装置を示す。記録／制御環境１０４は、汎用コンピュータ１０８または他の何らかの処理装置上で実行されてもよい。汎用コンピュータ１０８は、ソフトウェアアプリケーションまたは他の電子的命令を実行することができる任意のコンピュータシステムである。これには、Ｗｉｎｄｏｗｓ ＰＣまたはＡｐｐｌｅ Ｍａｃｈｉｎｔｏｓｈ等の一般的に利用可能なコンピュータハードウェア及びオペレーティングシステム、またはＵｎｉｘまたはＬｉｎｕｘサーバ等のサーバベースのシステムが含まれる。またこれには、汎用ＣＰＵまたはＣＰＬＤ、ＦＰＧＡまたは他の任意の類似タイプのプログラマブル論理技術を基礎とするカスタム設計のプログラマブル論理プロセッサの何れかを使用して命令を処理するように設計されるカスタムハードウェアが含まれる可能性もある。
【００８２】
図１２において、汎用コンピュータ１０８は、プロセッサ１２０２、フラッシュ１２０４、メモリ１２０６及びスイッチコンプレックス１２０８と共に示されている。また汎用コンピュータ１０８は、入力及び出力デバイスのための複数のポート１２１０を含んでもよい。スクリーン１２１２は、記録／制御環境１０４のインタフェースを視るために取り付けられてもよい。入力デバイスは、ユーザが記録／制御環境１０４を介してナビゲートできるようにするキーボード１２１４またはマウス１２１６を含んでもよい。メモリ１２０６またはフラッシュ１２０４内に存在する、コンピュータ読取り可能媒体の型式であるファームウェアは、記録／制御環境１０４に関連する上述のオペレーションを実行するためにプロセッサ１２０４によって実行され得る。さらに、メモリ１２０６またはフラッシュ１２０４は、先に述べたようなグラフノード状態、プリアンブル及びノード情報間の遷移シーケンスを格納することができる。汎用コンピュータは、コンピュータネットワークまたはインターネットへ接続するためにサーバ１２１８へ接続されてもよい。
【００８３】
このファームウェアは、コンピュータベースシステム、プロセッサ搭載システムまたは命令実行システム、装置またはデバイスから命令をフェッチし、かつこれらの命令を実行することのできる他のシステム等の命令実行システム、装置またはデバイスによる使用のために、またはこれらに関連して使用するために任意のコンピュータ読取り可能媒体上へ格納され、かつ移送され得る点に留意されたい。本明細書のコンテキストにおいて、「コンピュータ読取り可能媒体」は、命令実行システム、装置またはデバイスによる使用のための、またはこれらに関連して使用するためのプログラムを包含し、格納し、伝達し、伝搬し、または移送することができる任意の媒体であり得る。コンピュータ読取り可能媒体は、例えば、電子式、磁気式、光学式、電磁式、赤外線または半導体のシステム、装置、デバイスまたは伝搬媒体であり得るが、この限りではない。コンピュータ読取り可能媒体のより具体的な例には、１つまたは複数のワイヤを有する電気接続部（電子式）、ポータブルコンピュータディスケット（磁気式）、ランダムアクセスメモリ（ＲＡＭ）（磁気式）、読取り専用メモリ（ＲＯＭ）（磁気式）、消去可能なプログラム可能読取り専用メモリ（ＥＰＲＯＭ）（磁気式）、光ファイバ（光学式）、ＣＤ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ、ＤＶＤ−ＲまたはＤＶＤ−ＲＷ等のポータブル光ディスクまたはコンパクトフラッシュカード、セキュアドデジタルカード、ＵＳＢメモリデバイス、メモリスティック及びこれらに類似するもの等のフラッシュメモリが含まれるが、この限りではない。コンピュータ読取り可能媒体は、紙または他のプログラムが上にプリントされる別の適切な媒体である可能性もあることに留意されたい。そのプログラムテキストは、紙または他の媒体の光学走査を介して電子的に捕捉され、次いでコンパイルされ、インタープリトされ、または他に必要であれば適切な方法で処理され、次いでコンピュータメモリに格納され得ることがその理由である。
【００８４】
クレームに記載している「コンピュータ」または「汎用コンピュータ」という用語は、少なくともデスクトップコンピュータ、ラップトップコンピュータまたは移動体通信デバイス（例えば、セルラまたはＷｉ−Ｆｉ／Ｓｋｙｐｅ（登録商標）ホン、ｅメール通信デバイス、パーソナルデジタルアシスタントデバイス）及びマルチメディア再生デバイス（例えば、ｉＰｏｄ（登録商標）、ＭＰ３プレーヤまたは任意のデジタルグラフィックス／写真再生デバイス）等の任意のモバイルコンピューティングデバイスを包含するものとする。或いは、汎用コンピュータは、本発明の実施形態による記録または再生機能のみをサポートするように設計される特有の装置であってもよい。例えば、汎用コンピュータは、モバイルデバイスと統合または接続し、かつ専ら前記デバイスと相互作用してオーディオ及びビデオデータ応答を記録するようにプログラムされるデバイスであってもよい。
【００８５】
以上、添付の図面を参照して本発明をその実施形態に関連して十分に説明したが、当業者には様々な変更及び修正が明らかとなることは留意されるべきである。このような変更及び修正は、添付のクレームに規定されている本発明の範囲に包含されるものとして理解されるべきである。
【００８６】
一般的な当業者は、本発明の精神及び範囲を逸脱することなく多くの変更及び修正を行うことができる。従って、説明された実施形態は単に例示を目的として記述されていること、及びこれらの実施形態を添付のクレームに記載された本発明を制限するものとして捉えるべきでないことは理解されなければならない。例えば、本発明の多くの実施形態は特有の結果に対する論理プロセスを特有の順序で記述しているが、本発明が記述されている順序に限定されないことは理解されるべきである。２つ以上のステップは、単一のステップに結合されてもよく、または、プロセスは記述されている順序以外で実行されてもよい。例えば、アプリケーションが情報の検索または格納である場合、記述されている実施形態はオーディオ及びビデオデータの記録または再生を特有の順序で発生する別々のステップとして論じている。本発明は、これらのステップを単一のステップに結合して、ビデオ及びオーディオデータを同時的に再生または記録すること、またはオーディオより前にビデオが検索されるように、またはその逆であるように順序を逆転することを包含して理解されるべきである。
【００８７】
本明細書において本発明及びその様々な実施形態を説明するために使用されている用語は、一般的に定義されているその意味または当業者によって定義されるその意味による意味合いだけでなく、こうした一般的に定義されている意味の範囲を超える本明細書の構造、物質または行為における特有の定義をも包含して理解されるべきである。従って、あるエレメントを本明細書のコンテキストにおいて２つ以上の意味を包含するものとして理解できれば、クレームにおけるその使用は、本明細書及びその用語自体によって裏付けられる意味の全ての可能性に対し包括的であるものとして理解されなければならない。
【００８８】
従って、添付のクレームの用語またはエレメントの定義は、本明細書において文字通りに記述されるエレメントの組合せだけでなく、ほぼ同じ機能をほぼ同じ方法で実行してほぼ同じ結果を達成するための全ての同等な構造、物質または行為をも包含して定義される。従って、この意味合いにおいては、クレームにおける任意の１つのエレメントに関して２つ以上のエレメントより成る均等の置換を行い得ること、またはクレームにおける２つ以上のエレメントに関して単一のエレメントが置換されてもよいことが企図される。
【００８９】
現時点で既知である、または後に考案される、一般的な当業者から見たクレームされている発明対象からの微弱な変更が等しくクレームの範囲内にあることは、明らかに企図される。従って、現時点または後日一般的な当業者に知られる明白な置換は、規定されたクレームエレメントの範囲内にあるものと定義される。
【図１】
2011517795.tif 000003
【図２】
2011517795.tif 000004
【図３】
2011517795.tif 000005
【図４】
2011517795.tif 000006
【図５】
2011517795.tif 000007
【図６】
2011517795.tif 000008
【図７】
2011517795.tif 000009
【図８】
2011517795.tif 000010
【図９】
2011517795.tif 000011
【図１０】
2011517795.tif 000012
【図１１】
2011517795.tif 000013
【図１２】
2011517795.tif 000014
【国際調査報告】
2011517795.tif 000015
2011517795.tif 000016
2011517795.tif 000017