问题一:Android 程序能在后台监听按键么?就像输入法那种监听一样,只要有按键它就能弹出软键盘?
能直接在程序里像BroadcastReceiver这样获得键盘按下的消息并进行处理么?相当于后台键盘记录器
 我只找到了android.intent.action.CAMERA_BUTTON  和android.intent.action.MEDIA_BUTTON问题二: Android能实现模拟按键么?
我搜索到要使用的IWindowManager和ServiceManager好像在1.6以后的版本就没法使用了
不知道大家有些什么办法?或者提供一起其他模拟按键的方法

解决方案 »

  1.   

    1.看下输入法的结构机制吧,apidemo中有流程,应该是可以的
    2.模拟按键当然可以,发送一个keycode就可以了 InputConnection ic = getCurrentInputConnection();
    if ( null != ic ){
                        //code种类有很多
        ic.sendKeyEvent(
                    new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
                ic.sendKeyEvent(
                    new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));
    }
      

  2.   


    您好 getCurrentInputConnection()这个函数编译不过
    The method getCurrentInputConnection() is undefined for the type keytest
      

  3.   


    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_RIGHT);
    j2se下可以模拟按键,android中没试过
      

  4.   

    可以在framework中调用iwindowmanager编译成jar放到system/framework下,然后用aprocess通过shell调用就可以实现模拟按键了,可以创建测试工程,使用inst然模拟发送按键消息
      

  5.   


    不是很明白 能详细点么~
    如何在framework中调用iwindowmanager编译成jar然后如何实现用aprocess通过shell调用
    测试工程那个能直接调用么~ 能生成release版本的apk安装在手机上么
      

  6.   

    关于如何利用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 命令来运行测试工程即可