Android应用程序模拟手机按键(2)

Thread t = new Thread() {
    public void run() {
        Looper.prepare();
        handler = new Handler() {
          public void handleMessage(Message msg) {
              Instrumentation inst = new Instrumentation();
              //inst.sendCharacterSync(msg.what);
              inst.sendKeyDownUpSync(msg.what);
          }
        };
        Looper.loop();
    }
};
t.start();

注意上述代码中的注释部分,实践证明两种方法(sendCharacterSync(int keycode),sendKeyDownUpSync(int keycode))都可以达到预期的效果。

  c、线程开启了,就差发送带按键值的消息了,在执行代码块中添加以下代码即可,

Message msg = new Message();
//msg.what = KeyEvent.KEYCODE_BACK;
String s = key_value.getText().toString();
if(!("".equals(s)) && s.matches("^[0-9]*$")){
  msg.what = Integer.parseInt(s);
  handler.sendMessage(msg);
}
else{
  Toast.makeText(getApplicationContext(),"please input a right keycde",Toast.LENGTH_SHORT).show();
}

  这里键值是附带在消息对象的what成员身上的,实现方法很多种,这里不一一给出了。

  可以看到,代码中注释部分是将键值固定了:

    msg.what = KeyEvent.KEYCODE_BACK;

  这样做不管是调试,还是以后运行应用程序来模拟按键,都不太实用,每次都要重新设定并运行程序。

  所以,本程序采用后面一种方式:

    在主界面上多定义一个编辑框组件key_value,模拟之前输入想要的键值即可(需要将键值由输入的String型转为int型)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1f820ca6c0c8f5aec21cde55489a0964.html