JP2011517795A - バーチャルデバイスインタフェースの自動記録 - Google Patents

バーチャルデバイスインタフェースの自動記録 Download PDF

Info

Publication number
JP2011517795A
JP2011517795A JP2010546826A JP2010546826A JP2011517795A JP 2011517795 A JP2011517795 A JP 2011517795A JP 2010546826 A JP2010546826 A JP 2010546826A JP 2010546826 A JP2010546826 A JP 2010546826A JP 2011517795 A JP2011517795 A JP 2011517795A
Authority
JP
Japan
Prior art keywords
mobile device
state
current state
video data
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010546826A
Other languages
English (en)
Inventor
デイビッド・ジョン・マーシラ
ファラズ・アリ・サイード
ジョン・タッパー・ブロディ
ジェフリー・アラード・マシソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mobile Complete Inc
Original Assignee
Mobile Complete Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mobile Complete Inc filed Critical Mobile Complete Inc
Publication of JP2011517795A publication Critical patent/JP2011517795A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Telephone Function (AREA)

Abstract

本発明は、モバイルデバイスと自動的に相互作用して前記モバイルデバイス上で利用可能なメニューシステム、モバイルアプリケーション及びモバイルサービスのグラフを生成するための手段を提供する。よって前記グラフに記録される情報は、後に相互作用式に再生され得る。グラフをこの自動化方式で構築するために、物理的モバイルデバイスは記録/制御環境と一体化される。この環境はデバイスインタフェースを有し、デバイスインタフェースはモバイルデバイスのユーザインタフェースを制御し、かつ前記デバイスからの結果的なビデオ及びオーディオデータを記録する能力を有する。自動化クローラはこのデバイスインタフェースを使用して、モバイルデバイスをマップされていない状態へナビゲートする。状態リスナは、モバイルデバイスから着信し、かつモバイルデバイスへ発信するデータを監視してこれを単一の状態へと分解し、必要に応じて新しい状態をグラフに保存する。

Description

