您的位置:首页 > 其它

Adnroid屏幕亮度调节——设置到指定的值与恢复到原来的值

2013-03-15 15:55 741 查看
应用场景:手机上有一张条形码图片,需要用扫码设备扫描。当手机屏幕太暗时,识别度低,因此我就想当切换到条形码图片所在的界面时,调亮屏幕方便扫码设备识别。当离开该界面时恢复用户原来设置的屏幕亮度调节模式和屏幕亮度值。

一、存储当前屏幕亮度调节模式值和屏幕亮度值:

/*
* 获得当前屏幕亮度的模式
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
*/
screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
Log.i(TAG, "screenMode = " + screenMode);

// 获得当前屏幕亮度值 0--255
screenBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
Log.i(TAG, "screenBrightness = " + screenBrightness);


二、改变当前屏幕亮度调节模式值和屏幕亮度值:

// 如果当前的屏幕亮度调节调节模式为自动调节,则改为手动调节屏幕亮度
if(screenMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC){
setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}

// 设置屏幕亮度值为最大值255
setScreenBrightness(255.0F);


三、离开时恢复当前屏幕亮度调节模式值和屏幕亮度值:

// 设置屏幕亮度值为原来的
setScreenBrightness(screenBrightness);
// 设置当前屏幕亮度的模式 为原来的
setScreenMode(screenMode);

四、所需权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

五、完整代码:

package com.easipass.setting.screen.luminance;

import android.app.Activity;
import android.os.Bundle;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

/**
* 功能描述:设置与恢复当前的屏幕亮度调节模式和屏幕亮度值
*
* @author android_ls
*/
public class SettingScreenLuminanceActivity extends Activity {

private static final String TAG = "ScreenLuminance";

/**
* 当前屏幕亮度的模式
*/
private int screenMode;

/**
* 当前屏幕亮度值 0--255
*/
private int screenBrightness;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 调亮屏幕到指定的值
super.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

try {
/*
* 获得当前屏幕亮度的模式
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
*/
screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
Log.i(TAG, "screenMode = " + screenMode);

// 获得当前屏幕亮度值 0--255
screenBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
Log.i(TAG, "screenBrightness = " + screenBrightness);

// 如果当前的屏幕亮度调节调节模式为自动调节,则改为手动调节屏幕亮度
if (screenMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}

// 设置屏幕亮度值为最大值255
setScreenBrightness(255.0F);

} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});

// 恢复原来的亮度
super.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// 设置屏幕亮度值为原来的
setScreenBrightness(screenBrightness);
// 设置当前屏幕亮度的模式 为原来的
setScreenMode(screenMode);
}
});

}

/**
* 设置当前屏幕亮度的模式
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
*/
private void setScreenMode(int value) {
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, value);
}

/**
* 设置当前屏幕亮度值 0--255,并使之生效
*/
private void setScreenBrightness(float value) {
Window mWindow = getWindow();
WindowManager.LayoutParams mParams = mWindow.getAttributes();
float f = value / 255.0F;
mParams.screenBrightness = f;
mWindow.setAttributes(mParams);

// 保存设置的屏幕亮度值
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, (int) value);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: