1. 程式人生 > >Android亮度調節

Android亮度調節

Android亮度調節分為三個層次,分別是:Android系統亮度調節、Android App亮度調節和Android當前螢幕(Window)亮度調節

Android系統亮度調節

Android系統亮度調節全域性性最高,常見於系統設定中的亮度設定項。Android中提供了獲取和設定系統亮度值(“手動模式下的亮度值”)的介面
通過這些方式修改後的亮度,是系統的亮度變化了,無論再開啟什麼應用都是這個亮度

*Android系統的亮度值取值範圍在0~255,資料型別是int型

獲取系統亮度

Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);

設定系統亮度

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS,125);

設定系統亮度,需要增加修改系統設定的許可權

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

如果需要實現亮度調節,首先需要設定螢幕亮度調節模式為手動模式

Android 2.1以後的系統中,系統亮度調節中新增了“自動亮度”選項
“自動亮度”是依據外界光源來自動的改變系統亮度,目前大部分手機中對“自動亮度”還可以進行小幅度的調節其值
與自動亮度相對應的是“手動亮度”,當處於“手動亮度”下,設定拖動亮度進度條會大幅度的改變Android系統亮度
“手動亮度”和“自動亮度”分別稱之為Android系統的“亮度模式”
在這裡插入圖片描述

與之相對應的,Android系統中也提供了獲取和設定“亮度模式”的介面

需要明確螢幕亮度有兩種調節模式

  1. Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC:值為1,自動調節亮度
  2. Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL:值為0,手動模式

獲取系統亮度模式

Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);

設定系統亮度模式

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

Android App亮度調節

與系統亮度不同的是,Android中並未直接提供針對於App層面的亮度調節方式。因此,對於需要進行App的亮度調節,可以通過系統亮度調節或當前螢幕的亮度調節方式間接來實現

Android當前螢幕(Window)亮度調節

Android針對當前螢幕(Window)提供了設定亮度的介面,常見寫法如下

Window window = this.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.screenBrightness = brightness;
window.setAttributes(lp);

需要注意的是此處的brightness是一個0.0-1.0之間的一個float型別數值

預設情況下,當我們直接修改了系統亮度值後,當前Window中是可以即時反應出來亮度效果的,這是因為預設情況下,WindowManager.LayoutParams的screenBrightness的預設值為WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE

即表示Window沒有自己的亮度引數,將依隨系統亮度效果的變化而變化。這也就是我們最常見的:當調整系統亮度後,所有Window都即時反應出系統亮度設定效果

參考文章

https://www.cnblogs.com/lwbqqyumidi/p/4127012.html