Android P 在设置-显示中,增加开关,命名为“阅读模式”,默认关闭。 开启后,屏幕为灰度模式

在这里插入图片描述
1.vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values/strings.xml

<string name="read_model_title">Read model</string>

2.vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/display_settings.xml

+    <SwitchPreference
+        android:key="read_model"
+        android:title="@string/read_model_title"/>

3.vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/DisplaySettings.java

 import com.android.settings.display.ShowOperatorNamePreferenceController;
+import com.android.settings.display.ReadModelPreferenceController;
 import com.android.settings.display.TapToWakePreferenceController;

@@ -98,6 +99,7 @@ public class DisplaySettings extends DashboardFragment { 
         controllers.add(new ShowOperatorNamePreferenceController(context));
+        controllers.add(new ReadModelPreferenceController(context));

4.添加vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/display/ReadModelPreferenceController.java

/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package com.android.settings.display;

import android.content.Context;
import android.provider.Settings;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;

import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;

public class ReadModelPreferenceController extends AbstractPreferenceController
        implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener {

    private static final String KEY_READ_MODEL_NAME = "read_model";

    public ReadModelPreferenceController(Context context) {
        super(context);
    }

    @Override
    public boolean isAvailable() {
        return true;
    }

    @Override
    public String getPreferenceKey() {
        return KEY_READ_MODEL_NAME;
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        boolean value = (Boolean) newValue;
        Settings.Secure.putInt(mContext.getContentResolver(),
                KEY_READ_MODEL_NAME, value ? 0 : 1);
        if (!value) {
            Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
                    0);
        } else {
            Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
                    1);
            Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, 0);
        }
        return true;
    }

    @Override
    public void updateState(Preference preference) {
        int value = Settings.Secure.getInt(mContext.getContentResolver(),
                KEY_READ_MODEL_NAME, 1);
        ((SwitchPreference) preference).setChecked(value != 1);
    }
}

参考源码

vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/development/SimulateColorSpacePreferenceController.java

参考google code:
打开开关调用writeSimulateColorSpace(0);
关闭开关调用writeSimulateColorSpace(-1);

96      private void writeSimulateColorSpace(Object value) {
97          final ContentResolver cr = mContext.getContentResolver();
98          final int newMode = Integer.parseInt(value.toString());
99          if (newMode < 0) {
100              Settings.Secure.putInt(cr, Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
101                      SETTING_VALUE_OFF);
102          } else {
103              Settings.Secure.putInt(cr, Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
104                      SETTING_VALUE_ON);
105              Settings.Secure.putInt(cr, Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, newMode);
106          }
107      }
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最乱纷飞的code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值