私のデバイスはルートになっています。私はadb経由でイベントを取得しています。しかし、アンドロイドアプリケーションのイベントの同じ連続ストリームを取得する方法を知っているわけではありません。以下のコードは、スーパーユーザの権限を求めるプロンプトを表示しますが、dntは何かを取得します。アンドロイドで/ dev/input/eventXを読むには?これはJNIを使用してのみ可能ですか、またはJavaのみを使用できますか?
Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("chmod a=rw /dev/input/event2" + "\n");
os.flush();
os.writeBytes("exit\n");
os.flush();
process.getOutputStream().
final BufferedReader reader = new BufferedReader(newInputStreamReader(process.getInputStream()));
int read;
final char[] buffer = new char[4096];
while ((read = reader.read(buffer)) > 0) {
stringBuilder.append(buffer, 0, read);
tv.setText(stringBuilder.toString());
}
reader.close();
// Waits for the command to finish.
process.waitFor();
}
コマンドを実行するにはroot権限が必要です。 - chmod a = rw/dev/input/event2 chmodの代わりに。私のデバイスのタッチスクリーンイベントである/ dev/input/event2の下の入力イベントを読むことができるように、このコマンドはルートとして実行されることを期待してrootアクセス権を持つプロセスの出力ストリームにこのコマンドを書いています。私が間違っているところを教えてください。そして、javaコードを通して/ dev/input/event2を読み込めますか? –
@HimanshuGangwar:コマンドを 'su'にパイプするのではなく、' su -c 'chmod a = rw/dev/input/event2''を使用してください。とにかく間違っているのですが、入力ではなく出力に書きます。 –