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:
Dan Murphy
2009-09-15 07:33:14 -07:00
committed by Android Git Automerger
3 changed files with 109 additions and 1 deletions

View 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>

View File

@@ -916,6 +916,8 @@
<string name="screen_timeout">Screen timeout</string>
<!-- 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>
<!-- 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 -->
<string name="sim_lock_settings">SIM card lock settings</string>

View File

@@ -26,16 +26,22 @@ import android.provider.Settings.SettingNotFoundException;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import java.util.Map;
public class BrightnessPreference extends SeekBarPreference implements
SeekBar.OnSeekBarChangeListener {
SeekBar.OnSeekBarChangeListener, CheckBox.OnCheckedChangeListener {
private SeekBar mSeekBar;
private CheckBox mCheckBox;
private int mOldBrightness;
private int mOldAutomatic;
private boolean mAutomaticAvailable;
// Backlight range is from 0 - 255. Need to make sure that user
// 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) {
super(context, attrs);
mAutomaticAvailable = context.getResources().getBoolean(
com.android.internal.R.bool.config_automatic_brightness_available);
setDialogLayoutResource(R.layout.preference_dialog_brightness);
}
@Override
@@ -60,6 +71,20 @@ public class BrightnessPreference extends SeekBarPreference implements
mOldBrightness = MAXIMUM_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,
@@ -75,6 +100,13 @@ public class BrightnessPreference extends SeekBarPreference implements
// NA
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setMode(isChecked ? 1 : 0);
if (!isChecked) {
setBrightness(mSeekBar.getProgress() + MINIMUM_BACKLIGHT);
}
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
@@ -83,8 +115,16 @@ public class BrightnessPreference extends SeekBarPreference implements
Settings.System.putInt(getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS,
mSeekBar.getProgress() + MINIMUM_BACKLIGHT);
if (mAutomaticAvailable) {
Settings.System.putInt(getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
mCheckBox.isChecked() ? 1 : 0);
}
} else {
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) {
}
}
}