Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android自動調節背光

android自動調節背光

編輯:關於Android編程

這項功能涉及兩個模塊,光傳感器和背光,光傳感器采集周圍環境的光感強度,上報給系統,系統通過PowerManagerService.java中設置背光值   1.powermanagerService 中實現自動調節背光 1.1 enableLightSensorLocked(Boolean enable){          if(enable){                    mSensorManager.registerListener(mLightListener,mLightSensor,xxx); } } 在handleLightSensorValue函數中進行處理。 1.2 mHandler.postDelayed(mAuoBrightnessTask,LIGHT_SENSOR_DELAY);   1.3調用 lightSensorChangedLocked(value,false); 1.4 調用 mScreenBrightnessAnimator.animateTo(lcdValue,value,SCREEN_BRIGHT_BIT,steps*NORMAL_FRAME_TIME_MS);   2配置lcd相關背光值 函數initInThread中獲取config_autoBrightnessLevels中的數組 [html]  If(mUseSoftwareAutoBrightness){       mAutoBrightnessLevels = resources.getIntArray(   com.android.internal.R.array.config_autoBrightnessLevels);   mLcdBackLightValues = resources.getIntArray(   com.android.internal.R.array.config_autoBrightnessLcdBacklightValues);   …   }     注意values可以選擇mLcdBackLightValues作為參數,這樣就將配置表中的值轉化為了系統中使用的值 [html] getAutoBrightnessValue(SensorValue,int [] values){       for(i=0;i<mAutoBrightnessLevels.length;i++)   {       If(SensorValue<mAutoBrightnessLevels[i])           Break;   }   Final int minval = values[0];   Final int maxval = values[mAutoBrightnessLevels.length];      }       相關的數組定義在framework/base/core/res/res/values/config.xml   N個等級對應N+1個背光值,背光值應該滿足0-255,背光系統節點   Sys/class/leds/lcd-backlight/brightness   3.上述分析可知: 作為光傳感器獲取的實際值通過驅動層上傳到hal層,通過hal層poll到framework,為了減少配置文件調節可以在hal層或者kernel進行統一的映射,不會影響到自動調節背光的動畫效果。 這樣的好處就是多個項目時不必每次都去調節配置表。 例如:hal層中readEvents函數 調用 [html]  indextoValue(size_t index) const   {       Static const struct adcToLux{       Size_t adc_value;       Float lux_value;   } adcToLux[] = {       {150,10.0},       {800,160},       {900,225},       {1000,320},       {1400,1280},   };      Return adcToLux[ARRAY_SIZE(adcToLux)-1].lux_value;   }    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved