Android 设置屏幕亮度

来源:互联网 发布:dendi知乎 编辑:程序博客网 时间:2024/05/22 01:51



      虽然感觉知识点已经学得足够多,但一到工作中总会遇到许多不可预期的问题。比如我做的条码扫描,其实不是我写条码扫描的程序,而是我调用zXing(有人写的BarcodeScanner的扫描一维码二维码的的安装包)的包就好了,可结果乐Phone愣是不支持,程序安装上调不起来,说是不支持自动对焦的原故,后来申请了新版乐Phone,五百万像素支持自动对焦功能和微距,程序调起来,却扫描不出东西来,苍天啊,看来跟联想深度定制了SDK有关系了,可能改变了某些接口什么的,这问题还有待确认啊。下面这个设置屏幕亮度的问题也还没有解决,放在此,希望各位大侠们帮帮忙,给个解决建议:

《拉登编程》设置屏幕亮度的方法
拉登编程,亮度, 屏幕, 设置

android通过IHardwareService来驱动硬件更改屏幕亮度。但是在1.0r2,1.0r1 SDK中却找不到这个类了(叹息一声:android的版本管理不敢恭维呀)而今我的G1sdk版本升级到了1.5。就更不用说了,总是报异常:IHardwareService.setScreenBacklight(int brightness) not found。

老版本的可以用一下方法来获取和更改屏幕亮度


/**
   * 获取当前亮度值
   * @return
   */
private
int
getOldBrightness()
{
int
brightness;
try
{
brightness =Settings.System.getInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS);
}
catch
(SettingNotFoundException
snfe)
{
brightness = 255;
}
return
brightness;
}
/**
   * 设置屏幕亮度
   *  */
private
void
setBrightness(int
brightness)
{
IHardwareService
hardware
                =IHardwareService.Stub.asInterface(ServiceManager.getService"hardware"));
if
(hardware != null)
{
try
{
hardware.setScreenBacklight(brightness); //新的sdk下 这句话总是报错
}
catch
(RemoteException
e)
{
e.printStackTrace();
}
}

#######SDK1.5 以上的方法###########


WindowManager.LayoutParams
lp = getWindow().getAttributes();
lp.screenBrightness = 1.0f;
getWindow().setAttributes(lp);

可以写一个方法:


public
void
setBrightness(
int
brightness
)
{
WindowManager.LayoutParams
lp = getWindow().getAttributes();
lp.screenBrightness = brightness / 255.0f; //注意这个用法,下面会做分析
getWindow().setAttributes(lp);
}

注意:screenBrightness等于0的时候表示最暗(屏幕关闭),等于1的时候表示最亮。 所以不能用一个简单的int型数据(1 – 255 )来操作了。可以理解成用一个0-1之间的float型来控制。所以除以一个255.这样直观!



粘的别人空间的资料,下面这个方法我也试了,好像没什么效果啊,不报错,但也么明显效果。

关于这个设置屏幕亮度的问题着实让我头疼,倒腾了好久,也么什么成果,唉,怎么就把android.os.IHardwarService这个接口从SDK里取消了呢,也不给个替代类或方法,郁闷!

0 0
原创粉丝点击