在Android OS中,显然至少有三种不同的技术可以改变屏幕亮度。其中两个不再用于后蛋糕,第三个接受的技术显然有一个错误。
我想在单视图活动开始时增加屏幕亮度,然后在活动结束时将亮度恢复为用户设置。没有按钮,没有第二个视图或第二个活动。只需在开始时获得最大亮度,并在活动结束时返回原始亮度设置。
使用我所在的WindowManager.LayoutParams的当前技术的示例范围从2行代码
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 100.0f;
getWindow().setAttributes(lp);
到几页源代码和众多活动。
是否有一个简单的示例,可以在开始时最大化屏幕亮度,有人可以提供链接?
答案 0 :(得分:2)
你可以做的很简单就是使用拖放在xml中创建一个SeekBar或者写下它的xml
SeekBar
android:id="@+id/brightnesSseeker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:max="255"
android:progress="255" />
mainActivity类中的执行此操作:
brightnesSseeker = (SeekBar) findViewById(R.id.brightnesSseeker);
brightnesSseeker
.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
// Nothing handled here
}
public void onStartTrackingTouch(SeekBar seekBar) {
// Nothing handled here
}
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
// Set the minimal brightness level
// if seek bar is 20 or any value below
if (progress <= 20) {
// Set the brightness to 20
screenBrightness(20);
} else {
// Set brightness variable based on the progress bar
screenBrightness(progress);
}
stobeVariable=progress*10;
}
});
然后编写一个简单的函数:
private void screenBrightness(double newBrightnessValue) {
/*
* WindowManager.LayoutParams settings = getWindow().getAttributes();
* settings.screenBrightness = newBrightnessValue;
* getWindow().setAttributes(settings);
*/
WindowManager.LayoutParams lp = getWindow().getAttributes();
float newBrightness = (float) newBrightnessValue;
lp.screenBrightness = newBrightness / (float) 255;
getWindow().setAttributes(lp);
}
在调用screenBrightness功能之前也要检查亮度模式,因为有时模式被选择为自动亮度,在这种情况下亮度不会改变。您还需要清单文件中的权限。
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
在setOnSeekBarChangeListener
之前调用onCreate中的函数 void changeBrightnessMode(){
try {
int brightnessMode = Settings.System.getInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE);
if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
} catch (Exception e) {
// do something useful
}
}