Android修改系統亮度的方案

山有木xi發表於2020-12-20

在Android應用中有很多情況下,都需要去設定螢幕的亮度,比如說小說APP就需要設定亮度,因為夜晚小看小說高亮度情況下會比較刺眼

在修改前,我們需要獲得螢幕亮度

private int getsystemlight(Context context) {
ContentResolver contentResolver = context.getContentResolver();
return Settings.System.getInt(contentResolver,
Settings.System.SCREEN_BRIGHTNESS, 255);//系統亮度為0~255
}
  • 第一種方式:修改APP介面螢幕亮度,不會影響其他APP

先初始化window,用window.getAttributes()初始化WindowManager.LayoutParams,然後呼叫screenBrightness來設定APP螢幕內的亮度,但是僅限於APP內

private void setApplight(int lightvalue) {
Window window = getWindow();
WindowManager.LayoutParams layoutparams = window.getAttributes();
layoutparams.screenBrightness = lightvalue/ 255.0f;
window.setAttributes(layoutparams );
}
  • 第二種方式:修改系統Settings 中螢幕亮度,影響所有APP

先申請修改Settings的許可權<uses-permission * android:name="android.permission.WRITE_SETTINGS"/>

然後要使用者允許App使用相關操作,用startActivityForResult申請Settings.ACTION_MANAGE_WRITE_SETTINGS,然後在onActivityResult中判斷使用者是否允許,允許則執行相關操作

ContentResolver contentResolver = context.getContentResolver();
        Settings.System.putInt(contentResolver,
                                    Settings.System.SCREEN_BRIGHTNESS, birghtessValue);

在實際應用中,第一種方案適用於小說類APP,因為只需要對自己應用內負責,第二種方案適用於全域性APP,即對於全域性的亮度有需求的APP

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2743787/,如需轉載,請註明出處,否則將追究法律責任。

相關文章