解决方案 »

  1.   

    gentevent获取到软件盘的值就可以了,,,
      

  2.   

    重写dispatchTouchEvent(MotionEvent event)和dispatchKeyEvent(KeyEvent event)方法,然后通过event的getActionMasked()获取点击屏幕事件,通过event的getAction()和getKeyCode()获取按键值。
      

  3.   

    getevent要在adb shell下才行吧,有没有不通过PC的方法?
      

  4.   

    如果我要捕获第三方输入法的点击事件行么?
    第三方输入法返回的键值应该是一样的吧。
    我在自己的Activity里重写dispatchTouchEvent(MotionEvent event)和dispatchKeyEvent(KeyEvent event)方法能对其他Activity和输入法有用么?
      

  5.   

    查到一个方法,直接对/dev/input/event*进行操作。
    getevent和sendevent需要/dev/input/event*的权限,可以先ROOT,su后,执行chmod 666 /dev/input/event*。
    但是具体方法还希望有人说明
      

  6.   

    可以在代码里面执行getevent的
      

  7.   

    你是说直接在自己的Activity或Service里面调用getevent方法么?具体怎么做,求解释
      

  8.   

    你是说直接在自己的Activity或Service里面调用getevent方法么?具体怎么做,求解释
    同问
      

  9.   

    代码里面执行linux脚本就可以了
      

  10.   

    你是说Process process = Runtime.getRuntime().exec();么?我执行do_exec("getevent");
    String do_exec(String cmd) {  
            String s = "\n";  
            try {  
                Process p = Runtime.getRuntime().exec(cmd);  
                BufferedReader in = new BufferedReader(  
                                    new InputStreamReader(p.getInputStream()));  
                String line = null;  
                while ((line = in.readLine()) != null) {  
                    s += line + "\n";                 
                }  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            cmd_text.setText(s);  
            return cmd;       
        }  
    之后程序就一直无法响应,怎么回事?
      

  11.   

    http://blog.csdn.net/xinhai657/article/details/8576932
      

  12.   

    你是说Process process = Runtime.getRuntime().exec();么?我执行do_exec("getevent");
    String do_exec(String cmd) {  
            String s = "\n";  
            try {  
                Process p = Runtime.getRuntime().exec(cmd);  
                BufferedReader in = new BufferedReader(  
                                    new InputStreamReader(p.getInputStream()));  
                String line = null;  
                while ((line = in.readLine()) != null) {  
                    s += line + "\n";                 
                }  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            cmd_text.setText(s);  
            return cmd;       
        }  
    之后程序就一直无法响应,怎么回事?程序是不是没有root
      

  13.   

    root了,而且这之前还先运行su获取了权限
      

  14.   

    你是说Process process = Runtime.getRuntime().exec();么?我执行do_exec("getevent");
    String do_exec(String cmd) {  
            String s = "\n";  
            try {  
                Process p = Runtime.getRuntime().exec(cmd);  
                BufferedReader in = new BufferedReader(  
                                    new InputStreamReader(p.getInputStream()));  
                String line = null;  
                while ((line = in.readLine()) != null) {  
                    s += line + "\n";                 
                }  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            cmd_text.setText(s);  
            return cmd;       
        }  
    之后程序就一直无法响应,怎么回事?程序是不是没有root
    logcat里是这个错误
    07-30 09:47:17.949: W/System.err(19087): java.io.IOException: Error running exec(). Command: [sendevent /dev/input/event0 1 158 1, sendevent /dev/input/event0 0 0 0, sendevent /dev/input/event0 1 158 0, sendevent /dev/input/event0 0 0 0] Working Directory: null Environment: null
    07-30 09:47:17.949: W/System.err(19087):  at java.lang.ProcessManager.exec(ProcessManager.java:211)
    07-30 09:47:17.949: W/System.err(19087):  at java.lang.Runtime.exec(Runtime.java:168)
    07-30 09:47:17.949: W/System.err(19087):  at java.lang.Runtime.exec(Runtime.java:123)
    07-30 09:47:17.949: W/System.err(19087):  at com.example.getroot.MainActivity.sendevent(MainActivity.java:54)
    07-30 09:47:17.949: W/System.err(19087):  at java.lang.reflect.Method.invokeNative(Native Method)
    07-30 09:47:17.949: W/System.err(19087):  at java.lang.reflect.Method.invoke(Method.java:511)
    07-30 09:47:17.949: W/System.err(19087):  at android.view.View$1.onClick(View.java:3047)
    07-30 09:47:17.949: W/System.err(19087):  at android.view.View.performClick(View.java:3519)
    07-30 09:47:17.949: W/System.err(19087):  at android.view.View$PerformClick.run(View.java:14140)
    07-30 09:47:17.949: W/System.err(19087):  at android.os.Handler.handleCallback(Handler.java:605)
    07-30 09:47:17.949: W/System.err(19087):  at android.os.Handler.dispatchMessage(Handler.java:92)
    07-30 09:47:17.957: W/System.err(19087):  at android.os.Looper.loop(Looper.java:137)
    07-30 09:47:17.957: W/System.err(19087):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    07-30 09:47:17.957: W/System.err(19087):  at java.lang.reflect.Method.invokeNative(Native Method)
    07-30 09:47:17.957: W/System.err(19087):  at java.lang.reflect.Method.invoke(Method.java:511)
    07-30 09:47:17.957: W/System.err(19087):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    07-30 09:47:17.965: W/System.err(19087):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    07-30 09:47:17.965: W/System.err(19087):  at dalvik.system.NativeStart.main(Native Method)
    07-30 09:47:17.965: W/System.err(19087): Caused by: java.io.IOException: No such file or directory
    07-30 09:47:17.965: W/System.err(19087):  at java.lang.ProcessManager.exec(Native Method)
    07-30 09:47:17.973: W/System.err(19087):  at java.lang.ProcessManager.exec(ProcessManager.java:209)
    07-30 09:47:17.973: W/System.err(19087):  ... 17 more