当前位置:首页 > 经验 >

win10显示器亮度怎么调(台式机win10为什么亮度调不了)

来源:原点资讯(m.360kss.com)时间:2022-10-27 12:16:20作者:YD166手机阅读>>

效果

win10显示器亮度怎么调,台式机win10为什么亮度调不了(1)

修改系统屏幕亮度这种操作还是挺常见的,一般在多媒体开发中都多少会涉及到。

emmm 效果图好像看不出来变化。。不过不是很重要。。

操作拆解

上图中可以看到,分别有加减按钮和seekbar来控制亮度。

后面会涉及到相关的事件。

获取系统屏幕亮度

/** * 获取系统屏幕亮度(0-255) */ private fun getScreenBrightness(): Int { try { return Settings.System.getInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS) } catch (e: SettingNotFoundException) { e.printStackTrace() } return 0 }

注意,这里的返回值是0-255区间的。

定义两个参数:

  • private var mScreenBrightness: Int = 0 //当前屏幕亮度
  • private var ratio: Int = 25 //每次加减的比例

因为返回值最大是255,假设亮度调节是10档,每次加减1档大约是25,这个精度可以自己控制。

设置当前应用屏幕亮度,只当前有效加减按钮操作

btn_add.setOnClickListener { if (mScreenBrightness < (255 - ratio)) { mScreenBrightness = ratio } else { mScreenBrightness = 255 } setWindowBrightness(mScreenBrightness) updateNum(mScreenBrightness) } btn_reduce.setOnClickListener { if (mScreenBrightness > ratio) { mScreenBrightness -= ratio } else { mScreenBrightness = 1 } setWindowBrightness(mScreenBrightness) updateNum(mScreenBrightness) }

如果设置亮度的值大于255了,不会报错,但是会回到初始值,所以加减操作的时候要判断一下最大值最小值。

接下来看一下核心方法setWindowBrightness:

/** * 设置当前应用屏幕亮度,只当前有效 */ private fun setWindowBrightness(brightness: Int) { val window = window val lp = window.attributes lp.screenBrightness = brightness / 255.0f window.attributes = lp }

很简单,设置window的属性即可。这个只会对当前页面有效,返回页面或退到后台,屏幕亮度都会恢复到初始值状态。

updateNum方法是更新页面显示:

/** * 更新页面显示 */ private fun updateNum(mScreenBrightness: Int) { //转float 取四舍五入 val i: Int = (mScreenBrightness / (ratio.toFloat())).roundToInt() tv_brightness.text = i.toString() seekBar.progress = i }

其实到这里,已经能满足大部分的需求了。

Github: https://github.com/yechaoa/BrightnessAndVolume

设置系统屏幕亮度,影响所有页面和app

前面讲到的其实是单页面的亮度设置,也可以修改系统的屏幕亮度,即影响所有的页面和app,一般不会有这种操作。这也涉及到一个高级隐私权限,是否允许修改系统设置,且需要在app设置页面手动授权。

且需要先在manifest中添加:

<!-- 修改系统屏幕亮度 --> <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />

这里分几个小步骤:

  • 判断权限
  • 有则修改亮度
  • 无则引导授权
seekBar操作

seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { Log.i("onProgressChanged----", "" progress) mScreenBrightness = progress * ratio //判断是否有修改系统设置权限 if (Settings.System.canWrite(this@BrightnessActivity)) { setScreenBrightness(mScreenBrightness) updateNum(mScreenBrightness) } else { Toast.makeText(this@BrightnessActivity, "没有修改权限", Toast.LENGTH_SHORT).show() // 打开允许修改系统设置权限的页面 val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:$packageName")) startActivityForResult(intent, mRequestCode) } } override fun onStartTrackingTouch(seekBar: SeekBar?) { } override fun onStopTrackingTouch(seekBar: SeekBar?) { } })

用Settings.System.canWrite来判断是否已授权。

已授权

看setScreenBrightness方法:

/** * 设置系统屏幕亮度,影响所有页面和app * 注意:这种方式是需要手动权限的(android.permission.WRITE_SETTINGS) */ private fun setScreenBrightness(brightness: Int) { try { //先检测调节模式 setScreenManualMode() //再设置 Settings.System.putInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS, brightness) } catch (e: SettingNotFoundException) { e.printStackTrace() } }

我们看到在设置之前,还有一步操作是先检测调节模式,因为如果当前亮度是自动调节的,需要改为手动才可以。

/** * 设置系统亮度调节模式(SCREEN_BRIGHTNESS_MODE) * SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节 */ private fun setScreenManualMode() { try { //获取当前系统亮度调节模式 val mode = Settings.System.getInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE) //如果是自动,则改为手动 if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) { Settings.System.putInt( this.contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL ) } } catch (e: SettingNotFoundException) { e.printStackTrace() } }

亮度调节模式

  • SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节
  • SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节
未授权

未授权的情况下,要提示并引导用户去授权

Toast.makeText(this@BrightnessActivity, "没有修改权限", Toast.LENGTH_SHORT).show() // 打开允许修改系统设置权限的页面 val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:$packageName")) startActivityForResult(intent, mRequestCode)

同时,检测返回结果并处理即可

/** * 处理返回结果 */ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == mRequestCode) { if (Settings.System.canWrite(this@BrightnessActivity)) { setScreenBrightness(mScreenBrightness) } else { Toast.makeText(this@BrightnessActivity, "拒绝了权限", Toast.LENGTH_SHORT).show() } } }

以上可以看到,不管是改模式还是改亮度,都是用的Settings.System.putInt方法,也就是修改了系统的设置,从而达到所有页面和app使用同一亮度的需求。

监听系统亮度变化

以上两种方式其实都是我们手动去改的,那如果用户自己去改变了亮度呢,我们页面理应也要做出相应的改变,所以,还需要去监听系统的亮度变化。

这里也分几个小步骤:

  • 注册监听
  • 处理变化
  • 注销监听
注册监听

/** * 注册监听 系统屏幕亮度变化 */ private fun registerContentObserver() { this.contentResolver?.registerContentObserver( Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), true, mBrightnessObserver ) } 处理变化

/** * 监听系统亮度变化 */ private val mBrightnessObserver = object : ContentObserver(Handler(Looper.getMainLooper())) { override fun onChange(selfChange: Boolean) { super.onChange(selfChange) try { this@BrightnessActivity.contentResolver?.let { mScreenBrightness = Settings.System.getInt(it, Settings.System.SCREEN_BRIGHTNESS) updateNum(mScreenBrightness) setWindowBrightness(mScreenBrightness) } } catch (e: SettingNotFoundException) { e.printStackTrace() } } } 注销监听

override fun onDestroy() { super.onDestroy() //注销监听 this.contentResolver?.unregisterContentObserver(mBrightnessObserver) }

ok,至此关于修改屏幕亮度的讲解就全部结束了,如果对你有用,就点个赞吧^ - ^

Github

https://github.com/yechaoa/BrightnessAndVolume

栏目热文

显示器亮度怎么调才清晰(显示器亮度怎么调到最佳)

显示器亮度怎么调才清晰(显示器亮度怎么调到最佳)

前几天的推送里,我们提到了现在miniLED价格大幅下跌,可以考虑入手了,而其性能上的一大优势就是亮度控制。不过显示设备...

2022-10-27 12:14:55查看全文 >>

笔记本亮度怎么调(笔记本屏幕暗屏解决方法)

笔记本亮度怎么调(笔记本屏幕暗屏解决方法)

最近小编的朋友总是跟我抱怨,笔记本电脑的屏幕太暗了,弄得她看韩剧都看得眼睛很酸痛。然后她用了我说的解决方法之后,成功的...

2022-10-27 12:38:41查看全文 >>

显示器亮度怎么调对眼睛好(调照片显示器亮度调多少合适)

显示器亮度怎么调对眼睛好(调照片显示器亮度调多少合适)

  随着科技与网络越来越发达,人们的日常生活也是离不开各种各样的电子设备,比如智能手机、电脑等等。而当我们在长时间的使用...

2022-10-27 12:39:01查看全文 >>

显示器亮度在哪里调(显示器的亮度怎么调)

显示器亮度在哪里调(显示器的亮度怎么调)

正确地设置显示器,可以方便我们更好地使用显示器,下面是小编为大家介绍电脑显示器的正确设置方法,欢迎大家阅读。显示器设置其...

2022-10-27 12:42:14查看全文 >>

台式电脑显示器亮度怎么调(台式电脑显示屏太亮)

台式电脑显示器亮度怎么调(台式电脑显示屏太亮)

默认状况下很有可能很多人发觉在台式机的 Windows 10 系统中某作用和笔记本里的系统是不一样的,例如今日要讲的如何...

2022-10-27 12:25:26查看全文 >>

显示器颜色怎么调效果最好(显示器颜色调整到最佳)

显示器颜色怎么调效果最好(显示器颜色调整到最佳)

为什么要校色、校色仪租还是买、校色过程如何操作、色彩配置文件如何加载?这一篇文章告诉你。我们在工作中经常会遇到这样的场景...

2022-10-27 12:41:20查看全文 >>

led显示屏太亮怎么调(led显示屏不亮怎么解决)

led显示屏太亮怎么调(led显示屏不亮怎么解决)

如何调节LED显示屏亮度?以及如何配合 LED 显示屏光传感器和时间表来更好地进行调整?在本文中,我们将通过向您展示相应...

2022-10-27 12:14:16查看全文 >>

显示器颜色校正(如何校正显示器色彩)

显示器颜色校正(如何校正显示器色彩)

摄影作为记录手段,真实性必须是首先考量的因素。这不仅体现在环境和形态上,还包括真实的色彩还原。在晴天中午时分阳光照射下,...

2022-10-27 12:20:53查看全文 >>

电脑显示器字体模糊不清怎么办(电脑显示器字体模糊发虚)

电脑显示器字体模糊不清怎么办(电脑显示器字体模糊发虚)

有没有发现在安装windows操作系统后有时会出现桌面和右键菜单字体发虚并且模糊不清的情况呢?这里整理了常见的解决办法,...

2022-10-27 12:30:56查看全文 >>

梦到翻车自己安然无恙(梦到翻车但是安然无恙)

梦到翻车自己安然无恙(梦到翻车但是安然无恙)

车辆爆胎侧翻,驾驶人说:“是它救了我!”3月30日,16时许,龙岩高速交警支队四大队民警接到报警称,政永高速B线375公...

2022-10-27 12:26:53查看全文 >>

文档排行