当前位置:朝夕网 » 数码科技 » Android 手机修改屏幕亮度方案

Android 手机修改屏幕亮度方案

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、获取系统Settings 中的亮度二、修

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

一、获取系统Settings 中的亮度

二、修改APP界面屏幕亮度,不会影响其他APP

三、修改系统Settings 中屏幕亮度,影响所有APP

四、完整代码实现

一、获取系统Settings 中的亮度

系统屏幕亮度值在(0~255)之间,获取方法很简单,只需要调用以下方法即可。

/**
* 1.获取系统默认屏幕亮度值 屏幕亮度值范围(0-255)
* **/
private int getScreenBrightness {
ContentResolver contentResolver = context.getContentResolver;
int defVal = 125;
return Settings.System.getInt;
}

修改屏幕亮度包含两种:

1.修改APP界面屏幕亮度,不会影响其他APP。

2.修改系统 Settings 中屏幕亮度,影响所有APP.

二,修改APP界面屏幕亮度,不会影响其他APP

修改自身 APP 亮度很简单,只需要在Activity OnCreate方法调用如下代码即可。

/**
* 2.设置 APP界面屏幕亮度值方法
* **/
private void setAppScreenBrightness {
Window window = getWindow;
WindowManager.LayoutParams lp = window.getAttributes;
lp.screenBrightness = birghtessValue / 255.0f;
window.setAttributes;
}

三、修改系统Settings 中屏幕亮度,影响所有APP

修改系统 Settings 中的屏幕亮度,由于会影响到所有APP,需要申请修改Settings的权限<uses-permission * android:name=\”android.permission.WRITE_SETTINGS\”/>,同时需要取消光感自动调节屏幕亮度的功能,设置为手动调节模式,否则光感传感器会随着光照强度的变化修改系统屏幕亮度,并且非系统签名的APP,需要用户手动授权后才可以修改背光亮度。

关闭光感,设置手动调节背光模式实现方法如下:

/**
* 3.关闭光感,设置手动调节背光模式
*
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节屏幕亮度模式值为1
*
* SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节屏幕亮度模式值为0
* **/
public void setScreenManualMode {
ContentResolver contentResolver = context.getContentResolver;
try {
int mode = Settings.System.getInt;
if {
Settings.System.putInt;
}
} catch {
e.printStackTrace;
}
}

非系统签名应用,引导用户手动授权修改Settings 权限

非系统签名应用,无法直接修改Settings,需要引导用户手动授权。

引导用户手动授权

/**
* 4.非系统签名应用,引导用户手动授权修改Settings 权限
* **/
private static final int REQUEST_CODE_WRITE_SETTINGS = 1000;
private void allowModifySettings {
// Settings.System.canWrite
// 检测是否拥有写入系统 Settings 的权限
if ) {
AlertDialog.Builder builder = new AlertDialog.Builder;
builder.setTitle;
builder.setMessage;
// 拒绝, 无法修改
builder.setNegativeButton {
@Override
public void onClick {
Toast.makeText
.show;
}
});
builder.setPositiveButton {
@Override
public void onClick {
// 打开允许修改Setting 权限的界面
Intent intent = new Intent));
startActivityForResult;
}
});
builder.setCancelable;
builder.show;
}
}
@Override
protected void onActivityResult {
// TODO Auto-generated method stub
super.onActivityResult;
if {
if {
// Settings.System.canWrite方法检测授权结果
if )) {
// 5.调用修改Settings屏幕亮度的方法 屏幕亮度值 200
ModifySettingsScreenBrightness;
Toast.makeText,
Toast.LENGTH_SHORT).show;
} else {
Toast.makeText.show;
}
}
}
}

修改Setting 中屏幕亮度值 实现

拥有系统签名的应用可以直接调用此方法修改系统屏幕亮度,非系统签名应用,只有用户授权后才可以修改。

/**
* 5.修改Setting 中屏幕亮度值
*
* 修改Setting的值需要动态申请权限 <uses-permission
* android:name=\”android.permission.WRITE_SETTINGS\”/>
* **/
private void ModifySettingsScreenBrightness {
// 首先需要设置为手动调节屏幕亮度模式
setScreenManualMode;
ContentResolver contentResolver = context.getContentResolver;
Settings.System.putInt;
}
四、完整代码实现

完整代码实现如下:

package com.example.test;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate {
super.onCreate;
//获取屏幕亮度
getScreenBrightness;
Toast.makeText,
Toast.LENGTH_SHORT).show;
// 设置APP 屏幕亮度后,系统Setting亮度将对此app 不生效
setAppScreenBrightness;
allowModifySettings;
setContentView;
}
/**
* 1.获取系统默认屏幕亮度值 屏幕亮度值范围(0-255)
* **/
private int getScreenBrightness {
ContentResolver contentResolver = context.getContentResolver;
int defVal = 125;
return Settings.System.getInt;
}
/**
* 2.设置 APP界面屏幕亮度值方法
* **/
private void setAppScreenBrightness {
Window window = getWindow;
WindowManager.LayoutParams lp = window.getAttributes;
lp.screenBrightness = birghtessValue / 255.0f;
window.setAttributes;
}
/**
* 3.关闭光感,设置手动调节背光模式
*
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节屏幕亮度模式值为1
*
* SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节屏幕亮度模式值为0
* **/
public void setScreenManualMode {
ContentResolver contentResolver = context.getContentResolver;
try {
int mode = Settings.System.getInt;
if {
Settings.System.putInt;
}
} catch {
e.printStackTrace;
}
}
/**
* 4.非系统签名应用,引导用户手动授权修改Settings 权限
* **/
private static final int REQUEST_CODE_WRITE_SETTINGS = 1000;
private void allowModifySettings {
// Settings.System.canWrite
// 检测是否拥有写入系统 Settings 的权限
if ) {
AlertDialog.Builder builder = new AlertDialog.Builder;
builder.setTitle;
builder.setMessage;
// 拒绝, 无法修改
builder.setNegativeButton {
@Override
public void onClick {
Toast.makeText
.show;
}
});
builder.setPositiveButton {
@Override
public void onClick {
// 打开允许修改Setting 权限的界面
Intent intent = new Intent));
startActivityForResult;
}
});
builder.setCancelable;
builder.show;
}
}
@Override
protected void onActivityResult {
// TODO Auto-generated method stub
super.onActivityResult;
if {
if {
// Settings.System.canWrite方法检测授权结果
if )) {
// 5.调用修改Settings屏幕亮度的方法 屏幕亮度值 200
ModifySettingsScreenBrightness;
Toast.makeText,
Toast.LENGTH_SHORT).show;
} else {
Toast.makeText.show;
}
}
}
}
/**
* 5.修改Setting 中屏幕亮度值
*
* 修改Setting的值需要动态申请权限 <uses-permission
* android:name=\”android.permission.WRITE_SETTINGS\”/>
* **/
private void ModifySettingsScreenBrightness {
// 首先需要设置为手动调节屏幕亮度模式
setScreenManualMode;
ContentResolver contentResolver = context.getContentResolver;
Settings.System.putInt;
}
}

以上就是朝夕生活(www.30zx.com)关于“Android 手机修改屏幕亮度方案”的详细内容,希望对大家有所帮助!

免责声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,多谢。朝夕网 » Android 手机修改屏幕亮度方案