安卓屏幕亮度设置相关

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

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

    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>
        这样,我们就可以在需要时调节屏幕亮度和常亮了。

阅读更多
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/best2012power/article/details/49908465
个人分类: 安卓应用开发
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

安卓屏幕亮度设置相关

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