您的位置:首页 > 移动开发 > Android开发

Android 设置屏幕亮度

2014-09-28 14:21 232 查看




虽然感觉知识点已经学得足够多,但一到工作中总会遇到许多不可预期的问题。比如我做的条码扫描,其实不是我写条码扫描的程序,而是我调用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里取消了呢,也不给个替代类或方法,郁闷!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: