당신이 무엇을 할 수
그것의 간단한 드래그 앤 드롭을 사용하여 XML에서 SeekBar를 만들거나이 mainActivity 클래스의 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" />
쓰기 할 수 있습니다 :
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);
}
screen을 호출하기 전에 밝기 모드를 확인해야합니다. etime 모드는 자동 밝기로 선택되며이 경우 밝기는 변경되지 않습니다. 매니페스트 파일에서도 권한이 필요합니다.
<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
}
}