Android编程设置屏幕亮度的方法

所属分类: 软件编程 / Android 阅读数: 50
收藏 0 赞 0 分享

本文实例讲述了Android编程设置屏幕亮度的方法。分享给大家供大家参考,具体如下:

使用场景

最近在研究AndroidL Settings的代码,写了一个简单的控件来操控屏幕亮度。

其实,调节屏幕亮度的场景应用很广,例如很多视频应用都响应touch事件来进行亮度调节。

屏幕亮度调节模式

首先,需要明确屏幕亮度有两种调节模式:

Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC:值为1,自动调节亮度。
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL:值为0,手动模式。

如果需要实现亮度调节,首先需要设置屏幕亮度调节模式为手动模式。

设置方法如下:

public void setScrennManualMode() {
  ContentResolver contentResolver = getActivity().getContentResolver();
  try {
    int mode = Settings.System.getInt(contentResolver,
        Settings.System.SCREEN_BRIGHTNESS_MODE);
    if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
      Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE,
          Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
    }
  } catch (Settings.SettingNotFoundException e) {
    e.printStackTrace();
  }
}

获取屏幕亮度值

这里需要了解:

1. 屏幕最大亮度为255。
2. 屏幕最低亮度为0。
3. 屏幕亮度值范围必须位于:0~255。

设置屏幕亮度的方法:

private int getScreenBrightness() {
  ContentResolver contentResolver = getActivity().getContentResolver();
  int defVal = 125;
  return Settings.System.getInt(contentResolver,
      Settings.System.SCREEN_BRIGHTNESS, defVal);
}

设置系统屏幕亮度值

在设置系统屏幕亮度前,需要保证AndroidManifest.xml中声明如下权限:

复制代码 代码如下:
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

当屏幕亮度模式为0即手动调节时,可以通过如下代码设置屏幕亮度:

private void saveScreenBrightness() {
  setScrennManualMode();
  ContentResolver contentResolver = getActivity().getContentResolver();
  int value = 255; // 设置亮度值为255
  Settings.System.putInt(mContentResolver,
      Settings.System.SCREEN_BRIGHTNESS, value);
}

设置当前窗口亮度

很多视频应用,在touch事件处理屏幕亮度时,并不是修改的系统亮度值,而是修改当前应用所在窗口的亮度。具体做法就是修改LayoutParams中的screenBrightness属性。参考代码如下:

private void setWindowBrightness(int brightness) {
  Window window = getWindow();
  WindowManager.LayoutParams lp = window.getAttributes();
  lp.screenBrightness = brightness / 255.0f;
  window.setAttributes(lp);
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

更多精彩内容其他人还在看

Android网络编程之获取网络上的Json数据实例

这篇文章主要介绍了Android网络编程之获取网络上的Json数据实例,本文用完整的代码实例讲解了在Android中读取网络中Json数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下
收藏 0 赞 0 分享

Android网络编程之UDP通信模型实例

这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中使用ListView实现漂亮的表格效果

这篇文章主要介绍了Android中使用ListView实现漂亮的表格效果,本文用详细的代码实例创建了一个股票行情表格,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中刷新界面的二种方法

这篇文章主要介绍了Android中刷新界面的二种方法,本文使用Handler、postInvalidate两种方法实现界面刷新,需要的朋友可以参考下
收藏 0 赞 0 分享

Android SDK三种更新失败及其解决方法

这篇文章主要介绍了Android SDK三种更新失败及其解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(一)

Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。随着这种变化,Android app应该取消对传统6项菜单的依赖。取而代之的是提供anction bar来提供基本的用户功能
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(二)

这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(三)

今天继续昨天没有讲完的Menu的学习,主要是Popup Menu的学习,需要的朋友可以参考下
收藏 0 赞 0 分享

Android显示网络图片实例

这篇文章主要介绍了Android显示网络图片的方法,以实例形式展示了Android程序显示网络图片的方法,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多