问题一:Android 程序能在后台监听按键么?就像输入法那种监听一样,只要有按键它就能弹出软键盘?
能直接在程序里像BroadcastReceiver这样获得键盘按下的消息并进行处理么?相当于后台键盘记录器
我只找到了android.intent.action.CAMERA_BUTTON 和android.intent.action.MEDIA_BUTTON
问题二: Android能实现模拟按键么?
我搜索到要使用的IWindowManager和ServiceManager好像在1.6以后的版本就没法使用了
不知道大家有些什么办法?或者提供一起其他模拟按键的方法
1.看下输入法的结构机制吧,apidemo中有流程,应该是可以的
2.模拟按键当然可以,发送一个keycode就可以了
Java code
InputConnection ic = getCurrentInputConnection();
if ( null != ic ){
//code种类有很多
ic.sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
ic.sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));
}
好 getCurrentInputConnection()这个函数编译不过
The method getCurrentInputConnection() is undefined for the type keytest
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_RIGHT);
j2se下可以模拟按键,android中没试过可以在framework中调用iwindowmanager编译成jar放到system/framework下,然后用aprocess通过shell调用就可以实现模拟按键了,可以创建测试工程,使用inst然模拟发送按键消息关于如何利用aprocess,你可以开个模拟器,然后提取/system/bin/monkey文件出来用EditPlus等工具打开看看,它就是调用了/system/framework/monkey.jar
在framework调用iwindowmanager就是在Android的全部源码的环境下利用Android.mk文件写程序,这样的好处是可以调用sdk里没有的库包,比如IWindowManager,编译生成的是一个jar文件,你可以给他运行的附加参数,比如autotest -touch 123.0 123.0 来实现点击(123,123),因为Android系统不能直接运行jar文件,所以你需要利用aporcess来调用jar
测试工程可以编译生成apk,和目标程序一起安装到系统里,然后用adb shell am instrument 命令来运行测试工程即可