Android获取并设置Activity的亮度

此API只适合2.1以上版本:

	/**
	 * 判断是否开启了自动亮度调节
	 * 
	 * @param aContext
	 * @return
	 */
	public static boolean isAutoBrightness(ContentResolver aContentResolver) {
		boolean automicBrightness = false;
		try {
			automicBrightness = Settings.System.getInt(aContentResolver,
					Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
		} catch (SettingNotFoundException e) {
			e.printStackTrace();
		}
		return automicBrightness;
	}

	/**
	 * 获取屏幕的亮度
	 * 
	 * @param activity
	 * @return
	 */
	public static int getScreenBrightness(Activity activity) {
		int nowBrightnessValue = 0;
		ContentResolver resolver = activity.getContentResolver();
		try {
			nowBrightnessValue = android.provider.Settings.System.getInt(
					resolver, Settings.System.SCREEN_BRIGHTNESS);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return nowBrightnessValue;
	}

	/**
	 * 设置亮度
	 * 
	 * @param activity
	 * @param brightness
	 */
	public static void setBrightness(Activity activity, int brightness) {
		// Settings.System.putInt(activity.getContentResolver(),
		// Settings.System.SCREEN_BRIGHTNESS_MODE,
		// Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
		WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
		lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
		activity.getWindow().setAttributes(lp);
	}

	/**
	 * 停止自动亮度调节
	 * 
	 * @param activity
	 */
	public static void stopAutoBrightness(Activity activity) {
		Settings.System.putInt(activity.getContentResolver(),
				Settings.System.SCREEN_BRIGHTNESS,
				Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
	}

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

	/**
	 * 保存亮度设置状态
	 * 
	 * @param resolver
	 * @param brightness
	 */
	public static void saveBrightness(ContentResolver resolver, int brightness) {
		Uri uri = android.provider.Settings.System
				.getUriFor("screen_brightness");
		android.provider.Settings.System.putInt(resolver, "screen_brightness",
				brightness);
		resolver.notifyChange(uri, null);
	}

使用SeekBar进行亮度控制:

		sSeekBar = (SeekBar) findViewById(R.id.seek_bar);
		sSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub
			}
			
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				
			}
			
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				if (progress < 10) {
				} else {
					setBrightness(Test2Activity.this, progress);
				}
			}
		});
		
		//获取当前亮度的位置
		int a =getScreenBrightness(this);
		sSeekBar.setProgress(a);

    <SeekBar
        android:id="@+id/seek_bar"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:max="255"
        android:maxHeight="8dp"
        android:minHeight="8dp"
        android:paddingBottom="5dp"
        android:paddingLeft="13dp"
        android:paddingRight="13dp"
        android:progress="0"
         />

您想快速达成您的目标和实现梦想吗?请加QQ:673220883每天为您提供了大量励志,视频,销售,管理等-经典文章,免费学习。此QQ空间已改变了千万人的命运。陈安之和您一起开始您的梦想之旅!

精彩分享:如果你现在没有目标,对未来很迷茫、来看下

精彩分享:俞洪敏:一辈子只做一件事 不要想太多

精彩分享:男人的这一百个秘密,我不说你一辈子也不可能知道!

精彩分享:人临终前最遗憾的25件事,别让这些遗憾 变成你的遗憾



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

### Android开发设置屏幕亮度的方法 在Android开发中,可以通过编程方式调整或设置屏幕亮度Android系统提供了多种方法来实现对屏幕亮度的控制,包括通过系统设置接口调整亮度值、使用系统服务管理屏幕亮度等。 #### 1. 获取当前屏幕亮度模式 在调整屏幕亮度之前,可以先检查设备是否开启了自动亮度调节功能。通过调用 `Settings.System.getInt()` 方法获取当前屏幕亮度模式,如果返回值为 `Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC`,则表示开启了自动亮度调节功能[^2]。相关的代码如下: ```java private boolean isAutoScreenBrightness() { try { int mode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE); return mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; } catch (Settings.SettingNotFoundException e) { e.printStackTrace(); } return false; } ``` #### 2. 设置屏幕亮度值 在Android中,可以通过 `WindowManager.LayoutParams` 来设置屏幕亮度。具体方法是获取当前窗口的布局参数,然后设置 `screenBrightness` 属性为一个0.0到1.0之间的浮点数值,其中0.0表示最低亮度,1.0表示最高亮度。代码示例如下: ```java WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.screenBrightness = 0.5f; // 设置为50%亮度 getWindow().setAttributes(layoutParams); ``` #### 3. 恢复屏幕亮度为自动调节 如果希望恢复屏幕亮度为系统自动调节模式,可以将 `screenBrightness` 设置为 `WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE`。代码如下: ```java WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE; getWindow().setAttributes(layoutParams); ``` #### 4. 通过系统设置调整亮度 如果需要在应用程序中修改系统全局的屏幕亮度值,可以使用 `Settings.System.putInt()` 方法来设置屏幕亮度值。屏幕亮度的取值范围为0到255,其中0表示最低亮度,255表示最高亮度。代码示例如下: ```java try { // 设置屏幕亮度为128(中间值) Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 128); } catch (Exception e) { e.printStackTrace(); } ``` #### 5. 设置屏幕亮度为默认百分比 在某些情况下,可能需要设置屏幕亮度为某个默认百分比值。可以通过将百分比转换为0到255之间的整数值,然后调用 `Settings.System.putInt()` 方法进行设置。例如,设置屏幕亮度为80%时,可以将255乘以0.8得到204,将其作为亮度值[^1]。 ```java int brightnessValue = (int) (255 * 0.8); // 计算80%亮度值 Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightnessValue); ``` #### 6. 权限声明 如果应用程序需要修改系统全局的屏幕亮度设置,还需要在 `AndroidManifest.xml` 文件中声明相应的权限: ```xml <uses-permission android:name="android.permission.WRITE_SETTINGS" /> ``` 此外,由于从Android 6.0(API 23)开始,`WRITE_SETTINGS` 权限属于特殊权限组,因此还需要在运行时请求用户授权: ```java if (!Settings.System.canWrite(context)) { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + context.getPackageName())); context.startActivity(intent); } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值