修改屏幕亮度

Quibbler 9月前 485

修改屏幕亮度


        使用付款码的时候会发现,打开付款码页面手机屏幕亮度会变为最亮,方便商户识别付款码。今天来了解一下如何改变手机的屏幕亮度。


1、改变当前窗口的屏幕亮度

        修改WindowscreenBrightness的值(0.0~1.0)亮度只保存在当前的Window,退出当前的窗口就会恢复原样。是主流应用采用的方法,不会影响其它应用的显示亮度。

    /**
     * This can be used to override the user's preferred brightness of
     * the screen.  A value of less than 0, the default, means to use the
     * preferred screen brightness.  0 to 1 adjusts the brightness from
     * dark to full bright.
     */
    public float screenBrightness = BRIGHTNESS_OVERRIDE_NONE;

        方法比较简单使用,简单几行即可实现改变窗口的亮度:

    //拿到Window的属性
    val lp = window.attributes
    
    //设置亮度属性值 0~1 之间
    lp.screenBrightness = 0.5f
    
    //更新Window属性值
    window.attributes = lp

        应在界面推出后恢复之前的显示亮度,正如付款码界面退出后,应用的显示亮度恢复成之前原来的亮度。默认亮度置为BRIGHTNESS_OVERRIDE_NONE 即可。

	/**
	 * Default value for {@link #screenBrightness} and {@link #buttonBrightness}
	 * indicating that the brightness value is not overridden for this window
	 * and normal brightness policy should be used.
	 */
	public static final float BRIGHTNESS_OVERRIDE_NONE = -1.0f;



2、改变系统中的亮度属性

        此种方法修改屏幕亮度是全局的,需要相应的权限,因为是直接对系统内容进行操作。

    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />

        借助canWrite(Context context)方法检查有无修改系统设置的权限

    if (!Settings.System.canWrite(this)) {
	//没有读写系统设置的权限,申请
    }

        如果没有,就需要跳转到设置界面,让用户选择授权允许应用修改系统设置

    val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
    //转到系统设置的activity,需用户手动打开app的修改系统设置内容开关
    startActivity(intent)

        修改系统的亮度,通过写Settings数据库完成:

    //修改系统的亮度 0~255之间
    Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, screenBrightValue);

        SCREEN_BRIGHTNESS 亮度值范围为(0~255)

    /**
     * The screen backlight brightness between 0 and 255.
     */
    @Readable
    public static final String SCREEN_BRIGHTNESS = "screen_brightness";

        相应的,还可以读取系统亮度的设置:

    val screenBright = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS);

         这会修改整个系统的亮度,对其它应用生效。不建议普通应用修改,这种方法是不推荐的,了解即可。



不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com