本発明は、特定のモバイルデバイスに使用可能な機能の広範かつ象徴的な体験をユーザに提供できる相互作用的バーチャルモバイルデバイスエミュレータに関する。
移動情報処理デバイス(「モバイルデバイス」)は、毎年、多種多様なものが製造されている。モバイルデバイスの消費者はデバイスの購入に際して様々な選択肢に直面し、全体の70%を超える消費者は購入を行う前にインターネットで何らかの探索を行い、全消費者の約15%は実際にインターネットからモバイルデバイスを購入する。
これまで、入手可能な一般情報はモバイルデバイス自体の機能に関するもの、即ちその無線データサービス(「モバイルサービス」)及びダウンロード可能なアプリケーション(「モバイルアプリケーション」)に限定されていた。この情報は、概して、ディスプレイサイズ、メモリサイズ、無線ネットワーク互換性及びバッテリ寿命情報等のデバイス仕様から成っている。
モバイルデバイス、モバイルサービス及びモバイルアプリケーションがさらに高度なものになるにつれて、消費者が利用可能なデバイス及びサービスのより広範かつ相互作用的なプレビューを提供することが必要となっている。これまでに、HTMLまたはAdobe Flash等の標準オーサリングツールにより生成される視覚的デモンストレーションを使用してモバイル製品及びサービスを見せる試みが行われてきたが、これらは概して、実際に提供されている機能の限定的かつ非相互作用的表現を提供するものである。これらの表現は、その生成方法、概して、モバイルデバイスのLCDディスプレイの静止画像を撮り、かつこれらの個々のフレームを繋ぎ合わせて実際のアプリケーションまたはサービスをモックアップするという方法に必然的に限定される。また、これらのデモンストレーションは事前に生成されなければならないことから、ライブモバイルデバイス上でのアプリケーションの実際的な体験に似た如何なる方法でもこれらを相互作用的に行うことは不可能であった。
従って、特定のモバイルデバイスに利用可能な機能を遙かに広範かつ象徴的に体験することのできるバーチャルモバイルデバイスの相互作用式エミュレータ(「バーチャルデバイス」)を生成する、より高度な方法が必要とされている。
相互作用式エミュレータを生成する1つの方法は、物理的モバイルデバイスを手動でナビゲートする一方で、システムがこのデバイスから画像、音声及びハードウェア状態形式の出力を捕捉し、かつ人であるユーザがこれを起動するために実行するアクションを基礎としてこれらを接続するというものである。このアプローチは冗漫である可能性があり、かつこれを効果的に使用するために、ユーザはモバイルデバイスの出力を捕捉するシステムに関して詳細な知識を有することが必要とされる場合がある。このアプローチに対する改良は、人であるユーザを、キー押し、タッチスクリーンのタッチ、音声入力、他等のユーザ入力を呼び出すことによってモバイルデバイスをナビゲートするオートマトンに置換することである。オートマトンは、以前にナビゲートされた全ての経路を追跡することができ、かつ捕捉システムと相互作用してモバイルデバイス上で新しい経路をナビゲートするための最も効率的な経路を決定できることから、これは、モバイルデバイスをナビゲートするより体系的なアプローチを可能にする。
本発明は、モバイルデバイス上で利用可能なメニューシステム、モバイルアプリケーション及びモバイルサービスの構造マップまたはグラフを生成することを目的としてモバイルデバイスと自動的に相互作用するための手段を提供する。よって、グラフに記録された情報は、後に相互作用的に再生され得る。
グラフをこの自動化様式で構築するために、物理的モバイルデバイスは、記録及び制御環境(「記録/制御環境」)と一体化される。この環境は、モバイルデバイスのボタンまたはタッチスクリーンインタフェースを制御し、かつ生成される結果的なビデオ及びオーディオデータを記録する能力を有するインタフェース(「デバイスインタフェース」)を有する。デバイスインタフェースの実装には、モバイルデバイス上にソフトウェアエージェントをインストールすること、機械的ハーネスを構築すること、またはモバイルデバイスのハードウェアへ直に電気接続することを含む幾つかの方法が存在する。
モバイルデバイスのグラフは、この自動化された制御及び記録プロセスを介して発生された後、ユーザが物理的モバイルデバイス自体と相互作用することなくモバイルデバイスの様々な画面を介してナビゲートすることを可能にする方法でユーザへ提示され得る。代わりに、モバイルデバイスから捕捉されてセントラルサーバに格納されたデータはユーザへ送り返され、実際のモバイルデバイス上で見られるように表示される。この方法では、物理的モバイルデバイスを仮想化して同時的な相互作用セッションにおいて多くのユーザへ表示することができる。
モバイルデバイスのグラフを構築するプロセスの間、モバイルデバイスのユーザインタフェースのメニュー構造において利用可能な各ページは、大型多方向グラフにおける1つの状態として表現され得る。グラフの各状態(またはページ)は、2つのページ間をナビゲートするために使用される手段を表すリンクによってグラフ内の他の状態へ接続される。例えば、モバイルデバイスのユーザインタフェースのホームページが「ホーム」とラベリングされたグラフ内の1つの状態によって表現され、かつモバイルデバイス上のアプリケーションメニューが「メニュー」とラベリングされたグラフ上の別の状態によって表現されていれば、2つのページ間をナビゲートするために使用されるキーはグラフのこれらの状態間のリンクを形成することになる。
記録/制御環境において、自動化エンジン(「クローラ」)はデバイスインタフェースを使用してモバイルデバイスの状態を操作し、一方でリスナ(「状態リスナ」)はデバイスインタフェースを介してモバイルデバイスとの間で行き来するデータを監視し、かつこれを単一の状態に分解し、必要に応じて新しい状態をグラフに保存する。状態リスナは、スクリーン画像、音声、振動状態またはモバイルデバイスからの他の物理的イベント等のデバイスインタフェースからの発信データを聴き、これらを既知の既存状態と比較する。状態リスナは、キー押し、タッチスクリーンイベント、オーディオ入力、他等のデバイスインタフェースへの着信データを聴き、モバイルデバイスのグラフにおける先行状態とカレント状態とをリンクする。状態リスナは、発信データのシーケンスを既存の保存されている状態として認識しなければ、グラフ内に新しい状態をそのデータシーケンスで生成する。
クローラは、クローラがモバイルデバイスのナビゲーションを開始するために、モバイルデバイスを既知の状態(「ルート」)に置く既知の入力シーケンスで、かつその状態を認識する方法を保有して設定される。クローラは、モバイルデバイス上の既知の状態までナビゲートした後、モバイルデバイスへ入力シーケンスを繰返し送信することができ、一方で状態リスナは、結果的に生じる状態から成るグラフを構築する。グラフが構築されるにつれて、クローラは、ルートから最小数のリンクで離隔され、かつ全ての可能なデバイス入力に対する発信リンクを持たない状態を反復的に発見し、次いでルートへ戻る前にこれらの入力のうちの1つを送信する。これは、モバイルデバイスのグラフを広さ優先方式に構築するが、深さ優先方式、反復深化深さ優先方式または発見的アプローチを含む他のアルゴリズムが使用される可能性もある。
大部分のモバイルデバイスの複雑さは、モバイルデバイス上のあらゆる一意の状態までナビゲートすることを事実上不可能にし、よってクローラは、所定の状態を超えるナビゲートを、比較及び許可または限定された入力(「限界条件」)のリストによってこれらの状態を識別することにより回避するように設定され得る。これは、クローラがモバイルデバイスのユーザエクスペリエンスに関連する状態を介するナビゲーションにより多くの時間を費やし、かつ関連性がほとんどないランダム入力、例えば自由形式のテキストまたは数値エントリの送信により少ない時間を費やすことを可能にする。
最後に、モバイルデバイスのグラフを構築する際には、自動化されたクローラが到達しないと思われるスクリーン、具体的には、テキストまたは数値エントリ等の特有の非ランダム入力による到達を要求するスクリーンが幾つか存在する場合がある。しかしながら、これらのスクリーンは、グラフを基礎とするランタイム環境においてバーチャルデバイスを使用する者にとって関心のあるものであると思われる。従って、記録/制御環境は、モバイルデバイスの2つのモードにおける手動制御を見越している。両モードにおいて、クローラは無効化されるが、デバイスインタフェース及び状態リスナはアクティブなままである。一方のモードにおいて、グラフを構築するユーザは、各スクリーン及びキー押しを捕捉する状態リスナによって、あたかもクローラがナビゲートしているかのようにしてモバイルデバイスをナビゲートする。もう一方のモードにおいて、グラフを構築するユーザは、連続する多くの状態から成る場合のある単一のビデオを捕捉し、かつこのビデオを特殊な型式を有するグラフ内の単一ノードに関連づけることができる(「エンドポイントビデオ」)。このタイプのノードは、グラフの自由にナビゲートできる部分を超える機能性を実証し、物理的モバイルデバイスの使用方法を表すものであることが意図されるバーチャルデバイス上のユーザ入力の1つの特有のシーケンスを示す。モバイルデバイスによる電話番号のダイアリング、SMSメッセージの入力及び送信またはライブ写真及びビデオの撮影はその例であるが、このモデルは、モバイルデバイスがサポートする場合のあるほぼ全ての複雑な使用事例に適用可能である。
本発明の実施形態に係る自動メニューシステムのマップ発生システムを使用する例示的なシステムを示すブロック図である。 本発明の実施形態に係る例示的な状態リスナのプロセスを示す例示的なフロー図である。 本発明の実施形態に係る状態リスナ内の例示的なオーディオ/ビデオ処理論理を示す例示的なブロック図である。 本発明の実施形態に係る状態リスナによって使用される例示的なオーディオ/ビデオバッファフォーマットを示す。 本発明の実施形態に係る状態リスナによって使用される動的コンテンツのマスキング論理を示す例示的な機能ブロック図である。 本発明の実施形態に係る状態リスナによって動的コンテンツマスキングに使用される例示的なマスクコンフィギュレーションツールを示す。 本発明の実施形態に係る状態リスナによって使用される例示的なオーディオ/ビデオ処理データ構造を示す。 本発明の実施形態に係る状態リスナによって使用される例示的なループ検出アルゴリズムを示す。 状態比較アルゴリズムの一実施形態を示す例示的な状態図である。 本発明の実施形態に係る例示的な自動化されたクローラを示す例示的なブロック図である。 本発明の実施形態に係る例示的な自動化されたクローラのナビゲーション論理を示す例示的なブロック図である。 本発明の実施形態に係る記録/制御環境の属性を使用する例示的な装置を示す。
以下の好適な実施形態の説明においては、添付の図面を参照して、その一部が形成されており、かつ本発明が実施されてもよい特有の実施形態を例示的に示している。本発明のこれらの好適な実施形態の範囲を逸脱することなく、他の実施形態が使用されてもよく、かつ構造的変更が行われてもよいことは理解されるべきである。
図1は、自動メニューシステムのマップを発生するシステムの一実施形態を示す代表的なブロック図である。本システムは、モバイルデバイスの様々なオプションを介してナビゲートし、かつ結果的に生じる、及び様々なユーザ入力に対応するオーディオ及びビデオデータを記録するために使用される。このデータを使用して、ユーザが前記デバイスを外部からナビゲートしてデバイスのオプション及びケイパビリティの高信頼的かつ広範なインタラクティブプレビューを体験することを許容するモバイルエミュレータが生成される。
モバイルデバイス102は携帯情報処理デバイスであって、これは携帯電話、PDA、GPSユニット、ラップトップ、他等のデバイスを含んでもよい。モバイルデバイスの最も一般的なコンフィギュレーションは小型のハンドヘルド式デバイスであるが、デジタルオーディオプレーヤ(例えば、MP3プレーヤ)及びデジタルカメラ等の他の多くのデバイスも本発明の範囲に包含される。モバイルデバイス102は、一般にモバイルアプリケーション及びサービスを実行または見るために使用される。モバイルデバイス102は、記録/制御環境104と一体化される。この環境は、モバイルデバイスを制御し、かつ生成される、画像またはビデオを含む結果的なディスプレイ及びオーディオデータを記録する能力を有する。発生されるデータは、次に、グラフ/ビデオ/オーディオ記憶装置106に格納される。
モバイルデバイス102は、様々なユーザインタラクティブ機能またはスピーカもしくは視覚的ディスプレイ、他等の出力デバイスを含んでもよい。出力デバイス110から発生される視覚的表示または音声は、記録/制御環境104によって捕捉されるデータに含まれてもよい。オーディオスピーカ111は、キーが押されたとき、またはデバイス上でアプリケーションが実行されているときに音を発してもよい。或いは、または追加的に、モバイルデバイス102はモバイルディスプレイ112を含んでもよい。モバイルディスプレイ112は、モバイルデバイスのステータスに関する情報を表示し、かつモバイルデバイスとの相互作用を可能にするために使用される。モバイルディスプレイはフラットパネルLCDディスプレイであってもよいが、プラズマまたはOLED技術等の他の任意のディスプレイタイプから製造される可能性もある。
出力デバイスに加えて、モバイルデバイス102は、タッチスクリーン、キーパッド、キーボードまたは他のボタン等の入力デバイス114を含んでもよい。タッチスクリーンセンサ115は、デバイス上で実行するメニューまたはアプリケーションを選択するために使用され得る。タッチスクリーンセンサ115は、デバイスのLCDディスプレイ上に嵌る、またはLCDディスプレイに関連して作動する接触感知パネルであってもよく、ユーザがスタイラスまたは他のオブジェクトを使用してスクリーンの1つの領域をクリックすることを可能にする。代替として、或いはタッチスクリーンに加えて、モバイルデバイスは、キーパッドボタン116を使用してデバイス上のメニュー間をナビゲートし、かつテキスト及び数値データをデバイスに入力してもよい。ある典型的なモバイルデバイス102は、数字0−9の数字パッド、#、*、及び方向矢印、選択キー、左右メニューキーを含むナビゲーションキーセット、及び送信キー及び終了キーを有する。デバイスの中には、数値データを入力するためのフルキーパッドを有してもよいものがあり、または異なるデバイスモードにおいて利用可能な複数のキーパッドを有してもよいものがある。
モバイルデバイス102はさらに、モバイルオペレーティングシステム118を含んでもよい。モバイルオペレーティングシステム118は必ずしもモバイルデバイス102内に収容される必要はなく、代わりにデバイスの外部に存在し、通信リンクを使用してデバイスとオペレーティングシステムとの間で必要な情報を転送してもよい。このオペレーティングシステム118は、モバイルデバイス102の機能を制御するために使用されてもよい。オペレーティングシステム118は、中央処理装置(CPU)、揮発性及び不揮発性コンピュータメモリ、入力及び出力信号ワイヤ及びシステムの機能を制御する実行可能命令セットから成ってもよい。モバイルオペレーティングシステム118は、BREW、Symbian、Windowsモバイル、Palm OS、Linux並びにモバイルデバイス製造業者により開発された様々な独自仕様のプラットフォーム等のオープン開発プラットフォームであってもよい。
ある実施形態において、通信データ及び制御信号120は、グラフィック画像を形成する、またはモバイルディスプレイ112上に他の情報を表示するという目的でモバイルオペレーティングシステム118からモバイルディスプレイ112へ転送されている情報を編成する。情報がモバイルオペレーティングシステムからモバイルデバイスへ送られるにつれて、様々な中間のハードウェアグラフィックスプロセッサによってディスプレイ情報の変換が発生してもよい。変換は、パラレルデータストリーム(データが一度に多くのワイヤを通って転送される)からシリアルデータストリーム(データはより少数のワイヤ上で転送される)への変換等の単純なものであってもよい。或いは、グラフィック処理装置(GPU)によって実行される、より高レベルの描画またはモデリングコマンドの最終ビットマップビジュアルフォーマットへの変換等のより複雑な変換が存在してもよい。前記情報は様々な処理ステージで異なる形態をとってもよいが、この情報の意図は、モバイルディスプレイ112上へグラフィック情報または他の情報を表示するタスクを達成することにある。
通信データ及び制御信号121からのビデオデータ122は、記録/制御環境104へ送信される。通信データ及び制御信号120からの生情報は抽出され、または傍受されかつコピーされて記録/制御環境104が利用できるようにされる。傍受は、情報がモバイルディスプレイ112へ転送されるにつれてこの情報を受動的にコピーしてもよく、または破壊的アプローチを使用して情報を抽出してもよい。情報を抽出するための破壊的アプローチはモバイルディスプレイのオペレーションを妨害することがあるが、モバイルデバイス102と相互作用するために記録/制御環境104しか必要とされない事例では、これは重要ではない場合がある。
傍受及びコピーは、通信データ及び制御信号120の信号レベルを検出し、かつ情報がモバイルディスプレイ112へ転送されるにつれて、この情報のデジタルコピーを作製することができるハードウェアセンサによって達成されてもよい。概して、ロジックアナライザ等の利用可能なプロダクツ、並びにモバイルデバイスからこのデジタル情報を抽出するように設計されるカスタムハードウェアもこのタスクを実行することができる。或いは、ソフトウェアエージェントベースの類似アプローチを使用して、記録/制御環境104へ供給される生情報が抽出されてもよい。本例において、このソフトウェアエージェントは、モバイルオペレーティングシステム118自体で実行され、かつモバイルデバイス102上で発見される任意の標準通信チャネルを介して環境104と通信するソフトウェアプログラムであると思われる。この通信チャネルは、無線通信、USB、シリアル、ブルートゥースまたはモバイルオペレーティングシステム上で実行されるアプリケーションと情報を交換するために使用される他の任意数の通信プロトコルを含む可能性もある。
オーディオデータ124は、モバイルデバイス102上で利用可能な聴覚情報の全てである。この情報は、記録/制御環境104がオーディオデータを利用できるようにするために、物理デバイスからアナログ−デジタル変換器によって抽出されてもよい。これは、前記デバイスを装備したヘッドセットへの接続、またはデバイスからスピーカを外してスピーカに対しオーディオが発生されると思われるポイントへ接続することの何れかによって行われてもよい。また、この情報は、モバイルデバイス102からネイティブデジタルオーディオフォーマットで抽出されることも可能であり、これはデジタル変換を必要としない。
ナビゲーション制御126は、記録/制御環境104からモバイルデバイス102を制御するためのシステムである。前記デバイスとの最も望ましい集積化は、ハードウェアベースの集積化を使用してキーパッドボタン押し及びタッチスクリーンの選択を電気的に刺激することである。これは、デバイスのオペレーティングシステム118とのソフトウェアインタフェースを使用することで制御される可能性もある。ソフトウェアインタフェースは、デバイスのデータケーブルを介して、またはブルートゥース等の無線通信を介してデバイス上で実行されているソフトウェアエージェントと通信する可能性もある。ナビゲーション制御は、モバイルデバイス102の入力デバイス114の全てを高信頼的に制御することができる。
グラフ/ビデオ/オーディオ記憶装置106は、モバイルデバイス102の相互作用の設計時記録の間に格納される情報のレポジトリである。この格納システムは標準的なリレーショナルデータベースシステムであり得、または単に記録情報を有するフォーマットされたファイルセットである可能性もある。記録情報は、概して、大型多方向グラフを表現するデータベース表エレメントのフォーマットをとる。このグラフは、モバイルデバイス102上へメニュー及びアプリケーションの構造マップを表示する。さらに、この格納システムは、モバイルデバイス102から記録されたオーディオ、ビデオ及び/または静止フレーム情報を含む。
グラフデータ144は、グラフ/ビデオ/オーディオ記憶装置106のコンポーネントに格納される永続的情報から構成される。グラフデータ144をメモリに保持することは、複数のサブシステムが複数の変更を読み取ってアトミックトランザクションにより記憶装置コンポーネントへ変更を書き込むことを可能にし、これにより、永続データの同時的変更が回避される。これは、これらのサブシステムが、ハードウェア制約または物理的近接性に起因してより遅い応答時間を要する場合のある記憶装置コンポーネント106への反復的アクセスを行う必要なしに、グラフデータ144に対して例えば探索である複雑なオペレーションを実行することも可能にする。記憶システム106へのデータ送信は、XMLメッセージングが発生されるインメモリ構造の独自仕様のフレームワークを使用して行ってもよい。他に、Java Beans、Hibernate、ダイレクトJDBC、他等のフレームワークを含む実装の可能性が存在する。
記録/制御環境104は、汎用コンピュータ108または他の何らかの処理装置上で実行されてもよい。汎用コンピュータ108は、ソフトウェアアプリケーションまたは他の電子的命令を実行することができる任意のコンピュータシステムである。これには、Windows(登録商標) PCまたはApple Machintosh(登録商標)等の一般的に利用可能なコンピュータハードウェア及びオペレーティングシステム、またはUnixまたはLinuxサーバ等のサーバベースのシステムが含まれる。またこれには、汎用CPUまたはCPLD、FPGAまたは他の任意の類似タイプのプログラマブル論理技術を基礎とするカスタム設計のプログラマブル論理プロセッサの何れかを使用して命令を処理するように設計されるカスタムハードウェアが含まれる可能性もある。
記録環境104は、デバイスユーザインタフェースの一意の状態またはページを識別し、かつこれらのページ間のナビゲーションリンクを確立する。ナビゲーションリンクは、モバイルデバイス102の1つのページから別のページへとナビゲートするように操作されなければならない入力デバイス114のファンクションとして定義される。記録環境104は、モバイルデバイス102のメニューを介して手動でトラバースする人間によって使用され得、もしくは、マップされていないナビゲーション経路を探索し、かつこれらをデバイス上で自動的にナビゲートする自動化されたコンピュータプロセスによって使用される可能性もある。
ある実施形態において、記録/制御環境104はデバイスインタフェース130を含む。デバイスインタフェース130は、モバイルデバイス102のナビゲーション制御126及びモバイルデバイス102から戻る処理及びバッファリングオーディオデータ124及びビデオデータ122に対して責任を負う。物理的モバイルデバイス102と相互作用するハードウェアまたはソフトウェアとの通信には、USB接続が使用されてもよい。しかしながら、この通信チャネルには、無線通信、シリアル、ブルートゥースまたは双方向データ転送に使用される他の任意数の通信プロトコルが含まれる可能性もある。デバイスインタフェース130は、状態リスナ132へモバイルデバイス102からのオーディオデータ124、ビデオデータ122及びナビゲーション制御126のイベントであるオーディオ/ビデオ140のデータを共通フォーマットで供給する。これは、人であるユーザまたは自動化されたクローラ134がナビゲーション142のイベントをモバイルデバイス102へ共通フォーマットで送信することも可能にする。
ある実施形態では、記録/制御環境104はさらに、オーディオデータ、ビデオデータ及びナビゲーションイベントについてデバイスインタフェース130をポーリングする状態リスナ132を含む。データがモバイルデバイス102から戻りつつあるとき、状態リスナ132は遷移状態を入力し、かつこの遷移に至ったナビゲーションイベントを追跡する。状態リスナ132は、データが停止するか設定された時間期間に渡ってループするまでデバイスインタフェース130からのオーディオ及びビデオデータのバッファを保持する。データが停止するか設定された時間期間に渡ってループした時点で、状態リスナ132はそのバッファ内のデータをグラフ内の既存状態と比較し、グラフ内に新しい状態を生成するか、一致が発見されればそのカレント状態を更新する。また状態リスナ132は、ナビゲーションのためのグラフ内の先行状態からカレント状態へ至るリンクがまだグラフ内に存在していなければ、これを生成する。最後に、状態リスナ132は安定状態に入り、デバイスインタフェース130からのさらなる出力を待つ。
別の実施形態において、記録/制御環境104は自動化されたクローラ134を含む。自動化されたクローラ134は人であるオペレータによって開始され、かつ相互作用的プロセスを辿って、その状態から至る可能性のある全てのナビゲーションイベントがまだ探索されたことのないグラフ内の状態を発見することにより、グラフデータ144を拡張する。自動化されたクローラ134は次に、その状態に対応するモバイルデバイス102上のスクリーンへとナビゲートし、かつマップされていない経路に対応するナビゲーションイベントを送信する。この実行に際して、状態リスナ132は、そのナビゲーションイベントのためにその状態からの新しい発信リンクを生成し、よって、自動化されたクローラ134は、次にマップされていない経路を探索する際に状態とナビゲーションイベントとの異なる組合せを発見する。
図2は、本発明の実施形態による例示的な状態リスナプロセス200を示すフロー図である。プロセス200は、ブロック210において始まる。状態リスナ132は、人であるオペレータまたは自動化されたクローラ134によって開始される。開始されると、これはデバイスインタフェース130からフルフレームのビデオデータを要求し、かつこれをそのビデオバッファに格納する。状態リスナ132のオペレーションは、人であるユーザによって手動で停止されるまで、または自動化されたクローラ134がその処理を終了するまで継続される。
モバイルデバイス102から着信する新しい非ループのデータが存在すれば、状態リスナ132はそのカレント状態をクリアする。これは、モバイルデバイス102がブロック212「デバイスは遷移状態」において遷移状態にあることを指す。モバイルデバイス102が遷移状態にあるかどうかは、自動化されたクローラ134等の他のシステムまたは人であるオペレータが状態リスナ132をチェックして確認してもよい。遷移状態であれば、前記システムまたはオペレータはモバイルデバイス102へのさらなる入力送信を回避すべきである。
次に、状態リスナ132は、ブロック214においてオーディオデータ、ビデオデータオペレータ入力イベントを追跡する。モバイルデバイス102が遷移状態にあるとき、状態リスナ132はデバイスインタフェース130から最新のナビゲーションイベント及びオーディオ/ビデオデータをログする。この情報は後に、グラフへ追加される場合もある新しいリンク及び状態を投入するために使用される。
状態リスナ132は、ブロック216において、デバイスインタフェース130からのオーディオ/ビデオ出力を待つ。人であるオペレータによって先に設定された時間しきい値の経過後に何も存在しなければ、状態リスナ132はそのカレント状態を更新し、そのバッファ内のデータを記憶装置コンポーネントに保存する。その時間しきい値内にモバイルデバイス102から新しいデータが着信すれば、状態リスナ132はループに関してデータバッファをチェックし、着信データを保存するか、或いはそのデータがループしていれば、到来するデータが存在しなかったかのようにそのカレント状態を更新する。
モバイルデバイス102上には、決定的サイクルで継続的にオーディオまたはビデオデータを発生し、絶対に停止しない状態が存在することがある。従って、モバイルデバイス102からデバイスインタフェース130を介してオーディオ/ビデオデータが着信すると、状態リスナ132はそれが無限ループ218の一部であるかどうかを確認するチェックを行う。状態リスナ132はまず、データバッファにおいてカレントデータの先行例を探す。次に状態リスナ132は、カレントデータから遡って参照し、バッファ内にこれまでカレントシーケンスの反復が同じ順序で何回存在したかを確認する。そのデータが、人であるオペレータによって先に設定されたしきい値より多い反復回数で存在していれば、状態リスナ132はモバイルデバイス102が無限ループ状態にあることを決定する。この後、モバイルデバイス102から着信する、カレントパターンを同じ順序で継続するデータは何れも却下される。データが無限ループ状態でなければ、状態リスナ132はそのカレント状態をクリアしてそのデータをバッファに追加する。
状態リスナ132は、ブロック222においてモバイルデバイス102からそれ以上新しい非ループのデータが着信しないと決定すれば、そのカレント状態を更新するプロセスを開始する。まず、ブロック224で状態リスナ132は、保存されたグラフ構造体における、データバッファ内に存在するオーディオ及びビデオデータを同じ順序で含む状態を探索する。ループを含むデータバッファの部分について、照合アルゴリズムは、ループを前後に移動してそれがグラフにおける標的状態におけるループデータと整合するかどうかを確認しようとする。ブロック226において、グラフ内に何れかの一致する標的状態が存在すれば、状態リスナ132は、それが物理的モバイルデバイス102のカレント状態であると想定する。存在しなければ、状態リスナ132は、グラフ内に新しい状態を生成するプロセスを開始する。
ブロック226において、データバッファ内にそのデータに対する一致が発見されなければ、ブロック228において、状態リスナ132はグラフ内に新しい状態を生成する。次に、データバッファ内のデータは変換されてその状態106に関連づけられ、データバッファはクリアされる。ブロック226においてそのデータの一致がデータバッファ内に発見されれば、状態リスナ132はまず標的状態上に存在する全てのデータをデータバッファから除去する。次にブロック230において、状態リスナ132は、グラフ内の標的状態が、モバイルデバイス102上で発生したナビゲーションイベントに関して状態リスナの先行状態からの着信リンクを有するかどうかを確認する。ブロック232において、このようなリンクが存在すれば、新しいリンクは生成されない。ブロック232において、このようなリンクが存在しなければ、ブロック234において状態リスナ132はグラフ106内に新しいリンクを生成する。ブロック234において、状態リスナ132は、バッファ内に存在するナビゲーションイベントに関して、その先行状態からカレント状態への新しいリンクを生成する。また状態リスナ132は、データバッファ内に残される任意の残りのオーディオ/ビデオデータもそのリンクに関連づける。
状態リスナ132は、格納されたグラフ構造体内に任意の新しいエンティティを生成すると、ブロック236において、そのカレント状態を(1つの一致が存在する場合は)グラフ内の一致した状態、または生成されたばかりの新しい状態の何れかとして設定する。これは、ブロック238において、モバイルデバイス102がもはや遷移状態にはないことを示す。自動化されたクローラ134等の他のシステムまたは人であるオペレータは、この情報を、モバイルデバイス102へ別のナビゲーションイベントを送信できることを意味するものとして捉える。
既存の状態との一致または新しい状態の生成の何れかによって、グラフにおける、モバイルデバイス102から着信するデータバッファのコンテンツに一致する状態に落ち着いた後、状態リスナ132は、ブロック238において、モバイルデバイス102は安定状態にあるものと考える。これは、具体的にはモバイルデバイス102から非ループのオーディオ/ビデオデータが着信する場合に、状態リスナ132が遷移状態を検出するまで真であり続ける。モバイルデバイス102が安定状態にあるかどうかは、自動化されたクローラ134等の他のシステムまたは人であるオペレータが状態リスナ132をチェックして確認してもよい。安定状態にあれば、前記システムまたはオペレータには、モバイルデバイス102へ、状態遷移をトリガする場合のあるナビゲーションイベントを送信しても差し支えないことが分かる。
状態リスナ132が、モバイルデバイス102からのオーディオ及びビデオデータを処理し、かつモバイルデバイス102上の新しい状態を保存されたグラフ構造体106内の既存のノードと比較する場合に克服しなければならない場合のある技術的課題は、幾つか存在する。第1に、画像の迅速な更新及び比較を可能にする、バッファ内のビデオデータを表す確実な手段が存在すべきである。第2に、デバイスインタフェース130からのビデオ供給には、ユーザナビゲーションに関わりなく変わるコンテンツ(「動的コンテンツ」)が存在する場合がある。検出されなければ、このデータは最終的に、人が論理的には同一と見なす、状態リスナ132にとって区別的であるように見える2つの状態を招来する可能性もある。第3に、モバイルデバイス102上には、無限にループする動画(「ループ」)を有し、かつ決して停止しない状態が存在する場合がある。これは検出されなければならず、そうでなければ、状態リスナ132はモバイルデバイス102が事実上、安定しているが反復的な状態にあることを絶対に識別しなくなる場合がある。第4に、状態リスナ132は、デバイスインタフェース130から着信するオーディオ及びビデオデータをダウンサンプリングして圧縮する方法を必要とする場合がある。必要としなければ、グラフにおけるノードの保存、検索または比較に際してデータの量が扱いにくいものになる可能性もある。最後に、ビデオデータがダウンサンプリングされる場合には、モバイルデバイス102上の状態をグラフ106内のノードとして変換されて保存された状態と高信頼的に比較する方法が存在すべきである。この方法は、変換プロセスの間に失われるデータを容認するものであるべきである。
図3は、本発明の実施形態に係る状態リスナ132内の例示的なオーディオ/ビデオ処理ステップを示すブロック図である。まず、ブロック302において、状態リスナ132はデバイスインタフェース130からオーディオ/ビデオ140のデータを検索する。第2に、ブロック304において、動的コンテンツがフィルタリングされる。次に、ブロック306において、状態リスナは、迅速な更新及び比較のためにビデオデータを処理する。次に、ブロック308において、状態リスナはビデオデータ内のループを検出する。最後に、ブロック308において、結果的に生じるオーディオ及びビデオデータがデータ記憶装置のために圧縮される。本発明では、状態リスナ132のこのプロセスは順序を変えて実行されてもよいこと、またはあるブロックはプロセスから完全に除去されてもよいことが企図される。例えば、最終的に格納するためのデータがさほど大きくなければ、データは、最後のブロック310におけるように圧縮される必要はない場合がある。以下、本発明の幾つかの実施形態に従って各ブロックについてさらに説明する。
状態リスナ132のプロセス300の最初のブロック302は、デバイスインタフェース130からオーディオ/ビデオデータを検索するためのものである。オーディオ/ビデオ140のデータストリームは、デバイスインタフェース130からリアルタイムで流れる。状態リスナ132はこのデータを、モバイルデバイス102上の離散的変化を表すアトミックユニットに分解する。オーディオデータの場合、オーディオサンプルは離散的間隔で格納される、または単一のオーディオストリームへ添付される固定長さであってもよい。本発明の好適な一実施形態は、オーディオバッファを固定長さのサンプルのシーケンスとして格納するが、オーディオデータを保存してこれをビデオフレームに相関させる任意のアプローチでもうまく作動する。ビデオデータの場合、データを表す方法としては、離散的間隔で撮られる画像シーケンスとして、個々のピクセル更新のストリームとして、またはハイブリッドアプローチによるもの、を含む幾つかの方法が可能性として存在する。本発明のこの好適な実施形態は、何らかの前処理によってビデオバッファをピクセルストリームとして格納するハイブリッドアプローチを採用し、これらのピクセル更新を一定間隔で単一の画像に圧潰する後処理ループがこれに続く。しかしながら、ビデオデータを先に保存されたビデオとの比較を可能にする方式で格納する任意の方法は本発明の範囲内である。後に詳述する図4は、オーディオ/ビデオバッファのフォーマットの一実施形態を示す。
第2のブロック304は、状態リスナ132が動的コンテンツをフィルタリングするためのものである。モバイルデバイス102のビデオディスプレイ上のピクセルは、何れのナビゲーションイベントにも関わりなく変わることがある。例としては、クロック表示、バッテリインジケータ、信号強度インジケータ、カレンダ、他が含まれる。この動的コンテンツはディスプレイ上の画像を変えることができ、実際には人であるユーザが論理上モバイルデバイス102を同じ状態にあると解釈するときに、状態リスナにモバイルデバイス102上の状態変化を解釈させる。この動的コンテンツを処理する方法は、画像の比較に際してこのようなコンテンツを無視する発見的画像照合アルゴリズムを使用すること、テキスト抽出を使用してコンテンツを識別し、かつこれを画像バッファ内で置換すること、またはディスプレイの他の領域上の画像比較を使用して動的コンテンツをマスクすべき時点を識別し、かつこのコンテンツを先に保存された画像のそれでマスクすること、を含んで幾つか存在する可能性がある。本発明の好適な一実施形態は後者のアプローチを使用するが、動的コンテンツをフィルタリングする、または処理するソリューションは何れも本発明の範囲内にある。動的コンテンツのマスキング論理の例示的な実施形態については、図5及び図6に関連して後に詳述する。
次のブロック306において、状態リスナ132は迅速な更新及び比較のためにビデオデータを処理する。モバイルデバイス102から着信するデータ量に起因して、全てのデータユニットをグラフ記憶装置106のコンポーネントに保存することは非実際的である。また、状態比較の間にデータバッファの全てのエレメントを保存された全ての状態の全てのエレメントと比較することも非実際的である。従って、ビデオデータを表す所定のデータ構造を使用してメモリ使用量を最適化し、かつ計算量を最小限に抑えることが必要とされる場合がある。実装によっては、全てのピクセル更新を所定の間隔で単一画像に圧潰し、次いで(もしあれば)この画像及びオーディオサンプルを圧縮することによって、ビデオバッファをダウンサンプリングすれば足りることがある。しかしながら、ビデオループの検出が必要とされる、または単一の静止画像ではなく多重フレームの動画を一致させることが望ましい実装の場合、ビデオバッファを表現するデータ構造及び比較に使用されるアルゴリズムは、変換及び比較プロセスの間のデータ損失を容認するものであるべきである。一般的な意味において、これは、ビデオバッファは格納用の圧縮バージョンへと容易に変形しなければならないだけでなく、発生する場合もあったタイミングまたはサンプルレートのシフトに関わらず、同じバッファから結果的に生じることができたはずの全ての可能な圧縮を識別するに足る情報も含むべきであることを意味する。しかしながら、各比較の間の単一のピクセル/チェックサムバッファの線形トラバーサルを含む、これらの基準を満たすデータ構造及びアルゴリズムのシステムは何れもうまく作動する。後述する図7は、ハッシング及びルックアップのシステムを使用することによって遙かに少ない処理で同じタスクを達成する、本発明の一実施形態によるオーディオ及びビデオ処理データ構造を示す。
次に、ブロック308において、状態リスナ132はビデオデータ内のループを検出する。無限にループするビデオデータストリームから成るモバイルデバイスの状態に関しては、状態リスナのビデオバッファをルックバックして反復するセクションを発見し、かつこれが続く限りさらなる反復はどれも無視する方法が存在する場合がある。そうでなければ、ビデオバッファは任意の長さを得る可能性もあり、状態リスナ132は絶対にモバイルデバイス102上に安定状態を検出せず、従属システム(自動化されたクローラ134等)はモバイルデバイスが安定するのを待つ間にブロック状態になる可能性もある。ビデオバッファが離散的間隔で画像フレームに分解されれば、フレーム捕捉間隔はモバイルデバイス102上のループの間隔と絶対に同期せず、結果的に非反復画像のシーケンスが生じることから、これらのフレームのみを基礎としてループを検出することは不可能である場合がある。チェックサムヒットバッファが使用されていれば、カレントフレームバッファにおいてチェックサムヒットバッファにも現出する反復するフレームインスタンスを探索することによって、ループを検出することは可能であると思われる。しかしながら、このアプローチは、チェックサムヒットバッファにおいてエントリを増殖させる結果となる可能性がある。モバイルデバイス102上のループ状態は何れも正確に同じピクセル更新を繰返し生じさせることから、別のアプローチは、単にチェックサムバッファ内でループを探すというものである。後述する図8は、例示的なループ検出アルゴリズムを示す。
最後にブロック310において、状態リスナ312は格納のためにオーディオ/ビデオデータを圧縮する。オーディオ/ビデオバッファによって表現される状態はグラフに保存される必要があると決定されていれば、データは、後処理によって格納のためにさらに圧縮されてもよい。オーディオ及びビデオデータを圧縮する方法は、多く存在する。具体的には、JPEG及びGIF画像圧縮の双方がサポートされていて、オーディオサンプルは、オーディオサンプルレートを変換し、かつWAVファイルとして保存することによって圧縮され得る。しかしながら、MPEG、PNG、他等の他の圧縮方法も本発明の範囲内である。圧縮方法は、圧縮データを状態リスナのオーディオ/ビデオバッファのコンテンツと比較できるものであるべきである。本発明のこの好適な実施形態は、単にソース(非圧縮)データから計算されるチェックサムを圧縮された結果と共に保存し、かつチェックサムを使用して比較を行う。
図4は、図3の最初のブロック302「デバイスインタフェースからオーディオ/ビデオデータを検索する」において使用される例示的なオーディオ/ビデオバッファフォーマットを示す。ある実施形態において、デバイスインタフェース130から着信するビデオデータはピクセル更新のストリーム400として格納され、各ストリームはXY座標402と、ピクセル値404と、各ピクセルの前処理の間に計算される画像チェックサム406とを有する。チェックサムは画像内のあらゆるピクセルの累積ハッシュであり、任意の単一ピクセルの変更に対して、単に古いピクセルのハッシュ値を減算し、かつ新しいピクセルのハッシュ値を加算することにより迅速に更新され得る。計算されるチェックサムを変更しないピクセル更新は何れも、メモリ及び処理を節約するためにバッファから除外される。デバイスインタフェース130は、状態リスナ132の開始時にフル画像からチェックサムを計算し、その後は、ピクセルが変わる毎に画像の実行チェックサムを増分式に更新する。
状態リスナによるループポーリングの反復は悉く、ストリーム内の各ピクセル更新を捕捉し、これらをカレント画像に適用し、画像を保存し、画像を最終のチェックサム値に関連づけ、かつ(もしあれば)オーディオデータ408のサンプルを関連させる。画像、チェックサム値及びオーディオサンプルから成るこの保存された構造体を「フレーム」410と呼ぶ。データはモバイルデバイス102から超高速で流れる場合があるが、フレーム410はループポーリングにつき1つの速度でしか保存されない。フレームは、チェックサム値を比較することによって、かつチェックサム値が等しければ、任意選択としてオーディオサンプルを比較することによって互いに比較され得る。フレームは、412において、高速ルックアップのためにデータ構造内のチェックサムにより指数を付けられる。ピクセル更新を離散的間隔で単一画像に圧潰することは、モバイルデバイス102から着信するビデオを効果的にダウンサンプリングし、結果的に、状態がグラフへ保存される際の格納スペースの消費を少なくする。
図5は、図3の状態リスナ132による第2のプロセスブロック304において使用される動的コンテンツのマスキング論理を示す機能ブロック図である。モバイルディスプレイ112上の動的コンテンツの存在は、画面の1つの領域を、人であるユーザによって状態リスナコンフィギュレーションの一部として選択された同じ画像領域(「マスクコンフィギュレーション」)500と比較することにより識別される。コンフィギュレーションの間、ユーザは、それを動的コンテンツを含む画面として識別する画像領域(「条件領域」)を選択する。またユーザは、動的コンテンツのロケーションを表現する異なる画面領域(「マスク領域」)504aも選択する。この画像は、比較を目的として格納される。次に、モバイルデバイスディスプレイ112の条件領域506がコンフィギュレーション502内の格納された画像のコンテンツに一致すると、格納された画像のマスク領域504aのコンテンツはビデオバッファ504b内へ挿入され、画面のその領域における、そのバッファに早期に挿入されたかもしれない動的コンテンツ508が上書きされる。モバイルデバイス102上の動的コンテンツ508の領域から着信するさらなるピクセル更新は何れも、条件領域506のコンテンツがそれ以上格納された画像502のそれに一致しなくなるまでビデオバッファから除外される。
図6は、図5に記述された例示的なマスクコンフィギュレーションツールを示す。本例において、マスクコンフィギュレーション600は、クロック及びカレンダディスプレイを伴うホームページを示すモバイルディスプレイについて示されている。選択された条件領域602はホームページ上の静止画像の一部であり、マスク領域604aはクロック及びカレンダのディスプレイエリア全体を含む。従って、条件領域602における静止画像によって識別される画面が識別されると、保存されたマスク領域604bの部分領域のコンテンツはビデオバッファ内でポピュレートされ、変化するクロック及びカレンダディスプレイからのピクセル更新はバッファに挿入されない。モバイルデバイス102がそれ以上静止背景画像602bを表示しなくなると直ぐに、状態リスナ132は、先にマスクされていた領域からのピクセル更新の受信を開始する。
条件領域604bがマスクコンフィギュレーション600に一致することを識別する比較アルゴリズムは、全ピクセルの線形探索または局部的なチェックサム比較を含む任意のものを使用することができる。ある好適な実施形態では、局部的チェックサムが使用され、各マスクコンフィギュレーション600毎に1つのランニングチェックサムが保持され、かつ条件領域604bにおける1つのピクセルが変わる時点でいつでも更新される。マスクコンフィギュレーション600のチェックサムが、格納された画像内のマスク領域604aのチェックサムに一致すると、マスク領域604aは先に述べたようにしてビデオバッファ内で更新される。この方法は画像領域の高速比較を見越したものであるが、この比較を実行する他の任意の方法も本発明の範囲内である。
図7は、状態リスナ132によるオーディオ/ビデオ処理のために図3の第3のブロック306において使用される例示的なオーディオ/ビデオ処理データ構造700を示す。状態リスナ132はフレーム702のバッファを保持するが、ループ検出の目的で、カレント状態において見られる全てのチェックサム704のバッファも保持する。但しこれらは、状態が安定すれば、グラフ記憶装置コンポーネント106内に永続しない。また、フレームインデックスルックアップ712に対するチェックサムも存在してもよい。さらに、状態リスナ132は全てのフレームに関するタイミング情報706、並びにチェックサムによる永続フレームのルックアップのためのデータ構造708を保持する。チェックサムバッファ内の1つのチェックサムが1つまたは複数の永続フレームに一致すると、これはチェックサムヒットバッファ710内で追跡される。永続的構造714の場合、状態リスナ132はチェックサム716によってハッシュされるフレームルックアップを使用する。データ構造は、モバイルデバイスの状態変化毎にクリアされる一時的な構造であってもよい。
チェックサムヒットバッファ710は、単にカレントフレームバッファ内のフレームに一致するフレームだけではなく、任意の個々のピクセル更新の間に一致された全てのフレームを追跡する。単一画像から成るモバイルデバイス状態の場合、各状態は結果的にバッファ内に1つのフレームとなることからこれは重要ではない。しかしながら、静止画像に落ち着く前の動画からなるモバイルデバイス状態の場合、フレームバッファへ保存されるフレームのタイミングは僅かにシフトする可能性もあり、結果的に、最終フレームを除いてフレームバッファ内の全く異なるフレームによって表現される可能性もある単一状態になる。さらに、動画が無期限にループすれば、フレームバッファ内のシフトは、同一の状態がフレームバッファにおいて2つ以上の完全に区別的なフレームセットによって表現され得ることを意味する可能性もある。全てのチェックサムヒットのバッファの保持は、これが発生しないことを保証する。
図8は、状態リスナ132によって実行されるオーディオ/ビデオ処理の第4のブロック308において利用されてもよい例示的なループ検出アルゴリズムを示す。図8で表現される一例の場合、チェックサムバッファ804におけるループ802、C7−C2−C4−C5−C4−C6は3回反復し、第1のループはフレームバッファ806におけるフレームF1及びF2内に出現し、第2のループはフレームF2及びF3内に、かつ第3のループはフレームF4及びF5内に出現する。この結果、フレームF1はチェックサムC4を有することになり、F2はチェックサムC2を、F3はC6を、F4はC5を、かつF5はC6を有することになる。フレームF1からF5までを見ることによって、このモバイルデバイス状態がループしていると述べることは不可能であるが、ピクセル更新ストリームからのチェックサムバッファを見れば、それは可能である。
最終チェックサムから開始し、かつ遡って進んでいけば、チェックサムバッファにおけるループを検出することができる。ループ検出アルゴリズムは単に最終チェックサム810の先行インスタンスを探し、かつこれを発見する度に、順次、その一致から遡って先行チェックサムがカレントチェックサム812より前のチェックサムに一致するかどうかの確認を続ける。一致するストリング814が最初の2つの一致の間のスペース全体がトラバースされる前に終われば、ループは存在していない。最初の2つの一致の間のスペースが完全に再現されていれば、潜在的ループが発見されている。
ループ検出アルゴリズムは遡って探す作業を続け、潜在的ループの反復が存在する回数を確認する。潜在的ループの反復回数が予め設定されたしきい値より多ければ、動画はループであるとされる。デバイスインタフェース130から着信する、同じパターンに一致する後続のチェックサムは全て無視されるが、これもまた、フレームバッファにこれ以上フレームは追加されないことを意味する。予測されるパターンに一致しないチェックサムが受信されれば、そのループは終了していて、チェックサム及びフレームは再びバッファへ追加される。
ループ検出は計算集約的なオペレーションであり、よってアルゴリズムを指定された持続時間のループの探索のみに限定することが一助となる。フレームインデックスルックアップ820に対するチェックサムを使用し、かつ先行フレーム822の時間をチェックすることによって、ループ検出アルゴリズムは任意に短いループの探索、または極端に長い動画におけるループの探索を回避することができる。ループ検出持続時間の最短及び最長しきい値は、人であるオペレータによって設定することができる。
状態リスナ132は、モバイルデバイス状態が安定したことを決定すると、一致が存在するかどうかを確認するために、データバッファのコンテンツを保存されたグラフ内の既存のノードと比較してもよい(図2のブロック224)。概して、考慮すべき事例は、ビデオバッファが単一の静止画像において終了した、または無限にループする動画として終了した、という2つが存在する。
静止画像の場合、グラフ内の一致するノードは何れも、バッファ内の最終コンテンツに一致する画像内で終わらなければならない。遷移動画が静止画像に先行している状態の場合、可能なアプローチは幾つか存在する。最も単純なソリューションでは、状態リスナ132は全ての遷移動画をドロップして1つのノードにつき1つのフレーム画像のみを格納することができる。このアプローチに対する改良は、任意の遷移画像をグラフ内の2ノード間のリンクに関連づけることである。しかしながら、同じ状態へ至る多くの経路が同じ遷移画像の幾つかまたは全てを共有する可能性もあることから、これによりデータの複製が生じる可能性もある。ある好適なアプローチは、まず全ての遷移画像を宛先ノードの一部として保存し、かつこのノードがモバイルデバイス上の状態によって一致される度に、データバッファ上の全てのチェックサムヒットと保存されたノード上のフレームとの共通部分を保持することである。この共通部分に存在しない状態リスナのデータバッファにおけるフレームは、カレントナビゲーションイベントに関連づけられる着信リンクに関連づけられ、共通部分に存在しない保存されたノード上のフレームは、他の全ての着信リンクのために各動画の終わりへ移動される。このアプローチは、グラフ内の保存されたノードが全ての可能な着信経路に共通する最大の遷移フレームセットを含み、一方で他の全ての遷移動画を、これらが関連づけられる着信リンクに固有のものとして正確に表現することを保証する。
データバッファがループ内で終わる事例では、これが静止画像内で終わるかのように同じ概念が当てはまるが、ループはアトミックエンティティとして扱われなければならないことが異なる。言い替えれば、グラフ内の任意のノードもまた、一致するループ内において終わるべきである。ループに先行して、状態リスナ132は、遷移動画の関連づけを行う上述のアプローチのうちの何れをも採用することができる。ある好適な実施形態では、全ての遷移動画の共通部分を発見し、かつ他のフレームを着信リンク間に分散させる同じアプローチが採用される。無限にループする動画を一致させることは、静止フレームの一致より複雑である。単一動画を比較する際と同じ問題が存在するが、モバイルデバイスは必ずしも動画の表示を同じポイントで開始しなくてもよい点が異なる。従って、ループする動画を比較する何れの方法も、この事例に対処するために、比較の間に円形のデータ構造におけるループ部分をシフトする何らかの方法を採用すべきである。ある好適な実施形態では、任意の既存のループする動画との一致をチェックする際に、ループの一部であるチェックサムに対応するチェックサムヒットバッファのコンテンツがシフトされる。但し、ピクセルストリームのループ部分をシフトすることを含む他の方法も本発明の範囲内である。
図9は、状態比較アルゴリズムの一実施形態を表す状態図であり、考慮すべき2つの事例、即ち、902における、ビデオバッファが単一の静止画像において終わるか、または904における、無限にループする動画で終わるか、が記述されている。
902において、フレームバッファが静止画像において終われば、同じ静止画像内で終わるノードは何れも潜在的一致とされる。図9における例では、状態リスナ132は、フレームバッファ910においてフレームF4と同じチェックサムを有する全てのフレームを探索し、これらが属するノードを取得し、かつ一致フレームにおいて終わるノードのみを保持する。このようなノードが2つ以上存在すれば、状態リスナ132はチェックサムヒットバッファ912へ遡って参照し、順次、最も連続的なフレームに一致するものを発見する。本例において、一致するノードはフレームF9及びF8において終わっていて、これらのフレームは各々最終フレームF4と、フレームF3において結果的に生じた処理ループの間に見られたチェックサムとに一致した。カレントナビゲーションイベントに関して着信リンクが既に存在していれば、914において一致する状態が存在し、916においてカレント状態が更新され、かつ新しいリンクは生成されない。存在していなければ、フレームバッファ上の任意の先行する不一致フレームが一致する部分のプリアンブルとされ、カレントナビゲーションイベント用に生成された新しい着信リンクに関連づけられる。この事例では、フレームF2及びF3が新しい着信リンクに関連づけられた。同様に、保存されたノード上の任意の先行する不一致フレームは一致する部分のプリアンブルとされ、任意の既存の着信リンクに関連づけられる動画の終わりへ移動される。この事例では、フレームF11が既存の着信リンクの終わりへ移動された。
904において、フレームバッファ920がループする動画において終われば、状態リスナ132は、チェックサムヒットバッファ922において、既存のノードの終わりにおけるループする動画の一部であるフレームを探索する。この例では、状態リスナ132はフレームF6、F7、F8及びF9について考察し、これらのフレームのうちの1つまたはそれ以上を含むループする動画で終わる任意のノードを発見する。次に、状態リスナ132は、チェックサムヒットバッファのループする部分を一度に1つずつシフトして、任意の既存のループする動画における全てのフレームが順次一致されたかどうかを確認しようとする。904の例では、状態リスナ132はチェックサムヒットバッファのシーケンスF6−F7−F8−F9について考察し、次にF9−F6−F7−F8、次にF8−F9−F6−F7、次にF7−F8−F9−F6と考察する。924において、第3の反復時に、既存のノードを終わらせるループする動画F8−F9−F7が一致する。カレントナビゲーションイベントに関して着信リンクが既に存在していれば、926において、カレント状態が更新され、新しいリンクは生成されない。存在していなければ、フレームバッファ上の任意の先行する不一致フレームは一致する部分のプリアンブルとされて、カレントナビゲーションイベント用に生成された新しい着信リンクに関連づけられる。この事例では、フレームF1及びF2が新しい着信リンクに関連づけられた。同様に、保存されたノード上の任意の先行する不一致フレームは一致する部分のプリアンブルとされ、任意の既存の着信リンクに関連づけられる動画の終わりへ移動される。この事例では、このようなフレームは存在せず、よって着信リンクは変更されないままにされた。
図10は、本発明の実施形態による例示的な自動化されたクローラ134の論理1000を示すブロック図である。まず、ブロック1010において、自動化されたクローラ134は人であるオペレータによって開始される。状態リスナ132がまだ開始されていなければ、自動化されたクローラ134は状態リスナ132を開始し、作業を続ける前に、状態リスナ132によりモバイルデバイス102が安定状態にあることが表示されるのを待つ。また、自動化されたクローラ134は、グラフのルートノードが確定されていること、及びルートノードに至るナビゲーション制御の経路が設定されていることを確認するチェックも行う。
自動化されたクローラ134は、ルートノードに至るナビゲーションイベントの経路を検索する。前記経路は、人であるオペレータによってコンフィギュレーション設定としてグラフ内に保存されている。自動化されたクローラ134は次に、ブロック1012において、これらのナビゲーションイベントをモバイルデバイス102へ送信し、これを既知の状態にさせる。
ある実施形態では、ブロック1014において、自動化されたクローラ134は、あらゆる可能なナビゲーションイベントに関して確定された発信リンクを持たないノードを発見するまで、グラフ内のあらゆるノードの広さ優先トラバーサルを実行する。自動化されたクローラ134は、デバイスインタフェース130へ問い合わせることにより、モバイルデバイス104によってどのナビゲーションイベントがサポートされているかを発見する。このリストを発信リンクのためのナビゲーションイベントリストによってフィルタリングすることにより、自動化されたクローラ134は、モバイルデバイス102上のその状態に関してはまだ試行されていないナビゲーションイベントを発見する。
自動化されたクローラ134は、ルート状態から所定数より少ないナビゲーションイベントだけ離れたモバイルデバイス102上の状態までしかナビゲートしないように構成され得る。完全にマップされていない最近ノードがこのナビゲーションイベント数よりさらに離れていれば、自動化されたクローラ134はそれ以上行う作業がなく、停止する。自動化されたクローラ134がこのような限定的機能を有していれば、ブロック1016において、自動化されたクローラ134は、クローラ134が依然として設定された最大深さ内に存在していることを確認するチェックを行う。最大深さが超過されていれば、ブロック1018において、自動化されたクローラ134は終了する。
最大深さが超過されておらず、かつ完全にマップされていないノードが発見されていれば、ブロック1020において、自動化されたクローラ132はモバイルデバイス上のその状態までナビゲートする。自動化されたクローラは、その標的ノードに到達すると、ブロック1022において、その状態用に設定された限界条件が存在するかどうかを確認するチェックを行う。所定の事例では、自動化されたクローラ134による望ましくないダウン経路の継続を禁止するために、ナビゲーションイベントは、モバイルデバイス上に存在するオーディオまたはビデオデータを基礎として有効化または無効化されてもよい。
限界条件により無効化される任意のナビゲーションイベントに関して、自動化されたクローラ134は、ブロック1024において、そのノード及びナビゲーションイベントに関する空の発信リンクを生成する。これは、グラフ・トラバーサルアルゴリズムに対して、この経路について、それが辿られなかったとしても考慮されたことを表示し、前記ノードは、許容された全てのナビゲーションイベントが取り込まれた時点でアルゴリズムに完全にマップされて現出する。
カレントノードからの発信リンクを持たない許容された任意のナビゲーションイベントについて、ブロック1026において、自動化されたクローラ134はこれらのうちの1つを選択し、デバイスインタフェース130を介してこれをモバイルデバイス102へ送信する。次にクローラ134は、プロセスの次の反復を開始する前に、状態リスナによってモバイルデバイスが安定状態にあることが表示されるのを待つ。
保存されたグラフ構造体における、モバイルデバイスの仮想化を表す宛先ノードを所与として、物理的モバイルデバイス102上のそのノードに対応する状態までナビゲートする必要がある所定の時点が存在する。自動化されたクローラによるループ処理の間は、このようなシナリオが2つ発生するが、人であるユーザが物理的モバイルデバイス102を手動でナビゲートすることによって所定のノードからグラフ構造体を拡張したい場合を含む他のシナリオも存在することがある。これらの事例の全てにおいて、グラフにおいて物理的モバイルデバイス102のカレント状態に対応するノードを発見し、グラフにおいてカレントノードと宛先との間の最短経路を発見し、かつ次にこの経路に対応するナビゲーションイベントをモバイルデバイス102へ送信する手段が存在しなければならない。以下、このプロセスについてさらに詳しく説明する。
図11は、本発明の実施形態による例示的な自動化されたクローラのナビゲーション論理を示す、図10からのブロック図の1100である。ナビゲーション論理1100はブロック1110において開始され、この時点で自動化されたクローラ134はモバイルデバイス102をグラフ内の宛先ノードに対応する状態に置く必要がある。ナビゲーション論理1100は、モバイルデバイス102のカレント状態を表すノードと、グラフ内の宛先ノードとを認識している必要がある。
ナビゲーション論理1100は次に、ブロック1120において、宛先状態までの経路を発見する。宛先がルートノードであれば、ナビゲーション論理は先に設定された経路を使用する。宛先が、マップされていないノードの探索の間にグラフのトラバーサルによって発見されていれば、そのトラバーサルアルゴリズムは、定義からすると既存の最短経路であるルートノードから宛先までの経路を発見している。他の任意の事例については、単一ペア最短経路のA*アルゴリズムが使用され、この場合、経路のコストは、当初、ルートノードまでの設定経路の長さとグラフにおける宛先ノードのルートノードからの深さとの合計を超えないものであるように推定される。
ナビゲーション論理1100は次に、ブロック1130において、次の適切なキーを押す。ナビゲーション論理は経路から次のナビゲーションイベントを除去してデバイスインタフェースへ送り、モバイルデバイス上でナビゲーションを実行する。ナビゲーション論理1100は、ブロック1140において、状態リスナ132を、状態リスナ132によってモバイルデバイス102が安定状態にあることが表示されるまでポーリングする。またナビゲーション論理は状態リスナ132に問い合わせて、モバイルデバイス102が、安定状態となった後はそのナビゲーションイベントの後に予測された状態にあることを検証する。予測された状態になければ、もしくはその状態が最大時間しきい値の後に安定していなければ、ナビゲーション論理1100はエラーが発生しているものと判断する。
ブロック1150において、さらにナビゲーションイベントが存在していれば、ナビゲーション論理1100は次のナビゲーションイベントをモバイルデバイス102へ送信する。存在しなければ、モバイルデバイス102はその宛先状態へ到達しているか、エラーを発生している。何れの場合も、ブロック1160において、ナビゲーション論理1100はその処理を終了している。ナビゲーション論理1100は、ナビゲーションの間にエラーに遭遇すれば、自動化されたクローラ134をモバイルデバイス上のルート状態までナビゲートするその初期状態へ戻す。
モバイルデバイス上には、自動化されたクローラによって生成されたバーチャルデバイスのユーザの関心を惹くと思われる画面、しかしながら限界条件に起因して、またはナビゲーションイベントのランダムなシーケンスはその画面に到達するとは思えないことからクローラは発見しない画面が存在する場合がある。例としては、モバイルデバイスによる電話番号のダイアリング、SMSメッセージの入力及び送信またはライブ写真及びビデオの撮影が含まれてもよい。このような画面に対しては、状態リスナが実行中である間に人であるオペレータが経路を手動でナビゲートすることができる。これは、人であるユーザによるコンテキスト上の案内のみによって、自動化されたナビゲーションの間と同様にグラフ内の経路を捕捉しかつ保存する。
手動ナビゲーションの間に捕捉される状態のシーケンスは、バーチャルデバイスのエンドユーザへ双方向式に、または非双方向ビデオとして表示され得る。後者の場合、これらの状態は、エンドポイントビデオとして集合的に定義される。バーチャルデバイスのグラフ表現を生成する人であるオペレータは、これらの画面を1つのエンティティにグループ化し、かつこのエンティティを画面へのエントリポイントを表すグラフ内のノードに関連づける。ユーザは、バーチャルデバイスをナビゲートしていて特定のノードに到達すると、エンドポイントビデオ内に、特有の機能を示す画面シーケンスを見るオプションを与えられる。
図12は、本発明の実施形態による記録/制御環境の属性を使用する例示的な装置を示す。記録/制御環境104は、汎用コンピュータ108または他の何らかの処理装置上で実行されてもよい。汎用コンピュータ108は、ソフトウェアアプリケーションまたは他の電子的命令を実行することができる任意のコンピュータシステムである。これには、Windows PCまたはApple Machintosh等の一般的に利用可能なコンピュータハードウェア及びオペレーティングシステム、またはUnixまたはLinuxサーバ等のサーバベースのシステムが含まれる。またこれには、汎用CPUまたはCPLD、FPGAまたは他の任意の類似タイプのプログラマブル論理技術を基礎とするカスタム設計のプログラマブル論理プロセッサの何れかを使用して命令を処理するように設計されるカスタムハードウェアが含まれる可能性もある。
図12において、汎用コンピュータ108は、プロセッサ1202、フラッシュ1204、メモリ1206及びスイッチコンプレックス1208と共に示されている。また汎用コンピュータ108は、入力及び出力デバイスのための複数のポート1210を含んでもよい。スクリーン1212は、記録/制御環境104のインタフェースを視るために取り付けられてもよい。入力デバイスは、ユーザが記録/制御環境104を介してナビゲートできるようにするキーボード1214またはマウス1216を含んでもよい。メモリ1206またはフラッシュ1204内に存在する、コンピュータ読取り可能媒体の型式であるファームウェアは、記録/制御環境104に関連する上述のオペレーションを実行するためにプロセッサ1204によって実行され得る。さらに、メモリ1206またはフラッシュ1204は、先に述べたようなグラフノード状態、プリアンブル及びノード情報間の遷移シーケンスを格納することができる。汎用コンピュータは、コンピュータネットワークまたはインターネットへ接続するためにサーバ1218へ接続されてもよい。
このファームウェアは、コンピュータベースシステム、プロセッサ搭載システムまたは命令実行システム、装置またはデバイスから命令をフェッチし、かつこれらの命令を実行することのできる他のシステム等の命令実行システム、装置またはデバイスによる使用のために、またはこれらに関連して使用するために任意のコンピュータ読取り可能媒体上へ格納され、かつ移送され得る点に留意されたい。本明細書のコンテキストにおいて、「コンピュータ読取り可能媒体」は、命令実行システム、装置またはデバイスによる使用のための、またはこれらに関連して使用するためのプログラムを包含し、格納し、伝達し、伝搬し、または移送することができる任意の媒体であり得る。コンピュータ読取り可能媒体は、例えば、電子式、磁気式、光学式、電磁式、赤外線または半導体のシステム、装置、デバイスまたは伝搬媒体であり得るが、この限りではない。コンピュータ読取り可能媒体のより具体的な例には、1つまたは複数のワイヤを有する電気接続部(電子式)、ポータブルコンピュータディスケット(磁気式)、ランダムアクセスメモリ(RAM)(磁気式)、読取り専用メモリ(ROM)(磁気式)、消去可能なプログラム可能読取り専用メモリ(EPROM)(磁気式)、光ファイバ(光学式)、CD、CD−R、CD−RW、DVD、DVD−RまたはDVD−RW等のポータブル光ディスクまたはコンパクトフラッシュカード、セキュアドデジタルカード、USBメモリデバイス、メモリスティック及びこれらに類似するもの等のフラッシュメモリが含まれるが、この限りではない。コンピュータ読取り可能媒体は、紙または他のプログラムが上にプリントされる別の適切な媒体である可能性もあることに留意されたい。そのプログラムテキストは、紙または他の媒体の光学走査を介して電子的に捕捉され、次いでコンパイルされ、インタープリトされ、または他に必要であれば適切な方法で処理され、次いでコンピュータメモリに格納され得ることがその理由である。
クレームに記載している「コンピュータ」または「汎用コンピュータ」という用語は、少なくともデスクトップコンピュータ、ラップトップコンピュータまたは移動体通信デバイス(例えば、セルラまたはWi−Fi/Skype(登録商標)ホン、eメール通信デバイス、パーソナルデジタルアシスタントデバイス)及びマルチメディア再生デバイス(例えば、iPod(登録商標)、MP3プレーヤまたは任意のデジタルグラフィックス/写真再生デバイス)等の任意のモバイルコンピューティングデバイスを包含するものとする。或いは、汎用コンピュータは、本発明の実施形態による記録または再生機能のみをサポートするように設計される特有の装置であってもよい。例えば、汎用コンピュータは、モバイルデバイスと統合または接続し、かつ専ら前記デバイスと相互作用してオーディオ及びビデオデータ応答を記録するようにプログラムされるデバイスであってもよい。
以上、添付の図面を参照して本発明をその実施形態に関連して十分に説明したが、当業者には様々な変更及び修正が明らかとなることは留意されるべきである。このような変更及び修正は、添付のクレームに規定されている本発明の範囲に包含されるものとして理解されるべきである。
一般的な当業者は、本発明の精神及び範囲を逸脱することなく多くの変更及び修正を行うことができる。従って、説明された実施形態は単に例示を目的として記述されていること、及びこれらの実施形態を添付のクレームに記載された本発明を制限するものとして捉えるべきでないことは理解されなければならない。例えば、本発明の多くの実施形態は特有の結果に対する論理プロセスを特有の順序で記述しているが、本発明が記述されている順序に限定されないことは理解されるべきである。2つ以上のステップは、単一のステップに結合されてもよく、または、プロセスは記述されている順序以外で実行されてもよい。例えば、アプリケーションが情報の検索または格納である場合、記述されている実施形態はオーディオ及びビデオデータの記録または再生を特有の順序で発生する別々のステップとして論じている。本発明は、これらのステップを単一のステップに結合して、ビデオ及びオーディオデータを同時的に再生または記録すること、またはオーディオより前にビデオが検索されるように、またはその逆であるように順序を逆転することを包含して理解されるべきである。
本明細書において本発明及びその様々な実施形態を説明するために使用されている用語は、一般的に定義されているその意味または当業者によって定義されるその意味による意味合いだけでなく、こうした一般的に定義されている意味の範囲を超える本明細書の構造、物質または行為における特有の定義をも包含して理解されるべきである。従って、あるエレメントを本明細書のコンテキストにおいて2つ以上の意味を包含するものとして理解できれば、クレームにおけるその使用は、本明細書及びその用語自体によって裏付けられる意味の全ての可能性に対し包括的であるものとして理解されなければならない。
従って、添付のクレームの用語またはエレメントの定義は、本明細書において文字通りに記述されるエレメントの組合せだけでなく、ほぼ同じ機能をほぼ同じ方法で実行してほぼ同じ結果を達成するための全ての同等な構造、物質または行為をも包含して定義される。従って、この意味合いにおいては、クレームにおける任意の1つのエレメントに関して2つ以上のエレメントより成る均等の置換を行い得ること、またはクレームにおける2つ以上のエレメントに関して単一のエレメントが置換されてもよいことが企図される。
現時点で既知である、または後に考案される、一般的な当業者から見たクレームされている発明対象からの微弱な変更が等しくクレームの範囲内にあることは、明らかに企図される。従って、現時点または後日一般的な当業者に知られる明白な置換は、規定されたクレームエレメントの範囲内にあるものと定義される。

