Android 12 上調(diào)用系統(tǒng)的護(hù)眼模式和麗色系統(tǒng)
護(hù)眼模式,可以直接使用反射的方式調(diào)用
public static final String ColorDisplayManager="android.hardware.display.ColorDisplayManager";
/**
* 設(shè)置護(hù)眼模式
* @param activated 開關(guān)
*/
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());
}
}*/
//忽略訪問權(quán)限修飾符,獲取方法
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();
//忽略訪問權(quán)限修飾符,獲取方法
Method setNightDisplayActivated = o.getClass().getDeclaredMethod("isNightDisplayActivated",null);
setNightDisplayActivated.setAccessible(true);
activated= (boolean) setNightDisplayActivated.invoke(o);
} catch (Exception e) {
e.printStackTrace();
}
return activated;
}
麗色系統(tǒng)照弥,這塊代碼不在framework 里面弥虐,所以不能直接反射獲取消恍,調(diào)用需要導(dǎo)入softwinner.display.output.jar 包
jar包下載路徑
提取碼:rg56
private DefaultDisplayOutputManager displayOutputManager=new DefaultDisplayOutputManager();
//麗色系統(tǒng)
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);