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型)。