InputMethod
にはBroadcastListener
というカスタムがあります。リスナーがonReceive()
メソッドのインテントをキャッチすると、私はInputMethod
のonKey
メソッドを呼び出し、ソフトキーボードからキープレスをシミュレートします。 onKeyDown
またはonKeyUp
に電話すると、ハードウェアキーボードがシミュレートされます。だから、これは私が好きではない解決策です。 http://mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.htmlハードウェアキープレスイベントをシミュレートする方法
はキープレスをシミュレートするInstrumentation.sendKeyDownUpSync
を使用することをお勧めしますし、それが完璧に働いている、私もInputMethod
自分自身を実装する必要はありません。
昨日は私がこれを発見しました。私はこの計器が私が理解しているようにテスト目的のために提供されていることを意味します。
私のやり方で使用することをお勧めしますか?
Macaraseは応答してくれてありがとうございますが、何かをテストしたくないという点があります。アプリケーションの最終リリース版で通常の論理部分としてInstrumentationを使用してユーザー入力データを生成したいだけです。これは大丈夫ですか、これはAndroidのどのバージョンでもうまく動作しますか、権限の問題はありますか?そして、はい、Instrumentationを使用するとIMEは必要ありませんが、リリース版(テスト用ではありません)で使用することはOKです。 –
アプリケーションの一部として 'Instrumentation'を使うべきではありません。何をアーカイブしようとしていますか? – Macarse
他のアプリケーションからブロードキャストで送信されたインテントがあります(そのアプリケーションにアクセスできません)。意図の中には、文字のASCIIコードである特別なものがあります。だから私は自分のアプリケーションでそれをキャッチし、その文字を現在のInputMethodに送りたいと思う。私はそれを行うための2つの方法を見つけました。まず、ブロードキャストリスナーのインスタンスを持つ自分のIMを使用します。 BLはIntentをキャッチし、IMのonKeyDownメソッドとonKeyUpメソッドを呼び出します。 2番目の方法では、インテントをキャッチするBLだけを使用し、キー押下をシミュレートするInstrumentation.sendKeyDownUpSync()を呼び出します。 –