设为首页 加入收藏

TOP

Android LCD和键盘 背光亮度设置(一)
2014-11-24 07:48:48 来源: 作者: 【 】 浏览:0
Tags:Android LCD 键盘 光亮度 设置

亮度设置
应用设计
1.1 设置进度条范围
背光设置是在:设置->声音和显示->亮度,通过进度条来设置的。


private static final int MINIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_DIM + 10;


private static final int MAXIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_ON;


mSeekBar.setMax(MAXIMUM_BACKLIGHT - MINIMUM_BACKLIGHT);


设置进度条的范围,BRIGHTNESS_DIM = 20 BRIGHTNESS_ON=255,它们的定义在:


frameworks/base/core/java/android/os/Power.java


1.2 设置亮度
文件:packages/apps/Settings/src/com/android/settings/BrightnessPreference.java


public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {


setMode(isChecked Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC


: Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);


if (!isChecked) {


setBrightness(mSeekBar.getProgress() + MINIMUM_BACKLIGHT);


}


}


private void setBrightness(int brightness) {


try {


IPowerManager power = IPowerManager.Stub.asInterface(


ServiceManager.getService("power"));


if (power != null) {


power.setBacklightBrightness(brightness);


}


} catch (RemoteException doe) {



}


}


由以上代码可知,brightness的范围是:20~255;代码通过服务管理器(ServiceManager)获得power服务,然后通过power服务设置亮度。


power.setBacklightBrightness的定义在:


rameworks/base/core/java/android/os/IPowerManager.aidl.java


frameworks/base/core/java/android/os/PowerManager.java


2, Power服务
文件:frameworks/base/core/java/android/os/Power.java


/**


* Brightness value for dim backlight


*/


public static final int BRIGHTNESS_DIM = 20;


/**


* Brightness value for fully on


*/


public static final int BRIGHTNESS_ON = 255;


文件:frameworks/base/core/java/android/os/PowerManager.java


/**


* sets the brightness of the backlights (screen, keyboard, button).


*


* @param brightness value from 0 to 255


*


* {@hide}


*/


public void setBacklightBrightness(int brightness)


{


try {


mService.setBacklightBrightness(brightness);


} catch (RemoteException e) {


}


}


电源管理器(powermager)将brightness转给电源服务,该服务位置如下:


文件:frameworks/base/services/java/com/android/server/PowerManagerService.java


public void setBacklightBrightness(int brightness) {


mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);


// Don't let applications turn the screen all the way off


brightness = Math.max(brightness, Power.BRIGHTNESS_DIM);


mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BACKLIGHT, brightness,


HardwareService.BRIGHTNESS_MODE_USER);


mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_KEYBOARD,


(mKeyboardVisible brightness : 0), HardwareService.BRIGHTNESS_MODE_USER);


mHardware.setLightBrightness_UNCHECKED(HardwareService.LIGHT_ID_BUTTONS, brightness,


HardwareService.BRIGHTNESS_MODE_USER);


long identity = Binder.clearCallingIdentity();


try {


mBatteryStats.noteScreenBrightness(brightness);


} catch (RemoteException e) {


Log.w(TAG, "RemoteException calling noteScreenBrightness on BatteryStatsService", e);


} finally {


Binder.restoreCallingIdentity(identity);


}


/

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ARM GCC工具链有关的使用总结 下一篇Linux 0.11启动时间的计算函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·JAVA现在的就业环境 (2025-12-26 01:19:24)
·最好的java反编译工 (2025-12-26 01:19:21)
·预测一下2025年Java (2025-12-26 01:19:19)
·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)