b/2296110 Dialog for setting up dock audio.
Reimplemented as a Foreground Service just so it can get on top of the Car Dock App.
Added debounce mechanism to not disconnect immediately after getting a undock event.
Each dock now has its own "Remember setting".
Remember Settings is on by default
Change-Id: I80790bdb7c831e2a642365b92433012191aa70c1
diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundAndDisplaySettings.java
index edcd4da..e01f7c3 100644
--- a/src/com/android/settings/SoundAndDisplaySettings.java
+++ b/src/com/android/settings/SoundAndDisplaySettings.java
@@ -18,7 +18,7 @@
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
-import com.android.settings.bluetooth.DockSettingsActivity;
+import com.android.settings.bluetooth.DockEventReceiver;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -49,7 +49,7 @@
/** If there is no setting in the provider, use this. */
private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;
private static final int FALLBACK_EMERGENCY_TONE_VALUE = 0;
-
+
private static final String KEY_SILENT = "silent";
private static final String KEY_VIBRATE = "vibrate";
private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
@@ -89,9 +89,9 @@
private CheckBoxPreference mAccelerometer;
private CheckBoxPreference mNotificationPulse;
private float[] mAnimationScales;
-
+
private AudioManager mAudioManager;
-
+
private IWindowManager mWindowManager;
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -114,12 +114,12 @@
super.onCreate(savedInstanceState);
ContentResolver resolver = getContentResolver();
int activePhoneType = TelephonyManager.getDefault().getPhoneType();
-
+
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
mMountService = IMountService.Stub.asInterface(ServiceManager.getService("mount"));
-
+
addPreferencesFromResource(R.xml.sound_and_display_settings);
if (TelephonyManager.PHONE_TYPE_CDMA != activePhoneType) {
@@ -147,7 +147,7 @@
mAnimations.setOnPreferenceChangeListener(this);
mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
mAccelerometer.setPersistent(false);
-
+
ListPreference screenTimeoutPreference =
(ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
screenTimeoutPreference.setValue(String.valueOf(Settings.System.getInt(
@@ -184,9 +184,9 @@
@Override
protected void onResume() {
super.onResume();
-
+
updateState(true);
-
+
IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION);
if (mHasDockSettings) {
if (mDockSettings != null) {
@@ -236,7 +236,7 @@
final int ringerMode = mAudioManager.getRingerMode();
final boolean silentOrVibrateMode =
ringerMode != AudioManager.RINGER_MODE_NORMAL;
-
+
if (silentOrVibrateMode != mSilent.isChecked() || force) {
mSilent.setChecked(silentOrVibrateMode);
}
@@ -245,25 +245,25 @@
mPlayMediaNotificationSounds.setChecked(mMountService.getPlayNotificationSounds());
} catch (RemoteException e) {
}
-
+
boolean vibrateSetting;
if (silentOrVibrateMode) {
vibrateSetting = ringerMode == AudioManager.RINGER_MODE_VIBRATE;
} else {
vibrateSetting = mAudioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER)
- == AudioManager.VIBRATE_SETTING_ON;
+ == AudioManager.VIBRATE_SETTING_ON;
}
if (vibrateSetting != mVibrate.isChecked() || force) {
mVibrate.setChecked(vibrateSetting);
}
-
+
int silentModeStreams = Settings.System.getInt(getContentResolver(),
Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);
- boolean isAlarmInclSilentMode = (silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0;
+ boolean isAlarmInclSilentMode = (silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0;
mSilent.setSummary(isAlarmInclSilentMode ?
R.string.silent_mode_incl_alarm_summary :
R.string.silent_mode_summary);
-
+
int animations = 0;
try {
mAnimationScales = mWindowManager.getAnimationScales();
@@ -290,7 +290,7 @@
mAnimations.setValueIndex(idx);
updateAnimationsSummary(mAnimations.getValue());
mAccelerometer.setChecked(Settings.System.getInt(
- getContentResolver(),
+ getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
}
@@ -306,7 +306,7 @@
}
}
}
-
+
private void setRingerMode(boolean silent, boolean vibrate) {
if (silent) {
mAudioManager.setRingerMode(vibrate ? AudioManager.RINGER_MODE_VIBRATE :
@@ -332,7 +332,7 @@
} else if (preference == mDtmfTone) {
Settings.System.putInt(getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING,
mDtmfTone.isChecked() ? 1 : 0);
-
+
} else if (preference == mSoundEffects) {
if (mSoundEffects.isChecked()) {
mAudioManager.loadSoundEffects();
@@ -345,7 +345,7 @@
} else if (preference == mHapticFeedback) {
Settings.System.putInt(getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED,
mHapticFeedback.isChecked() ? 1 : 0);
-
+
} else if (preference == mAccelerometer) {
Settings.System.putInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION,
@@ -356,8 +356,9 @@
Settings.System.NOTIFICATION_LIGHT_PULSE, value ? 1 : 0);
} else if (preference == mDockSettings) {
Intent i = new Intent(mDockIntent);
- i.setClass(this, DockSettingsActivity.class);
- startActivity(i);
+ i.setAction(DockEventReceiver.ACTION_DOCK_SHOW_UI);
+ i.setClass(this, DockEventReceiver.class);
+ sendBroadcast(i);
}
return true;
@@ -382,12 +383,12 @@
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist animation setting", e);
}
-
+
}
if (KEY_SCREEN_TIMEOUT.equals(key)) {
int value = Integer.parseInt((String) objValue);
try {
- Settings.System.putInt(getContentResolver(),
+ Settings.System.putInt(getContentResolver(),
SCREEN_OFF_TIMEOUT, value);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist screen timeout setting", e);