am a096888f
: apps/settings: Add auto/manual brightness control to Brightness settings
Merge commit 'a096888f3c7e14723168c323f0ffdb2473adf5d3' into eclair-plus-aosp * commit 'a096888f3c7e14723168c323f0ffdb2473adf5d3': apps/settings: Add auto/manual brightness control to Brightness settings
This commit is contained in:
50
res/layout/preference_dialog_brightness.xml
Normal file
50
res/layout/preference_dialog_brightness.xml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2008 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
Copyright (C) 2009 Motorola, Inc.
|
||||||
|
March 23, 2009 - Motorola - Allow automatic brightness changes.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:paddingBottom="20dip">
|
||||||
|
|
||||||
|
<ImageView android:id="@android:id/icon"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="20dip" />
|
||||||
|
|
||||||
|
<CheckBox android:id="@+id/automatic_mode"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/automatic_brightness"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:layout_marginTop="6dip"
|
||||||
|
android:layout_marginLeft="20dip"
|
||||||
|
android:layout_marginRight="20dip" />
|
||||||
|
|
||||||
|
<SeekBar android:id="@*android:id/seekbar"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="20dip" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</ScrollView>
|
@@ -916,6 +916,8 @@
|
|||||||
<string name="screen_timeout">Screen timeout</string>
|
<string name="screen_timeout">Screen timeout</string>
|
||||||
<!-- Sound & display settings screen, setting option summary to change screen timeout -->
|
<!-- Sound & display settings screen, setting option summary to change screen timeout -->
|
||||||
<string name="screen_timeout_summary">Adjust the delay before the screen automatically turns off</string>
|
<string name="screen_timeout_summary">Adjust the delay before the screen automatically turns off</string>
|
||||||
|
<!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions -->
|
||||||
|
<string name="automatic_brightness">Automatic brightness</string>
|
||||||
|
|
||||||
<!-- SIM lock settings title -->
|
<!-- SIM lock settings title -->
|
||||||
<string name="sim_lock_settings">SIM card lock settings</string>
|
<string name="sim_lock_settings">SIM card lock settings</string>
|
||||||
|
@@ -26,16 +26,22 @@ import android.provider.Settings.SettingNotFoundException;
|
|||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.CompoundButton;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class BrightnessPreference extends SeekBarPreference implements
|
public class BrightnessPreference extends SeekBarPreference implements
|
||||||
SeekBar.OnSeekBarChangeListener {
|
SeekBar.OnSeekBarChangeListener, CheckBox.OnCheckedChangeListener {
|
||||||
|
|
||||||
private SeekBar mSeekBar;
|
private SeekBar mSeekBar;
|
||||||
|
private CheckBox mCheckBox;
|
||||||
|
|
||||||
private int mOldBrightness;
|
private int mOldBrightness;
|
||||||
|
private int mOldAutomatic;
|
||||||
|
|
||||||
|
private boolean mAutomaticAvailable;
|
||||||
|
|
||||||
// Backlight range is from 0 - 255. Need to make sure that user
|
// Backlight range is from 0 - 255. Need to make sure that user
|
||||||
// doesn't set the backlight to 0 and get stuck
|
// doesn't set the backlight to 0 and get stuck
|
||||||
@@ -44,6 +50,11 @@ public class BrightnessPreference extends SeekBarPreference implements
|
|||||||
|
|
||||||
public BrightnessPreference(Context context, AttributeSet attrs) {
|
public BrightnessPreference(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
|
|
||||||
|
mAutomaticAvailable = context.getResources().getBoolean(
|
||||||
|
com.android.internal.R.bool.config_automatic_brightness_available);
|
||||||
|
|
||||||
|
setDialogLayoutResource(R.layout.preference_dialog_brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -60,6 +71,20 @@ public class BrightnessPreference extends SeekBarPreference implements
|
|||||||
mOldBrightness = MAXIMUM_BACKLIGHT;
|
mOldBrightness = MAXIMUM_BACKLIGHT;
|
||||||
}
|
}
|
||||||
mSeekBar.setProgress(mOldBrightness - MINIMUM_BACKLIGHT);
|
mSeekBar.setProgress(mOldBrightness - MINIMUM_BACKLIGHT);
|
||||||
|
|
||||||
|
mCheckBox = (CheckBox)view.findViewById(R.id.automatic_mode);
|
||||||
|
if (mAutomaticAvailable) {
|
||||||
|
mCheckBox.setOnCheckedChangeListener(this);
|
||||||
|
try {
|
||||||
|
mOldAutomatic = Settings.System.getInt(getContext().getContentResolver(),
|
||||||
|
Settings.System.SCREEN_BRIGHTNESS_MODE);
|
||||||
|
} catch (SettingNotFoundException snfe) {
|
||||||
|
mOldAutomatic = 0;
|
||||||
|
}
|
||||||
|
mCheckBox.setChecked(mOldAutomatic != 0);
|
||||||
|
} else {
|
||||||
|
mCheckBox.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onProgressChanged(SeekBar seekBar, int progress,
|
public void onProgressChanged(SeekBar seekBar, int progress,
|
||||||
@@ -75,6 +100,13 @@ public class BrightnessPreference extends SeekBarPreference implements
|
|||||||
// NA
|
// NA
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
|
setMode(isChecked ? 1 : 0);
|
||||||
|
if (!isChecked) {
|
||||||
|
setBrightness(mSeekBar.getProgress() + MINIMUM_BACKLIGHT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDialogClosed(boolean positiveResult) {
|
protected void onDialogClosed(boolean positiveResult) {
|
||||||
super.onDialogClosed(positiveResult);
|
super.onDialogClosed(positiveResult);
|
||||||
@@ -83,8 +115,16 @@ public class BrightnessPreference extends SeekBarPreference implements
|
|||||||
Settings.System.putInt(getContext().getContentResolver(),
|
Settings.System.putInt(getContext().getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS,
|
Settings.System.SCREEN_BRIGHTNESS,
|
||||||
mSeekBar.getProgress() + MINIMUM_BACKLIGHT);
|
mSeekBar.getProgress() + MINIMUM_BACKLIGHT);
|
||||||
|
if (mAutomaticAvailable) {
|
||||||
|
Settings.System.putInt(getContext().getContentResolver(),
|
||||||
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
|
mCheckBox.isChecked() ? 1 : 0);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
setBrightness(mOldBrightness);
|
setBrightness(mOldBrightness);
|
||||||
|
if (mAutomaticAvailable) {
|
||||||
|
setMode(mOldAutomatic);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,5 +139,21 @@ public class BrightnessPreference extends SeekBarPreference implements
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setMode(int automatic) {
|
||||||
|
if (automatic != 0) {
|
||||||
|
mSeekBar.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
mSeekBar.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
IHardwareService hardware = IHardwareService.Stub.asInterface(
|
||||||
|
ServiceManager.getService("hardware"));
|
||||||
|
if (hardware != null) {
|
||||||
|
hardware.setAutoBrightness(automatic != 0);
|
||||||
|
}
|
||||||
|
} catch (RemoteException doe) {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user