修改屏幕亮度

QuibblerQuibbler 2024-03-10 约 5 分钟 1637 次阅读

修改屏幕亮度

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

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

修改Window中screenBrightness的值(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);

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

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w