私は現在、方向パッド (上、下、左、右) をシミュレートするアプリに取り組んでいます。問題は、これらのキーの押下を他のアプリケーションに送信する方法がわからないことです。
現在、インストルメンテーションを使用しており、アプリのアクティビティで完全に機能します。矢印キーの左のコードのスニペットを次に示します。
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_LEFT);
}
}).start();
この実装の問題は、Android のセキュリティ機能により、キーの押下を他のアプリケーションに送信できないことです。キープレスを挿入するさまざまな方法を検索した後、この記事に出会いました。ただし、サンプルコードを試してみると、うまくいかないようです。いろいろ調べてみると、Android にはキーボード用の入力デバイスがないようです。さまざまな入力デバイスをスキャンすると、方向センサーなどの情報が得られます。これは、私の電話 (T-959 Galaxy S) のすべての入力デバイスの写真です。
ご覧のとおり、これらのデバイスはどれもキーボードではありません。これは、私の電話に物理的なキーボードがないためだと思います。(cypress は静電容量式キー、aries は音量ボタン、mxt224 はタッチスクリーン コントローラー)
もう少し調査した結果、Android のアクセシビリティ API にはイベントを注入する機能が制限されていることがわかりましたが、それらはビュー フォーカスの切り替えなど ( AccessibilityNodeInfo ) などの非常に基本的なものにすぎません。ただし、矢印キーの押下をサポートするように拡張できる可能性があると感じています。
そのため、現在、どこに行こうか非常に迷っています。誰かがこれまでにこのようなことをしたことがありますか? Android のセキュリティ機能により、矢印キー (他には何もない) の単純な挿入は非常にイライラするようです。すべての提案を歓迎します。
編集:私はあまり明確ではないかもしれませんが、ルート化された電話のみのためにこれを構築しても問題ありません。唯一の要件は、otg を介して外部キーボードに接続したり、adb を介してコンピューターに接続したりせずに、このアプリを電話でスタンドアロンで実行する必要があることです。