关闭

安卓屏幕亮度设置相关

标签: 安卓亮度调节常亮
295人阅读 评论(0) 收藏 举报
分类:

        我们知道,安卓手机屏幕的亮度和锁屏时间是由系统设置控制的,但在开发某些应用时,我们不希望它运行过程中锁屏或者希望保持指定的亮度,虽然这些在系统设置选项里可以实现,但难免会忘记设置以至于达不到希望的运行效果。如果在开发程序时,把这些工作在代码里实现是个不错的选择。

    那么如何实现代码控制屏幕锁屏和亮度呢?

    1、如果希望保持屏幕常亮,可以在代码中onCreate()下添加如下语句:   

<pre name="code" class="java" style="font-size: 14px;">        <span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);</span>
        <span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">// MyTag可以随便写,可以写应用名称等</span>
        <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);</span>
        <span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">// 换成PowerManager.SCREEN_DIM_WAKE_LOCK会变暗)</span>
        <span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "MyTest1");</span>
        <span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">wl.acquire();// 开启屏幕常亮</span>
        <span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">wl.cancel();//关闭屏幕常亮(可根据实际情况添加到指定位置)</span>


          2、如果希望保持屏幕常亮,则需要定义几个函数:

        private void screenBrightness_check()// 亮度模式检测,如果为自动,则关闭该模式
	{
		// 先关闭系统的亮度自动调节
		try {
			if (android.provider.Settings.System.getInt(getContentResolver(),
					android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE) == android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
				android.provider.Settings.System
						.putInt(getContentResolver(),
								android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE,
								android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
			}
		} catch (SettingNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void autoBrightness()// 设置亮度自动调节
	{
		android.provider.Settings.System
				.putInt(getContentResolver(),
						android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE,
						android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
	}

	private void setScreenBritness(int brightness)// 亮度调节
	{
		// 不让屏幕全暗
		if (brightness <= 1) {
			brightness = 1;
		}
		// 设置当前activity的屏幕亮度
		WindowManager.LayoutParams lp = this.getWindow().getAttributes();
		// 0到1,调整亮度暗到全亮
		lp.screenBrightness = Float.valueOf(brightness / 255f);
		this.getWindow().setAttributes(lp);

		// 保存为系统亮度
		android.provider.Settings.System.putInt(getContentResolver(),
				android.provider.Settings.System.SCREEN_BRIGHTNESS, brightness);

	}
         /*在调用时,运行如下函数*/
         screenBrightness_check();// 关闭亮度自动调节
         setScreenBritness(n);// 设置指定亮度,n的取值范围是0—255,其中0为最暗,255最亮
        3、最后注意在AndroidManifest.xml中添加相应的权限:

<span style="font-size:12px;"><uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /></span>
<span style="font-size:14px;">     </span>
        这样,我们就可以在需要时调节屏幕亮度和常亮了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11820次
    • 积分:253
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章存档
    最新评论