• [置顶] Android4.0中修改挂断键(ENDCALL)的默认行为


    文件:

    frameworks/base/core/java/android/provider/Setings.java


            public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";

            /**
             * END_BUTTON_BEHAVIOR value for "go home".
             * @hide
             */
            public static final int END_BUTTON_BEHAVIOR_HOME = 0x1;

            /**
             * END_BUTTON_BEHAVIOR value for "go to sleep".
             * @hide
             */
            public static final int END_BUTTON_BEHAVIOR_SLEEP = 0x2;

            /**
             * END_BUTTON_BEHAVIOR default value.
             * @hide
             */
            public static final int END_BUTTON_BEHAVIOR_DEFAULT = END_BUTTON_BEHAVIOR_SLEEP;


    另:关于getInt(ContentResolver cr, String name, int def)接口参数的问题,最后一个参数def是默认值,在没有读取到数据库中的设置数据时使用,在文件:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中有语句:mEndcallBehavior = Settings.System.getInt(resolver,
                        Settings.System.END_BUTTON_BEHAVIOR,
                        Settings.System.END_BUTTON_BEHAVIOR_DEFAULT);用来获取挂断键的默认行为以供在下面挂断键消息来了之后做处理:

    case KeyEvent.KEYCODE_ENDCALL: {
                    result &= ~ACTION_PASS_TO_USER;
                    if (down) {
                        ITelephony telephonyService = getTelephonyService();
                        boolean hungUp = false;
                        if (telephonyService != null) {
                            try {
                                hungUp = telephonyService.endCall();
                            } catch (RemoteException ex) {
                                Log.w(TAG, "ITelephony threw RemoteException", ex);
                            }
                        }
                        interceptPowerKeyDown(!isScreenOn || hungUp);
                    } else {
                        if (interceptPowerKeyUp(canceled)) {
                            if ((mEndcallBehavior
                                    & Settings.System.END_BUTTON_BEHAVIOR_HOME) != 0) {
                                if (goHome()) {
                                    break;
                                }
                            }
                            if ((mEndcallBehavior
                                    & Settings.System.END_BUTTON_BEHAVIOR_SLEEP) != 0) {
                                result = (result & ~ACTION_POKE_USER_ACTIVITY) | ACTION_GO_TO_SLEEP;
                            }
                        }
                    }
                    break;


  • 相关阅读:
    读码的逻辑设计
    简单拼接图像的tile_images和tile_images_offset算子
    select_shape_proto算子的几种特征模式含义解析
    Photoshop中的高斯模糊、高反差保留和Halcon中的rft频域分析研究
    sort_contours_xld算子的几种排序方式研究
    Region在connection前后进行“交并差”等操作的异同
    Halcon中xld的常见特征的含义总结
    Halcon选择一堆region中面积第N大的region的算法实现
    从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同
    Halcon阈值化算子dual_threshold和var_threshold的理解
  • 原文地址:https://www.cnblogs.com/james1207/p/3297213.html
Copyright © 2020-2023  润新知