【问题标题】:Show brightness indicator bar when changed programmatically android以编程方式更改android时显示亮度指示条
【发布时间】:2018-07-31 09:07:18
【问题描述】:
所以我有一个工作代码来改变屏幕的亮度,就像她的回答一样 -
Change the System Brightness Programmatically
我只是找不到任何地方,当用户从应用程序更改它时,如何显示设备的亮度指示条发生变化。
例如,为了改变音量,有一个标志告诉它显示 UI (FLAG_SHOW_UI) -
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, newStreamVolume, AudioManager.FLAG_SHOW_UI);
我正在尝试实现相同的效果,但在亮度参数上。
有什么想法吗?
【问题讨论】:
标签:
android
brightness
indicator
screen-brightness
【解决方案1】:
与音量不同,没有物理按钮来改变亮度,因此弹出一个指示亮度变化的窗口变得毫无意义。请注意,可以在屏幕控件和显示弹出窗口的按钮控件上更改音量,但只能在屏幕控件上更改亮度。
您可以通过使用SeekBar 来实现您的代码来显示亮度级别。
通过获取当前亮度来设置当前亮度级别
Settings.System.getInt(getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS);
【解决方案2】:
在清单中添加权限:-
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
设置亮度:-
ContentResolver cResolver = this.getApplicationContext().getContentResolver();
Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
您可以显示一个用于改变亮度的搜索栏:-
//Register OnSeekBarChangeListener, so it can actually change values
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
{
public void onStopTrackingTouch(SeekBar seekBar)
{
//Set the system brightness using the brightness variable value
Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
}
public void onStartTrackingTouch(SeekBar seekBar)
{
//Nothing handled here
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
}
});
}