Shellを使ってADBコマンドを呼び出して画面をクリックします.
2653 ワード
1.背景
一番上の人は最近いくつかのものを捕まえる必要があります.(具体的には詳しくは言えません.)そして必要な一番重要な点は他のAPPの指定位置をクリックすることに帰結します.インターネットでAndroidボタンのシミュレーションを検索します.多くの方法を使ってもよくないです.最後にADBを使ってデバッグする方案をロックして、携帯にボタンイベントを送ります.ちょうど前にRoot権限の下で、JavaでAndroidの下のLinux Shellを呼び出して、pm命令を実行して、Shellを使ってADB命令を呼び出します.Javaを使って
転載先:https://www.cnblogs.com/yasin27878/p/6480184.html
一番上の人は最近いくつかのものを捕まえる必要があります.(具体的には詳しくは言えません.)そして必要な一番重要な点は他のAPPの指定位置をクリックすることに帰結します.インターネットでAndroidボタンのシミュレーションを検索します.多くの方法を使ってもよくないです.最後にADBを使ってデバッグする方案をロックして、携帯にボタンイベントを送ります.ちょうど前にRoot権限の下で、JavaでAndroidの下のLinux Shellを呼び出して、pm命令を実行して、Shellを使ってADB命令を呼び出します.Javaを使って
Runtime.getRuntime().exec("su").getOutputStream()
を実行して、Root権限を持つProcessの出力対象を取得しました.文字列を書き込むと、Root権限がShellによって実行されます.ADBシミュレーションボタンの命令は、「input kevent Cokeybond Cokede CokeyCoked」です.キーコードはキーのキーで、例えばKeyEvent.KEY CODE_VOLUME.UPはボリュームアップを表します.タッチパネルやマウスイベントは、対応するADBコマンドを呼び出すだけでいいです.しかし、反応速度が非常に遅く、特に複数のボタンを連続的にアナログすると、フリーズするという問題があります.ボタンの精霊はかなり流暢に運行しています.キーの精霊はどうやって実現されるのか気になります.そしてついに原因を見つけました.アナログボタンは毎回Runtime.getRuntime().exec(ス)を呼び出すべきではありません.このコードを呼び出すたびにRuntimeのインスタンスを取得し、実行します.最初に一回だけ実行してOutputStreamのインスタンスを取得してから、各Shellコマンドを実行して、その中に該当する文字列を書き込むだけで速くなります.以下に利用可能なコードを貼り付けます.要求されたデバイスは、他の特別な権限や署名は必要ありません.ADB命令を使っていますので、互換性もあまり問題ありません.初めてプログラムを実行する場合は、Root権限を要求します./**
* root Linux Shell
*
*/
public class RootShell {
private OutputStream os;
/**
* shell
*
* @param cmd
*
*/
public final void exec(String cmd) {
try {
if (os == null) {
os = Runtime.getRuntime().exec("su").getOutputStream();
}
os.write(cmd.getBytes());
os.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
*
* @param keyCode
*
*/
public final void simulateKey(int keyCode) {
exec("input keyevent " + keyCode + "
");
}
}
その他の参考ブログアドレス1住所2転載先:https://www.cnblogs.com/yasin27878/p/6480184.html