Android背光亮度調節

2021-07-06 09:17:59 字數 2122 閱讀 3054

1.android系統亮度調節

android系統亮度調節全域性性最高,常見於系統設定中的亮度設定項。android中提供了獲取和設定系統亮度值(「手動模式下的亮度值」)的介面,具體如下:

1

//獲取系統亮度

2 settings.system.getint(getcontentresolver(), settings.system.screen_brightness);

1

//設定系統亮度

2 settings.system.putint(getcontentresolver(), settings.system.screen_brightness,systembrightness);

其中,需要注意的是,返回的亮度值是處於0-255之間的整型數值。

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

與之相對應的,android系統中也提供了獲取和設定「亮度模式」的介面。

1

//獲取系統亮度模式

2 settings.system.getint(getcontentresolver(), settings.system.screen_brightness_mode);

1

//設定系統亮度模式

2 settings.system.putint(getcontentresolver(), settings.system.screen_brightness_mode, systemmode);

可是遺憾的是,android中並未提供處於「自動亮度」模式下的亮度值介面。上面所說的獲取系統亮度值介面實際上都是指「手動亮度」模式下的亮度值。

一般而言,通過手動亮度值以及設定系統亮度模式介面,可以滿足常規的大部分針對android系統亮度設定編碼需求,以完成系統亮度調節。

3.android當前螢幕(window)亮度調節

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

1 window window =activity.getwindow();

2 windowmanager.layoutparams lp =window.getattributes();

3 lp.screenbrightness =brightness;

4 window.setattributes(lp);

其中,需要注意的是此處的brightness是乙個0.0-1.0之間的乙個float型別數值。

預設情況下,當我們直接修改了系統亮度值後,當前window中是可以即時反應出來亮度效果的,這是因為預設情況下,windowmanager.layoutparams的screenbrightness的預設值為windowmanager.layoutparams.brightness_override_none。

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

假設當前window內有乙個seekbar,ui與系統亮度調節ui基本類似,使用者可以滑動此seekbar,使得當前window亮度即時發生變化,且不影響到系統亮度效果。如何實現呢?

此時我們需要啟用windowmanager.layoutparams的screenbrightness引數,使之具有自動的特定亮度值,設定此值後在當前window範圍內,其將覆蓋掉系統亮度設定。

因此,有必要將使用者選擇的亮度值轉換為相應的window亮度值(為與系統亮度值相一致,假設seekbar的最大值為255)。

1

//根據亮度值修改當前window亮度

2public

brightness) else

10window.setattributes(lp);

11 }

其中,brightness形參為使用者選擇的亮度值。

應用調節背光亮度的方法

應用調節亮度常用的方法有如下兩種 一 利用ioctl 在背光驅動的ioctl裡面增加調節背光亮度的ioctl,如下 case ioctl backlight adjust 獲取應用傳遞過來的引數 調節pwm值 case ioctl backlight getlevel 這個主要用來查詢當前背光亮度。...

光亮度方面易混的術語

光強 luminous intensity 發光強度,單位坎德拉 cd 是單位面積的功率流量 通量 光通量 luminous flux 人眼所能感覺到的輻射功率,觀察者從光源感受到的能量,單位流明 lm 是單位時間內某一波段內的輻射能量與該波段的相對視見率的乘積。由於人眼對不同波長的光的視見函式不同...

Arduino實現PWM 調控燈光亮度

arduino 控制器有6 個pwm 介面分別是數字介面3 5 6 9 10 11,前面我們已經做了按鍵控制小燈的實驗,那是數碼訊號控制数字介面的實驗,我們也做過電位計的實驗,這次我們就來完成乙個用電位計控制小燈的實驗。需要的元器件有 電位計模組 1 紅色m5 直插led 1 220 直插電阻 麵包...