Android设置app屏幕亮度和系统屏幕亮度

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")
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值