2011-01-16 21 views
1

InputMethodにはBroadcastListenerというカスタムがあります。リスナーがonReceive()メソッドのインテントをキャッチすると、私はInputMethodonKeyメソッドを呼び出し、ソフトキーボードからキープレスをシミュレートします。 onKeyDownまたはonKeyUpに電話すると、ハードウェアキーボードがシミュレートされます。だから、これは私が好きではない解決策です。 http://mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.htmlハードウェアキープレスイベントをシミュレートする方法

はキープレスをシミュレートするInstrumentation.sendKeyDownUpSyncを使用することをお勧めしますし、それが完璧に働いている、私もInputMethod自分自身を実装する必要はありません。

昨日は私がこれを発見しました。私はこの計器が私が理解しているようにテスト目的のために提供されていることを意味します。

私のやり方で使用することをお勧めしますか?

答えて

0

あなたのアプリケーションをテストするには自分のIMEを使用するのは大変だと思います。

あなたは既にAndroidのInstrumentationでそれを行う方法があります。 Robotiumは、テストしようとしているものに役立つかもしれません。

+0

Macaraseは応答してくれてありがとうございますが、何かをテストしたくないという点があります。アプリケーションの最終リリース版で通常の論理部分としてInstrumentationを使用してユーザー入力データを生成したいだけです。これは大丈夫ですか、これはAndroidのどのバージョンでもうまく動作しますか、権限の問題はありますか?そして、はい、Instrumentationを使用するとIMEは必要ありませんが、リリース版(テスト用ではありません)で使用することはOKです。 –

+0

アプリケーションの一部として 'Instrumentation'を使うべきではありません。何をアーカイブしようとしていますか? – Macarse

+0

他のアプリケーションからブロードキャストで送信されたインテントがあります(そのアプリケーションにアクセスできません)。意図の中には、文字のASCIIコードである特別なものがあります。だから私は自分のアプリケーションでそれをキャッチし、その文字を現在のInputMethodに送りたいと思う。私はそれを行うための2つの方法を見つけました。まず、ブロードキャストリスナーのインスタンスを持つ自分のIMを使用します。 BLはIntentをキャッチし、IMのonKeyDownメソッドとonKeyUpメソッドを呼び出します。 2番目の方法では、インテントをキャッチするBLだけを使用し、キー押下をシミュレートするInstrumentation.sendKeyDownUpSync()を呼び出します。 –

関連する問題