Claims (36)

  1. モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するための方法であって、
    前記モバイルデバイスからカレント状態を受信することと、
    前記カレント状態から状態間の遷移シーケンスと安定状態とを分離することと、
    前記安定状態からの動的コンテンツをマスキングして前記安定状態を表す正規サンプルを識別することを含む方法。
  2. 前記安定状態内の安定したループを検出することをさらに含む、請求項1記載の方法。
  3. 前記安定状態を先に識別された状態と比較することをさらに含む、請求項1記載の方法。
  4. 前記先に識別された状態との一致が発見されなければ、前記安定状態を記録することをさらに含む、請求項3記載の方法。
  5. 先行状態から前記カレント状態へのリンクを生成することをさらに含む、請求項1記載の方法。
  6. 先に記録されていない状態へナビゲートすることをさらに含む、請求項1記載の方法。
  7. モバイルデバイスのカレント状態を識別してモバイルデバイスオプションへとナビゲートする方法であって、
    前記モバイルデバイスからオーディオ及びビデオデータを検索することと、
    動的コンテンツをフィルタリングすることと、
    迅速な比較のために前記ビデオデータを処理することと、
    前記ビデオデータにおけるループを検出することを含む方法。
  8. 前記ビデオデータをピクセル更新のストリームとして格納することをさらに含む、請求項7記載の方法。
  9. 前記ピクセル更新をXY座標及び画像チェックサムとして格納することをさらに含む、請求項7記載の方法。
  10. 前記ビデオデータを処理することは前記動的コンテンツをマスキングすることを含む、請求項7記載の方法。
  11. 後にモバイルデバイスの特定の状態へナビゲートするために状態図を構築する方法であって、
    ルートノードを確定することと、
    発信リンクを持たない最初のノードを発見することと、
    前記モバイルデバイス上の前記最初のノードに対応する状態へナビゲートすることと、
    ナビゲーションイベントを前記モバイルデバイスへ送信することを含む方法。
  12. 前記ナビゲーションイベントを状態図に格納することをさらに含む、請求項11記載の方法。
  13. 前記状態図におけるカレント状態から所望される状態までの最短経路を決定することをさらに含む、請求項11記載の方法。
  14. 前記最短経路に対応するナビゲーションイベントを前記モバイルデバイスへ送信することをさらに含む、請求項13記載の方法。
  15. 前記最短経路は、
    前記モバイルデバイスの前記カレント状態と前記所望される状態とを識別することと、
    前記所望される状態の前記ルートノードからの深さを決定することと、
    前記カレント状態から前記ルートノードまでの設定された経路を加算すること、によって決定される、請求項13記載の方法。
  16. 前記モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するための装置であって、
    前記モバイルデバイスへ接続するように構成されるインタフェースと、
    前記インタフェースへ通信可能式に結合され、かつ前記モバイルデバイスとの相互作用を、
    前記モバイルデバイスからカレント状態を受信することと、
    前記カレント状態から状態間の遷移シーケンスと安定状態とを分離することと、
    前記安定状態からの動的コンテンツをマスキングして前記安定状態を表す正規サンプルを識別すること、
    によって記録するようにプログラムされるプロセッサとを備える装置。
  17. 前記プロセッサはさらに、前記安定状態における安定したループを検出するようにプログラムされる、請求項16記載の装置。
  18. 前記プロセッサはさらに、前記安定状態を先にナビゲートされた状態と比較するようにプログラムされる、請求項16記載の装置。
  19. 前記プロセッサはさらに、先行状態から前記カレント状態へのリンクを生成するようにプログラムされる、請求項16記載の装置。
  20. 前記プロセッサはさらに、先にナビゲートされた状態を比較することによって状態間の遷移シーケンスを決定するようにプログラムされる、請求項16記載の装置。
  21. 前記モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するための装置であって、
    前記モバイルデバイスへ接続するように構成されるインタフェースと、
    前記インタフェースへ通信可能式に結合され、かつ前記モバイルデバイスとの相互作用を、
    前記モバイルデバイスからオーディオ及びビデオデータを検索することと、
    動的コンテンツをフィルタリングすることと、
    迅速な比較のために前記ビデオデータを処理することと、
    前記ビデオデータにおけるループを検出すること、
    によって記録するようにプログラムされるプロセッサとを備える装置。
  22. 前記プロセッサはさらに、前記動的コンテンツをマスキングすることによって前記ビデオデータを処理するようにプログラムされる、請求項21記載の装置。
  23. 後にモバイルデバイスの特定の状態へナビゲートするために状態図を構築する装置であって、
    前記モバイルデバイスへ接続するように構成されるインタフェースと、
    前記インタフェースへ通信可能式に結合され、かつ前記モバイルデバイスのナビゲーション経路を、
    ルートノードを確定することと、
    発信リンクを持たない最初のノードを発見することと、
    前記モバイルデバイス上の前記最初のノードに対応する状態へナビゲートすることと、
    ナビゲーションイベントを前記モバイルデバイスへ送信すること、
    によって決定するようにプログラムされるプロセッサとを備える装置。
  24. 前記プロセッサはさらに、前記モバイルデバイスにおけるカレント状態から所望される状態までの最短経路を決定するようにプログラムされる、請求項23記載の装置。
  25. 前記最短経路は、
    前記モバイルデバイスの前記カレント状態と前記所望される状態とを識別することと、
    前記所望される状態の前記ルートノードからの深さを決定することと、
    前記カレント状態から前記ルートノードまでの設定された経路を加算すること、によって決定される、請求項24記載の方法。
  26. モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するためのプログラムコードを備えるコンピュータ読取り可能媒体であって、前記プログラムコードは、
    前記モバイルデバイスからカレント状態を受信することと、
    前記カレント状態から状態間の遷移シーケンスと安定状態とを分離することと、
    前記安定状態からの動的コンテンツをマスキングして前記安定状態を表す正規サンプルを識別すること、
    を含む方法のパフォーマンスを引き起こすためのものであるコンピュータ読取り可能媒体。
  27. 前記プログラムコードはさらに、前記安定状態における安定したループを検出することを含む方法のパフォーマンスを引き起こすためのものである、請求項26記載のコンピュータ読取り可能媒体。
  28. 前記プログラムコードはさらに、前記安定状態を先にナビゲートされた状態と比較することを含む方法のパフォーマンスを引き起こすためのものである、請求項26記載のコンピュータ読取り可能媒体。
  29. 前記プログラムコードはさらに、先行状態から前記カレント状態へのリンクを生成することを含む方法のパフォーマンスを引き起こすためのものである、請求項26記載のコンピュータ読取り可能媒体。
  30. 前記プログラムコードはさらに、先にナビゲートされた状態を比較することによって状態間の遷移シーケンスを決定することを含む方法のパフォーマンスを引き起こすためのものである、請求項26記載のコンピュータ読取り可能媒体。
  31. モバイルデバイスのカレント状態を識別して前記モバイルデバイスとの相互作用を記録するためのプログラムコードを備えるコンピュータ読取り可能媒体であって、前記プログラムコードは、
    前記モバイルデバイスからオーディオ及びビデオデータを検索することと、
    動的コンテンツをフィルタリングすることと、
    迅速な比較のために前記ビデオデータを処理することと、
    前記ビデオデータにおけるループを検出すること、
    を含む方法のパフォーマンスを引き起こすためのものであるコンピュータ読取り可能媒体。
  32. 前記プログラムコードはさらに、前記動的コンテンツをマスキングすることによって前記ビデオデータを処理することを含む方法のパフォーマンスを引き起こすためのものである、請求項31記載のコンピュータ読取り可能媒体。
  33. 後にモバイルデバイスの特定の状態へナビゲートするために状態図を構築するためのプログラムコードを備えるコンピュータ読取り可能媒体であって、前記プログラムコードは、
    ルートノードを確定することと、
    発信リンクを持たない最初のノードを発見することと、
    前記モバイルデバイス上の前記最初のノードに対応する状態へナビゲートすることと、
    ナビゲーションイベントを前記モバイルデバイスへ送信すること、
    を含む方法のパフォーマンスを引き起こすためのものであるコンピュータ読取り可能媒体。
  34. 前記プログラムコードはさらに、前記モバイルデバイスにおけるカレント状態から所望される状態までの最短経路を決定することを含む方法のパフォーマンスを引き起こすためのものである、請求項33記載のコンピュータ読取り可能媒体
  35. 前記プログラムコードはさらに、前記最短経路を、
    前記モバイルデバイスの前記カレント状態と前記所望される状態とを識別することと、
    前記所望される状態の前記ルートノードからの深さを決定することと、
    前記カレント状態から前記ルートノードまでの設定された経路を加算すること、
    によって決定することを含む方法のパフォーマンスを引き起こすためのものである、請求項34記載のコンピュータ読取り可能媒体。
  36. モバイルデバイスを制御し、かつ仮想環境における後続のシミュレーションのために装置と前記モバイルデバイスとの間の相互作用を記録するための装置であって、
    前記モバイルデバイスへ接続して前記モバイルデバイスのナビゲーションを制御するためのデバイスインタフェースと、
    前記モバイルデバイスのマップされていない状態を決定するための自動化されたクローラと、
    前記モバイルデバイスの制御及び前記モバイルデバイスからの応答を記録して前記応答が先に記録されているかどうかを決定するための状態リスナとを備える装置。
