Android屏幕亮度调节

该博客介绍了如何在Android应用中使用SeekBar组件来动态调节屏幕亮度。通过获取当前亮度值,设置SeekBar的最大值为255(最大亮度),并监听SeekBar的变化。当用户停止拖动SeekBar时,根据进度值调整屏幕亮度,确保亮度值至少为80,以避免过暗。同时,将百分比亮度转换为0-1之间的浮点数,设置给WindowManager以更新屏幕亮度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);

		// 进度条绑定最大亮度,255是最大亮度
		seekBar.setMax(255);
		// 取得当前亮度
		int normal = Settings.System.getInt(getContentResolver(),
				Settings.System.SCREEN_BRIGHTNESS, 255);
		// 进度条绑定当前亮度
		seekBar.setProgress(normal);

		seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				// 取得当前进度
				int tmpInt = seekBar.getProgress();

				// 当进度小于80时,设置成80,防止太黑看不见的后果。
				if (tmpInt < 80) {
					tmpInt = 80;
				}

				// 根据当前进度改变亮度
				Settings.System.putInt(getContentResolver(),
						Settings.System.SCREEN_BRIGHTNESS, tmpInt);
				tmpInt = Settings.System.getInt(getContentResolver(),
						Settings.System.SCREEN_BRIGHTNESS, -1);
				WindowManager.LayoutParams wl = getWindow().getAttributes();

				float tmpFloat = (float) tmpInt / 255;
				if (tmpFloat > 0 && tmpFloat <= 1) {
					wl.screenBrightness = tmpFloat;
				}
				getWindow().setAttributes(wl);

			}

			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub
			}

			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				// TODO Auto-generated method stub
			}
		});

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值