BrightnessTools:

package com.example.test

import android.app.Activity
import android.content.ContentResolver
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.provider.Settings
import android.provider.Settings.SettingNotFoundException
import android.util.Log

object BrightnessTools {
    /**
     * * 判断是否开启了自动亮度调节
     * @param aContentResolver 内容解析器
     * @return automaticBrightness 是否开启了自动亮度调节
     */
    fun isAutoBrightness(aContentResolver: ContentResolver?): Boolean {
        var automaticBrightness = false
        try {
            automaticBrightness = Settings.System.getInt(
                aContentResolver,
                Settings.System.SCREEN_BRIGHTNESS_MODE
            ) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
        } catch (e: SettingNotFoundException) {
            e.printStackTrace()
        }
        return automaticBrightness
    }

    /**
     * 获取屏幕的亮度
     * @param activity 活动
     * @return nowBrightnessValue 屏幕的亮度
     */
    fun getScreenBrightness(activity: Activity): Int {
        var nowBrightnessValue = 0
        val resolver = activity.contentResolver
        try {
            nowBrightnessValue = Settings.System.getInt(
                resolver, Settings.System.SCREEN_BRIGHTNESS
            )
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return nowBrightnessValue
    }

    /**
     * app内设置亮度
     * @param activity 活动
     * @param brightness 亮度:0-255
     */
    fun setBrightness(activity: Activity, brightness: Int) {
        val lp = activity.window.attributes
        lp.screenBrightness = java.lang.Float.valueOf(brightness.toFloat()) * (1f / 255f)
        Log.d("brightness", "set  lp.screenBrightness == " + lp.screenBrightness)
        activity.window.attributes = lp
    }

    /**
     * 停止自动亮度调节
     * @param activity 活动
     */
    fun stopAutoBrightness(activity: Activity) {
        // 模拟器测可以用 但用真机测会闪退(小米9 Android 10)
        // Error: Caused by: java.lang.SecurityException: com.szats.moto was not granted  this permission: android.permission.WRITE_SETTINGS.
        Settings.System.putInt(
            activity.contentResolver,
            Settings.System.SCREEN_BRIGHTNESS_MODE,
            Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
        )
    }

    /**
     * 开启亮度自动调节
     * @param activity 活动
     */
    fun startAutoBrightness(activity: Activity) {
        // 模拟器测可以用 但用真机测会闪退(小米9 Android 10)
        // Error: Caused by: java.lang.SecurityException: com.szats.moto was not granted  this permission: android.permission.WRITE_SETTINGS.
        Settings.System.putInt(
            activity.contentResolver,
            Settings.System.SCREEN_BRIGHTNESS_MODE,
            Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
        )
    }

    /**
     * 设置系统亮度
     * @param resolver
     * @param brightness 亮度:0-255
     */
    fun setSystemBrightness(resolver: ContentResolver, brightness: Int) {
        // 模拟器测可以用 但用真机测会闪退(小米9 Android 10)
        // Error: Caused by: java.lang.SecurityException: com.szats.moto was not granted  this permission: android.permission.WRITE_SETTINGS.
        val uri = Settings.System.getUriFor("screen_brightness")
        Log.d("brightness", "------设置系统亮度结果:${Settings.System.putInt(resolver, "screen_brightness", brightness)}")
        // resolver.registerContentObserver(uri, true, myContentObserver);
        resolver.notifyChange(uri, null)
    }
}

使用:

    private fun setBrightness() {
//        // 判断是否开启自动亮度
//        val autoBrightness = BrightnessTools.isAutoBrightness(contentResolver)
        BrightnessTools.setBrightness(this, 255)
        Log.d("brightness", "当前页面亮度设置为:255")
    }

    private fun setSystemBrightness() {
        val screenBrightness = BrightnessTools.getScreenBrightness(this)
        Log.d("brightness", "系统屏幕亮度为:${screenBrightness}")
        BrightnessTools.setSystemBrightness(contentResolver,255)
        Log.d("brightness", "系统屏幕亮度设置为:255")
    }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