JP2010546826A 2008-02-11 2009-02-04 バーチャルデバイスインタフェースの自動記録 Pending JP2011517795A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/029,445 2008-02-11
US12/029,445 US20090203368A1 (en) 2008-02-11 2008-02-11 Automated recording of virtual device interface
PCT/US2009/033055 WO2009102595A2 (en) 2008-02-11 2009-02-04 Automated recording of virtual device interface

Publications (1)

Publication Number Publication Date
JP2011517795A true JP2011517795A (ja) 2011-06-16

Family

ID=40939324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010546826A Pending JP2011517795A (ja) 2008-02-11 2009-02-04 バーチャルデバイスインタフェースの自動記録

Country Status (8)

Country Link
US (1) US20090203368A1 (ja)
EP (1) EP2255350A4 (ja)
JP (1) JP2011517795A (ja)
AU (1) AU2009215040A1 (ja)
CA (1) CA2713654A1 (ja)
IL (1) IL206954A0 (ja)
TW (1) TW200941167A (ja)
WO (1) WO2009102595A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2841017C (en) 2006-03-27 2016-12-20 The Nielsen Company (Us), Llc Methods and systems to meter media content presented on a wireless communication device
US8892738B2 (en) 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US8503991B2 (en) * 2008-04-03 2013-08-06 The Nielsen Company (Us), Llc Methods and apparatus to monitor mobile devices
EP2351371B1 (en) * 2008-10-28 2017-12-27 Nxp B.V. Method for buffering streaming data and a terminal device
JP2011215735A (ja) * 2010-03-31 2011-10-27 Denso Corp 画面遷移条件設定支援装置
TWI419052B (zh) * 2011-01-06 2013-12-11 Univ Nat Taiwan 行動裝置的虛擬系統及其虛擬方法
US8806647B1 (en) 2011-04-25 2014-08-12 Twitter, Inc. Behavioral scanning of mobile applications
US8676938B2 (en) 2011-06-28 2014-03-18 Numecent Holdings, Inc. Local streaming proxy server
US9386057B2 (en) * 2012-01-18 2016-07-05 Numecent Holdings, Inc. Application streaming and execution system for localized clients
US9485304B2 (en) 2012-04-30 2016-11-01 Numecent Holdings, Inc. Asset streaming and delivery
WO2014043277A2 (en) 2012-09-11 2014-03-20 Numecent Holdings Ltd. Application streaming using pixel streaming
US10261611B2 (en) * 2012-12-03 2019-04-16 Apkudo, Llc System and method for objectively measuring user experience of touch screen based devices
US9578133B2 (en) 2012-12-03 2017-02-21 Apkudo, Llc System and method for analyzing user experience of a software application across disparate devices
US9661048B2 (en) 2013-01-18 2017-05-23 Numecent Holding, Inc. Asset streaming and delivery
US9075781B2 (en) 2013-03-15 2015-07-07 Apkudo, Llc System and method for coordinating field user testing results for a mobile application across various mobile devices
EP2887021B1 (en) * 2013-12-20 2019-05-15 Airbus Operations GmbH Merging human machine interfaces of segregated domains
US9411825B2 (en) * 2013-12-31 2016-08-09 Streamoid Technologies Pvt. Ltd. Computer implemented system for handling text distracters in a visual search
US10318575B2 (en) 2014-11-14 2019-06-11 Zorroa Corporation Systems and methods of building and using an image catalog
US9283672B1 (en) 2014-12-11 2016-03-15 Apkudo, Llc Robotic testing device and method for more closely emulating human movements during robotic testing of mobile devices
US10311112B2 (en) * 2016-08-09 2019-06-04 Zorroa Corporation Linearized search of visual media
US10467257B2 (en) 2016-08-09 2019-11-05 Zorroa Corporation Hierarchical search folders for a document repository
US10664514B2 (en) 2016-09-06 2020-05-26 Zorroa Corporation Media search processing using partial schemas

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03252812A (ja) * 1990-03-02 1991-11-12 Hitachi Ltd プログラム実行状況表示方法
WO2001097034A1 (fr) * 2000-06-14 2001-12-20 Seiko Epson Corporation Procede et systeme d'evaluation automatique, et support de stockage d'un programme d'evaluation automatique
JP2002032241A (ja) * 2000-07-19 2002-01-31 Hudson Soft Co Ltd 携帯電話用コンテンツのデバッグ方法およびデバッグ装置
JP2003036165A (ja) * 2001-04-12 2003-02-07 Agilent Technol Inc 遠隔管理装置
JP2005166010A (ja) * 2003-11-11 2005-06-23 Matsushita Electric Ind Co Ltd プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム
US20060223045A1 (en) * 2005-03-31 2006-10-05 Lowe Jason D System and method for capturing visual information of a device
JP3963932B1 (ja) * 2006-09-28 2007-08-22 システムインテグレート株式会社 情報処理装置の情報漏洩監視・管理方式

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2060891A1 (en) * 1989-07-03 1991-01-04 Paul E. Williams Computer operations recorder and training system
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US20040158815A1 (en) * 2001-07-09 2004-08-12 Potgieter Anna Elizabeth Gezina Complex adaptive systems
US7647561B2 (en) * 2001-08-28 2010-01-12 Nvidia International, Inc. System, method and computer program product for application development using a visual paradigm to combine existing data and applications
JP4081017B2 (ja) * 2002-03-11 2008-04-23 リサーチ イン モーション リミテッド データを移動装置へ押し進めるためのシステム及び方法
US20050216829A1 (en) * 2004-03-25 2005-09-29 Boris Kalinichenko Wireless content validation
US7512402B2 (en) * 2004-05-14 2009-03-31 International Business Machines Corporation Centralized display for mobile devices
US7613453B2 (en) * 2005-11-04 2009-11-03 Research In Motion Limited System and method for provisioning a third party mobile device emulator
US7805008B2 (en) * 2005-11-14 2010-09-28 Intel Corporation Structural content filtration of hypotheses in a cognitive control framework

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03252812A (ja) * 1990-03-02 1991-11-12 Hitachi Ltd プログラム実行状況表示方法
WO2001097034A1 (fr) * 2000-06-14 2001-12-20 Seiko Epson Corporation Procede et systeme d'evaluation automatique, et support de stockage d'un programme d'evaluation automatique
JP2002032241A (ja) * 2000-07-19 2002-01-31 Hudson Soft Co Ltd 携帯電話用コンテンツのデバッグ方法およびデバッグ装置
JP2003036165A (ja) * 2001-04-12 2003-02-07 Agilent Technol Inc 遠隔管理装置
JP2005166010A (ja) * 2003-11-11 2005-06-23 Matsushita Electric Ind Co Ltd プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム
US20060223045A1 (en) * 2005-03-31 2006-10-05 Lowe Jason D System and method for capturing visual information of a device
JP3963932B1 (ja) * 2006-09-28 2007-08-22 システムインテグレート株式会社 情報処理装置の情報漏洩監視・管理方式

Also Published As

Publication number Publication date
EP2255350A2 (en) 2010-12-01
TW200941167A (en) 2009-10-01
WO2009102595A3 (en) 2009-12-30
WO2009102595A2 (en) 2009-08-20
AU2009215040A1 (en) 2009-08-20
US20090203368A1 (en) 2009-08-13
IL206954A0 (en) 2010-12-30
CA2713654A1 (en) 2009-08-20
EP2255350A4 (en) 2012-06-06

Similar Documents

Publication Publication Date Title
JP2011517795A (ja) バーチャルデバイスインタフェースの自動記録
KR102239587B1 (ko) 프리젠테이션 슬라이드를 구조화하기 위한 자동화된 시스템
US10223076B1 (en) Generating code based on user interactions with a user interface element in a code editor
CN107430502A (zh) 由帮助信息动态推断用于软件应用的语音命令
US8108789B2 (en) Information processing device, user interface method, and information storage medium
CN107408010A (zh) 由电子设备的用户操纵动态推断软件操作的语音命令
CN106104528A (zh) 用于屏幕上项目选择和消歧的基于模型的方法
EP2972686A1 (en) Dynamically preserving scene elements in augmented reality systems
CN103733197A (zh) 本地和远程媒体项的管理
KR102213548B1 (ko) 전자 콘텐츠 저장소로부터 스크린샷을 자동으로 분리 및 선택하기 위한 기법
CN107071512B (zh) 一种配音方法、装置及系统
CN106295353B (zh) 一种引擎漏洞检测的方法以及检测装置
KR20160125401A (ko) 인라인 및 콘텍스트 인식 쿼리 박스 제공 기법
WO2016065960A1 (en) Graphically building abstract syntax trees
CN110532159A (zh) 数据监听方法、装置、设备及计算机可读存储介质
US20220350626A1 (en) Device navigational maps for connected devices
US20160359932A1 (en) Display device and method of controlling the same
CN110119386A (zh) 数据处理方法、数据处理装置、介质和计算设备
CN108319671A (zh) 一种文件管理方法及移动终端
WO2022194077A1 (zh) 应用程序图标管理方法、装置及电子设备
CN113282268B (zh) 音效配置方法和装置、存储介质及电子设备
WO2022135259A1 (zh) 语音输入方法、装置及电子设备
CN110210614B (zh) 运算方法、装置及相关产品
CN104156227B (zh) 调用底层库的方法及装置
WO2017206406A1 (zh) 一种控制方法及装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110614

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130827

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140212