zoukankan      html  css  js  c++  java
  • android 代码实现back键功能

    方案一,简单但响应慢:

        doExec("input keyevent 4");
    
        public String doExec(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) {
                e.printStackTrace();
            }
            return cmd;
        }
    

      

    方案二,响应快:

        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    switch (v.getId()) {
                        case R.id.bottom_nav_back:
                            mDownTime = SystemClock.uptimeMillis();
                            sendEvent(KeyEvent.ACTION_DOWN, 0);
                            break;
                    break;
                case MotionEvent.ACTION_UP:
                    switch (v.getId()) {
                        case R.id.bottom_nav_back:
                        case R.id.tv_back_dec:
                            sendEvent(KeyEvent.ACTION_UP, 0);
                            break;
                    break;
    			...
    			
        private void sendEvent(int action, int flags) {
            sendEvent(action, flags, SystemClock.uptimeMillis());
        }
    
        private void sendEvent(int action, int flags, long when) {
            final int repeatCount = (flags & KeyEvent.FLAG_LONG_PRESS) != 0 ? 1 : 0;
            final KeyEvent ev = new KeyEvent(mDownTime, when, action, KeyEvent.KEYCODE_BACK, repeatCount,
                    0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
                    flags | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
                    InputDevice.SOURCE_KEYBOARD);
            InputManager.getInstance().injectInputEvent(ev,
                    InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
        }
    

      

  • 相关阅读:
    功能测试用例大全
    相对最完整的软件测试工具手册
    测试用例的评审
    黑盒测试学习笔记-(深圳文鹏)
    Llinux:ubuntu常用命令(深圳文鹏)
    HDU-4857(拓扑排序)
    HDU-3665(单源最短路)
    HDU-3661(贪心)
    HDU-2059龟兔赛跑(基础方程DP-遍历之前的所有状态)
    HDU-1047(DP-二进制状态压缩)
  • 原文地址:https://www.cnblogs.com/wolflzc/p/10156319.html
Copyright © 2011-2022 走看看