您的位置:首页 > 移动开发 > Android开发

android 系统亮度设置

2015-09-28 15:13 381 查看
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.provider.Settings;
import android.util.Log;
import android.view.WindowManager;

import cn.com.geartech.app.model.ContextModel;

/**
* 系统亮度设置
*
* @author qiw
* @version 1.0, 2013-9-13
*/
public class BrightnessSettings {
private static final String TAG = BrightnessSettings.class.getSimpleName();

Context context;

/**
* 获得当前系统的亮度模式
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
*/
public static int getBrightnessMode() {
int brightnessMode = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
try {
brightnessMode = Settings.System.getInt(ContextModel.getInstance().getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE);
} catch (Exception e) {
Log.e(TAG, "获得当前屏幕的亮度模式失败:", e);
}
return brightnessMode;
}

/**
* 设置当前系统的亮度模式
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
*/
public static void setBrightnessMode(int brightnessMode) {
try {
Settings.System.putInt(ContextModel.getInstance().getContext().getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, brightnessMode);
} catch (Exception e) {
Log.e(TAG, "设置当前屏幕的亮度模式失败:", e);
}
}

/**
* 获得当前系统的亮度值: 0~255
*/
public static int getSysScreenBrightness() {
int screenBrightness = MAX_BRIGHTNESS;
try {
screenBrightness = Settings.System.getInt(ContextModel.getInstance().getContext().getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
if(screenBrightness > MAX_BRIGHTNESS)
screenBrightness = MAX_BRIGHTNESS;
} catch (Exception e) {
Log.e(TAG, "获得当前系统的亮度值失败:", e);
}
return screenBrightness;
}

/**
* 设置当前系统的亮度值:0~255
*/
public static void setSysScreenBrightness(int brightness) {
try {
ContentResolver resolver = ContextModel.getInstance().getContext().getContentResolver();
Uri uri = Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
resolver.notifyChange(uri, null); // 实时通知改变
} catch (Exception e) {
Log.e(TAG, "设置当前系统的亮度值失败:", e);
}
}

/**
* 设置屏幕亮度,这会反映到真实屏幕上
*
* @param activity
* @param brightness
*/
public static void setActScreenBrightness(final Activity activity, final int brightness) {
final WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.screenBrightness = brightness / (float) MAX_BRIGHTNESS;
activity.getWindow().setAttributes(lp);
}

/**
* 还原亮度模式和亮度值的设置
*
* @param act
* @param brightnessMode
* @param brightness
*/
private static void recoverBrightnessSetting(final Activity act, final int brightnessMode, final int brightness) {
setBrightnessMode(brightnessMode);
setSysScreenBrightness(brightness);
setActScreenBrightness(act, -MAX_BRIGHTNESS);
}

/** 可调节的最小亮度值 */
public static final int MIN_BRIGHTNESS = 30;
/** 可调节的最大亮度值 */
public static final int MAX_BRIGHTNESS = 255;

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