Android 设置系统亮度

Android 播放器中修改系统亮度

/**
 * 播放器Activity
 */
public class PlayerActivity extends Activity {

    /**
	 * 系统是否自动调节亮度
	 */
    private boolean isAutoBrightness = false;

    /**
	 * 系统亮度变化值
	 */
	private static final int SYSTEM_BRIGHTNESS_CHANGE_VALUES = 25;

	/**
	 * 最大系统音量值
	 */
	private static final int MAX_SYSTEM_BRIGHTNESS_VALUES = 255;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		/**
         * 打开播放器界面判断系统是否设置了自动亮度
		 * 设置系统亮度时如果系统亮度设置了自动亮度,需要先关闭自动亮度
		 */
		isAutoBrightness = DeviceUtil.isAutoBrightness(this);
		if (isAutoBrightness) {
			DeviceUtil.stopAutoBrightness(this);
		}
	}

	@Override
	protected void onResume() {
	    /*
		 * 播放器请求屏幕常亮需要写在onResume方法中,如果写在onCreate()方法中,
		 * 用户在播放时按HOME后,再次回到播放器,屏幕常亮失败
		 */
	    DeviceUtil.requireScreenOn(this);

		/**
		 * 解决用户按HOME后回到播放器亮度模式为自动亮度  重新方法:(自动亮度打开PlayerActivity--> 按HOME --> (进入系统设置此时
		 * 系统亮度为非自动亮度)修改为自动亮度 --> 回到播放器)
		 */
		isAutoBrightness = DeviceUtil.isAutoBrightness(this);
		if (isAutoBrightness) {
			DeviceUtil.stopAutoBrightness(this);
		}
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		int currSettingBrighiness = DeviceUtil.getSystemScreenBrightness(this);
		switch (keyCode) {
		case KeyEvent.KEYCODE_DPAD_UP:
			// 系统亮度加
		    addSystemBrighiness(currSettingBrighiness);
			break;
		case KeyEvent.KEYCODE_DPAD_DOWN:
			// 系统亮度减
			minusSystemBrighiness(currSettingBrighiness);
			break;
		default:
			break;
		}
		return super.onKeyDown(keyCode, event);
	}

	/**
	 * 系统亮度加
	 *
	 * @param currSettingBrighiness
	 *            系统当前亮度
	 */
	private void addSystemBrighiness(int currSettingBrighiness) {
		if (currSettingBrighiness < MAX_SYSTEM_BRIGHTNESS_VALUES
				&& (currSettingBrighiness + SYSTEM_BRIGHTNESS_CHANGE_VALUES) < MAX_SYSTEM_BRIGHTNESS_VALUES) {
			setSystemBrighiness = currSettingBrighiness
					+ SYSTEM_BRIGHTNESS_CHANGE_VALUES;
			DeviceUtil.setSystemScreenBrightness(this, setSystemBrighiness);
		}
	}

	/**
	 * 系统亮度减
	 *
	 * @param currSettingBrighiness
	 *            系统当前亮度
	 */
	public void minusSystemBrighiness(int currSettingBrighiness) {
		if (currSettingBrighiness >= SYSTEM_BRIGHTNESS_CHANGE_VALUES) {
			setSystemBrighiness = currSettingBrighiness
					- SYSTEM_BRIGHTNESS_CHANGE_VALUES;
			DeviceUtil.setSystemScreenBrightness(this, setSystemBrighiness);
		}
	}
}
/**
 * DeviceUtil 工具类
 */
public class DeviceUtil {
    /**
     * 获取系统亮度
     * 取值在(0 -- 255)之间
     */
    public static int getSystemScreenBrightness(Context context) {
        int values = 0;
        try {
            values = Settings.System.getInt(context.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
        } catch (SettingNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return values;
    }

    /**
     * 设置系统亮度
     * @param systemBrightness 返回的亮度值是处于0-255之间的整型数值
     */
    public static boolean setSystemScreenBrightness(Context context, int systemBrightness) {
       return Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS,systemBrightness);
    }

	/**
	 * 系统是否自动调节亮度
	 * return true 是自动调节亮度   return false 不是自动调节亮度
	 */
	public static boolean isAutoBrightness(Activity activity){
		int autoBrightness = Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
		try {
			autoBrightness = Settings.System.getInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
		} catch (SettingNotFoundException e) {
			e.printStackTrace();
		}
		if (autoBrightness == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 关闭系统自动调节亮度
	 */
	public static void stopAutoBrightness(Activity activity){
		Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE,
				Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
	}

	/**
	 * 打开系统自动调节亮度
	 */
	public static void startAutoBrightness(Activity activity) {
		Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE,
				Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
	}

	/**
	 * 请求屏幕常亮
	 * @param activity
	 */
	public static void requireScreenOn(Activity activity){
		activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
				WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
	}

	/**
	 * 取消屏幕常亮
	 * @param activity
	 */
	public static void releaseScreenOn(Activity activity){
		activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 22:12:13

Android 设置系统亮度的相关文章

android 设置系统屏幕亮度

android 设置系统屏幕亮度 权限<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> /*** 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度*/private int getScreen

Android 设置系统时间与日期方法

一.设置系统时间 static void setTime(Context context, int hourOfDay, int minute) { Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, hourOfDay); c.set(Calendar.MINUTE, minute); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); long wh

Android 设置系统的返回键 和软键盘获取焦点问题

很多朋友出现过这样的一个问题,当底部弹出评论框时,有几个问题,一个是软件盘弹出时怎么让焦点在输入框,关于这个问题,本人也是遇到过,解决了很久,有的是在布局设置或者代码里setFocusable(true),并没有用,又在代码或者代码里设置requestFocus(),依然没有用,其实这个解决办法是没有错的,但是为什么会没用呢,因为并没有及时是在软件盘弹出时设置,所以先提出隐藏和显示软件盘的方法 private void onFocusChange(boolean hasFocus) { fina

Android设置系统开机自动永不休眠

android4.2系统增永不休眠同时隐藏休眠选项 1. android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml中设置def_screen_off_timeout为-1, <integername="def_screen_off_timeout">-1</integer> 2. android\packages\apps\Settings\res\values\array

Android设置系统开机自己主动永不休眠

android4.2系统增永不休眠同一时候隐藏休眠选项 1. android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml中设置def_screen_off_timeout为-1, <integername="def_screen_off_timeout">-1</integer> 2. android\packages\apps\Settings\res\values\arr

android设置系统模式

android 静音与振动1,设置静音和振动静音和振动都属于来电后的动作.所以在设置静音和振动时都只是设置一些标识,并往数据库写入相应标识. 文件:packages/apps/settings/src/com/android/settings/SoundAndDisplaySettings.java private CheckBoxPreference mSilent; private CheckBoxPreference mVibrate; private void setRingerMode

Android调节屏幕亮度工具类BrightnessUtils

如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 项目需要做了一个调节屏幕的工具类 /* * Android调节屏幕亮度工具类 * by itas109 * http://blog.csdn.net/itas109 * * 注意:需要添加setting权限 * <uses-permission android:name="android.permission.WRITE_SETTINGS" /> */ publ

android应用中读取屏幕亮度、设置屏幕亮度、保持屏幕常量

应用中读取.设置屏幕亮度 package com.catcher.testcompass; import android.app.Activity; import android.os.Bundle; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.provider.Settings.System; import android.

Android 通过应用设置系统日期和时间的方法

android 2.3 android 4.0 测试可行,不过需要ROOT权限. import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.util.Calendar; import android.os.SystemClock; public class SystemDateTime { static final String TAG = "SystemDateTi