Android设置屏幕亮度的两种方式

来源:互联网 发布:网络推广软件代理 编辑:程序博客网 时间:2024/06/11 07:33

Android设置屏幕亮度的两种方式

标签: android界面
1793人阅读 评论(0)收藏举报
本文章已收录于:
分类:
作者同类文章X
    最近项目需要设置Android设备的亮度,本来以为很简单的功能,结果搞了好久才搞定,Android在这里埋了一个坑。下面具体说下:Android系统的亮度值是0~255,数据类型为int型。设置屏幕亮度有两种方式,一种是通过WindowManager去设置当前界面的亮度——注意,是当前界面,不是系统的亮度。这种方式代码如下
    private void setLight(Activity context, int brightness) {        WindowManager.LayoutParams lp = context.getWindow().getAttributes();        lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);        context.getWindow().setAttributes(lp);}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
    需要注意其中的context的类型是Activity,不能是Context。这种方式的特点,是**只在当前设置的界面生效**,离开此界面后,屏幕亮度受亮度自动调节的开关控制。换句话说,用这种方式设置当前界面的亮度时,会使亮度自动调节失效。只有离开此界面,亮度自动调节继续生效。这种方式适用某些特殊的,需要高亮显示界面。第二种方式时通过修改系统数据库来设置亮度。代码如下:
        public void saveBrightness(Activity activity, int brightness) {        Uri uri = Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);        Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);        activity.getContentResolver().notifyChange(uri, null);    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
    这种方式的特点是可以修改系统亮度,即使退出当前界面,设置的亮度值依然生效。这种方式设置的亮度值受亮度自动调节开关的影响。
    即开关关闭时,此值生效;开关关闭时,此值其实并没有什么卵用。需要注意的时,设置时需要向系统数据库写入数据,因此需要相应的权限才行。这两种方式各有各的作用与使用场景,使用的时候需要千万注意,不要混淆。功能虽小,坑却不小,特作文以记之。
    补充
    /** * android 调节屏幕亮度 * <p> * <uses-permission android:name="android.permission.WRITE_SETTINGS"/> * * @param level * @param context */public void setBrightness(int level, Activity context) {    ContentResolver contentResolver = context.getContentResolver();    Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, level);    Window window = context.getWindow();    WindowManager.LayoutParams attributes = window.getAttributes();    float flevel = level;    attributes.screenBrightness = flevel / 255;    context.getWindow().setAttributes(attributes);}

    0
    0
     
     

    我的同类文章

    http://blog.csdn.net
    • 利用webview处理portal认证的wifi2016-06-21
      0 0