since.2006  

android源码中是调用IHardwareService来进行屏幕亮度调整的,但在最新的1.0r2,1.0r1 SDK中却找不到这个类。

这时又要翻出0.9的SDK了,在0.9 SDK中android.os包中有相关类。只要将这些相关类添加到项目类路径中,我们也可以用IHardwareService来调整屏幕亮度了。以下代码G1下测试通过。

/**
 * 取得当前用户自定义的屏幕亮度
 */
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);
  } catch (RemoteException e) {
   e.printStackTrace();
  }
 }
}

注意brightness的值为0 - 255,0最暗,255最亮。

前天发的那个android 手电筒小程序 ExFlashlight的核心代码就在这里啦,是不是很简单。呵呵

附件中给出一个国外网友整理过的IHardwareService包,只要将它添加到类路径就可以直接使用上面代码了。

------------------------------------- 更新 ----------------------------------------

1.5SDK中,可以使用更简单的方法实现:

 private void brightnessMax() {
  WindowManager.LayoutParams lp = getWindow().getAttributes();
  lp.screenBrightness = 1.0f;
  getWindow().setAttributes(lp);
 }

Posted by hee at 10:01 AM | Permalink | 评论(4) | Android

3050 天 18 小时前
沙发 liao 说:

G1在电脑上总是显示为USB存储,即时在手机上设置为USB Debuging,也会现实成一个不能读的盘符。

导致ADB永远连不上,为此我把手机回了一次出厂状态,还是不行,真的没辙了

3047 天 21 小时前
板凳 hex 说:

有没有安装r2包下的usb_driver?

2826 天 18 小时前
地板 猴婆 说:

在 1.5 的 sdk 里面也没这个方法。闷····

2826 天 17 小时前
4楼 hee 说:

1.5里,已经有更简单的方法实现改变屏幕亮度了。

直接调用下面方法即可:
[code lang="java"]
private void brightnessMax() {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 1.0f;
getWindow().setAttributes(lp);
}
[/code]

请输入名称
请输入邮件地址

 

    请输入邮件地址