Android 12 上调用系统的护眼模式和丽色系统

2023-07-07  本文已影响0人  gale_小米

Android 12 上调用系统的护眼模式和丽色系统

护眼模式,可以直接使用反射的方式调用

    public static final String ColorDisplayManager="android.hardware.display.ColorDisplayManager";

    /**
     * 设置护眼模式
     * @param activated 开关
     */
    public static boolean setColorDisplayManager(boolean activated){
        boolean ac=false;
        GDLog.e("set activated="+activated);
        try {
            @SuppressLint("PrivateApi") Class<?> colorDisplayManager = Class.forName(ColorDisplayManager);
            Object o=colorDisplayManager.newInstance();
            /*GDLog.e("setColorDisplayManager2");
            Method[] methods= colorDisplayManager.getMethods();
            for (Method m:methods) {
                GDLog.e("m:"+m.getName()+"---");
                Class<?>[] classes= m.getParameterTypes();
                for (Class c:classes) {
                    GDLog.e("c:"+c.getName());
                }
            }*/
            //忽略访问权限修饰符,获取方法
            Method setNightDisplayActivated = o.getClass().getDeclaredMethod("setNightDisplayActivated",boolean.class);
            setNightDisplayActivated.setAccessible(true);
            ac= (boolean) setNightDisplayActivated.invoke(o,activated);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ac;
    }

    public static boolean isNightDisplayActivated(){
        boolean activated=false;
        try {
            @SuppressLint("PrivateApi") Class<?> colorDisplayManager = Class.forName(ColorDisplayManager);
            Object o=colorDisplayManager.newInstance();
            //忽略访问权限修饰符,获取方法
            Method setNightDisplayActivated = o.getClass().getDeclaredMethod("isNightDisplayActivated",null);
            setNightDisplayActivated.setAccessible(true);
            activated= (boolean) setNightDisplayActivated.invoke(o);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return activated;
    }

丽色系统,这块代码不在framework 里面,所以不能直接反射获取,调用需要导入softwinner.display.output.jar 包
jar包下载路径
提取码:rg56



private DefaultDisplayOutputManager displayOutputManager=new DefaultDisplayOutputManager();
//丽色系统
displayOutputManager.setDisplayEnhanceMode(0,displayOutputManager.getDisplayEnhanceMode(0)==1?0:1);
//演示模式,只对半屏有效
displayOutputManager.setDisplayEnhanceMode(0,displayOutputManager.getDisplayEnhanceMode(0)==2?0:2);
//取值范围 <integer name="config_HSL_max_range">10</integer>
//                setDisplaySaturation 饱和度
//                setDisplayBright 亮度
//                setDisplayContrast 对比度

private static final int COLOR_TEMPERATURE_SCALE_MAX = 100; // 100 percentage
//                setColorTemperature 色温     
//                getColorTemperature
//黑白模式
displayOutputManager.setBlackWhiteMode(0,displayOutputManager.getBlackWhiteMode(0)?false:true);
//阅读模式
displayOutputManager.setReadingMode(0,displayOutputManager.getReadingMode(0)?false:true);
上一篇下一篇

猜你喜欢

热点阅读