抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

关于MIUI屏幕亮度获取范围不对的问题

以前做系统应用的时候不觉得有什么问题,因为系统是公司自己定制的,传感器也是公司采购的,接口也是系统工程师提供的。

但是一个小需求却暴露了这个问题,MIUI 的系统,返回的亮度范围并不是[0 .. 1],网上查了下,得出以下方案:

/**
* 当前窗口亮度
* 范围为0~1.0,1.0时为最亮,-1为系统默认设置
*/
var Activity.windowBrightness: Float
get() {
var maxBrightness = 255
val resId = Resources.getSystem().getIdentifier("config_screenBrightnessSettingMaximum", "integer", "android")
if (resId != 0) {
maxBrightness = Resources.getSystem().getInteger(resId)
}
var bright = window.attributes.screenBrightness
if (bright == WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE) {
bright = Settings.System.getInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS, maxBrightness) / maxBrightness * 1.0f
}
return bright
}
set(brightness) {
//小于0或大于1.0默认为系统亮度
window.attributes = window.attributes.apply {
screenBrightness = if (brightness > 1.0 || brightness < 0) -1.0F else brightness
}
}

简单改了改,直接用吧。如果说扩展函数用不了,那,赶紧升级吧。Good Luck!

当然,这不是改系统亮度,只是改当前窗口亮度。

参考:http://www.soolco.com/post/44336_1_1.html


0条评论

发表评论