Loading res/xml/sound_settings.xml +7 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,13 @@ <!-- Do not nest these, or removals in code will break --> <PreferenceScreen android:key="dock_audio" android:title="@string/dock_audio_settings_title" /> android:title="@string/dock_audio_settings_title"> <CheckBoxPreference android:title="@string/bluetooth_dock_settings_a2dp" android:key="dock_audio_media_enabled" android:enabled="true" /> </PreferenceScreen> <CheckBoxPreference android:key="dock_sounds" Loading src/com/android/settings/SoundSettings.java +55 −19 Original line number Diff line number Diff line Loading @@ -72,8 +72,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements private static final String KEY_NOTIFICATION_SOUND = "notification_sound"; private static final String KEY_CATEGORY_CALLS = "category_calls_and_notification"; private static final String KEY_DOCK_CATEGORY = "dock_category"; private static final String KEY_AUDIO_SETTINGS = "dock_audio"; private static final String KEY_DOCK_AUDIO_SETTINGS = "dock_audio"; private static final String KEY_DOCK_SOUNDS = "dock_sounds"; private static final String KEY_DOCK_AUDIO_MEDIA_ENABLED = "dock_audio_media_enabled"; private static final String[] NEED_VOICE_CAPABILITY = { KEY_RINGTONE, KEY_DTMF_TONE, KEY_CATEGORY_CALLS, Loading @@ -99,6 +100,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements private Preference mDockAudioSettings; private CheckBoxPreference mDockSounds; private Intent mDockIntent; private CheckBoxPreference mDockAudioMediaEnabled; private Handler mHandler = new Handler() { public void handleMessage(Message msg) { Loading Loading @@ -306,17 +308,32 @@ public class SoundSettings extends SettingsPreferenceFragment implements int dockState = mDockIntent != null ? mDockIntent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0) : Intent.EXTRA_DOCK_STATE_UNDOCKED; if (dockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) { showDialog(DIALOG_NOT_DOCKED); } else { boolean isBluetooth = mDockIntent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; if (isBluetooth) { Intent i = new Intent(mDockIntent); i.setAction(DockEventReceiver.ACTION_DOCK_SHOW_UI); i.setClass(getActivity(), DockEventReceiver.class); getActivity().sendBroadcast(i); } else { PreferenceScreen ps = (PreferenceScreen)mDockAudioSettings; Bundle extras = ps.getExtras(); extras.putBoolean("checked", Settings.Global.getInt(getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0) == 1); super.onPreferenceTreeClick(ps, ps); } } } else if (preference == mDockSounds) { Settings.Global.putInt(getContentResolver(), Settings.Global.DOCK_SOUNDS_ENABLED, mDockSounds.isChecked() ? 1 : 0); } else if (preference == mDockAudioMediaEnabled) { Settings.Global.putInt(getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, mDockAudioMediaEnabled.isChecked() ? 1 : 0); } return true; } Loading Loading @@ -346,20 +363,20 @@ public class SoundSettings extends SettingsPreferenceFragment implements } private void initDockSettings() { if (needsDockSettings()) { ContentResolver resolver = getContentResolver(); mDockAudioSettings = findPreference(KEY_AUDIO_SETTINGS); if (needsDockSettings()) { mDockSounds = (CheckBoxPreference) findPreference(KEY_DOCK_SOUNDS); mDockSounds.setPersistent(false); mDockSounds.setChecked(Settings.Global.getInt(resolver, Settings.Global.DOCK_SOUNDS_ENABLED, 0) != 0); mDockAudioSettings = findPreference(KEY_DOCK_AUDIO_SETTINGS); mDockAudioSettings.setEnabled(false); } else { getPreferenceScreen().removePreference(findPreference(KEY_DOCK_CATEGORY)); getPreferenceScreen().removePreference(findPreference(KEY_AUDIO_SETTINGS)); getPreferenceScreen().removePreference(findPreference(KEY_DOCK_AUDIO_SETTINGS)); getPreferenceScreen().removePreference(findPreference(KEY_DOCK_SOUNDS)); Settings.Global.putInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 1); } } Loading @@ -367,15 +384,10 @@ public class SoundSettings extends SettingsPreferenceFragment implements if (mDockAudioSettings != null) { int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0); boolean isBluetooth = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; boolean isBluetooth = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; if (!isBluetooth) { // No dock audio if not on Bluetooth. mDockAudioSettings.setEnabled(false); } else { mDockAudioSettings.setEnabled(true); mDockIntent = intent; } if (dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED) { // remove undocked dialog if currently showing. Loading @@ -384,6 +396,30 @@ public class SoundSettings extends SettingsPreferenceFragment implements } catch (IllegalArgumentException iae) { // Maybe it was already dismissed } if (isBluetooth) { mDockAudioSettings.setEnabled(true); } else { if (dockState == Intent.EXTRA_DOCK_STATE_LE_DESK) { ContentResolver resolver = getContentResolver(); mDockAudioSettings.setEnabled(true); if (Settings.Global.getInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, -1) == -1) { Settings.Global.putInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0); } mDockAudioMediaEnabled = (CheckBoxPreference) findPreference(KEY_DOCK_AUDIO_MEDIA_ENABLED); mDockAudioMediaEnabled.setPersistent(false); mDockAudioMediaEnabled.setChecked( Settings.Global.getInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0) != 0); } else { mDockAudioSettings.setEnabled(false); } } } else { mDockAudioSettings.setEnabled(false); } } } Loading Loading
res/xml/sound_settings.xml +7 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,13 @@ <!-- Do not nest these, or removals in code will break --> <PreferenceScreen android:key="dock_audio" android:title="@string/dock_audio_settings_title" /> android:title="@string/dock_audio_settings_title"> <CheckBoxPreference android:title="@string/bluetooth_dock_settings_a2dp" android:key="dock_audio_media_enabled" android:enabled="true" /> </PreferenceScreen> <CheckBoxPreference android:key="dock_sounds" Loading
src/com/android/settings/SoundSettings.java +55 −19 Original line number Diff line number Diff line Loading @@ -72,8 +72,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements private static final String KEY_NOTIFICATION_SOUND = "notification_sound"; private static final String KEY_CATEGORY_CALLS = "category_calls_and_notification"; private static final String KEY_DOCK_CATEGORY = "dock_category"; private static final String KEY_AUDIO_SETTINGS = "dock_audio"; private static final String KEY_DOCK_AUDIO_SETTINGS = "dock_audio"; private static final String KEY_DOCK_SOUNDS = "dock_sounds"; private static final String KEY_DOCK_AUDIO_MEDIA_ENABLED = "dock_audio_media_enabled"; private static final String[] NEED_VOICE_CAPABILITY = { KEY_RINGTONE, KEY_DTMF_TONE, KEY_CATEGORY_CALLS, Loading @@ -99,6 +100,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements private Preference mDockAudioSettings; private CheckBoxPreference mDockSounds; private Intent mDockIntent; private CheckBoxPreference mDockAudioMediaEnabled; private Handler mHandler = new Handler() { public void handleMessage(Message msg) { Loading Loading @@ -306,17 +308,32 @@ public class SoundSettings extends SettingsPreferenceFragment implements int dockState = mDockIntent != null ? mDockIntent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0) : Intent.EXTRA_DOCK_STATE_UNDOCKED; if (dockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) { showDialog(DIALOG_NOT_DOCKED); } else { boolean isBluetooth = mDockIntent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; if (isBluetooth) { Intent i = new Intent(mDockIntent); i.setAction(DockEventReceiver.ACTION_DOCK_SHOW_UI); i.setClass(getActivity(), DockEventReceiver.class); getActivity().sendBroadcast(i); } else { PreferenceScreen ps = (PreferenceScreen)mDockAudioSettings; Bundle extras = ps.getExtras(); extras.putBoolean("checked", Settings.Global.getInt(getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0) == 1); super.onPreferenceTreeClick(ps, ps); } } } else if (preference == mDockSounds) { Settings.Global.putInt(getContentResolver(), Settings.Global.DOCK_SOUNDS_ENABLED, mDockSounds.isChecked() ? 1 : 0); } else if (preference == mDockAudioMediaEnabled) { Settings.Global.putInt(getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, mDockAudioMediaEnabled.isChecked() ? 1 : 0); } return true; } Loading Loading @@ -346,20 +363,20 @@ public class SoundSettings extends SettingsPreferenceFragment implements } private void initDockSettings() { if (needsDockSettings()) { ContentResolver resolver = getContentResolver(); mDockAudioSettings = findPreference(KEY_AUDIO_SETTINGS); if (needsDockSettings()) { mDockSounds = (CheckBoxPreference) findPreference(KEY_DOCK_SOUNDS); mDockSounds.setPersistent(false); mDockSounds.setChecked(Settings.Global.getInt(resolver, Settings.Global.DOCK_SOUNDS_ENABLED, 0) != 0); mDockAudioSettings = findPreference(KEY_DOCK_AUDIO_SETTINGS); mDockAudioSettings.setEnabled(false); } else { getPreferenceScreen().removePreference(findPreference(KEY_DOCK_CATEGORY)); getPreferenceScreen().removePreference(findPreference(KEY_AUDIO_SETTINGS)); getPreferenceScreen().removePreference(findPreference(KEY_DOCK_AUDIO_SETTINGS)); getPreferenceScreen().removePreference(findPreference(KEY_DOCK_SOUNDS)); Settings.Global.putInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 1); } } Loading @@ -367,15 +384,10 @@ public class SoundSettings extends SettingsPreferenceFragment implements if (mDockAudioSettings != null) { int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0); boolean isBluetooth = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; boolean isBluetooth = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; if (!isBluetooth) { // No dock audio if not on Bluetooth. mDockAudioSettings.setEnabled(false); } else { mDockAudioSettings.setEnabled(true); mDockIntent = intent; } if (dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED) { // remove undocked dialog if currently showing. Loading @@ -384,6 +396,30 @@ public class SoundSettings extends SettingsPreferenceFragment implements } catch (IllegalArgumentException iae) { // Maybe it was already dismissed } if (isBluetooth) { mDockAudioSettings.setEnabled(true); } else { if (dockState == Intent.EXTRA_DOCK_STATE_LE_DESK) { ContentResolver resolver = getContentResolver(); mDockAudioSettings.setEnabled(true); if (Settings.Global.getInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, -1) == -1) { Settings.Global.putInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0); } mDockAudioMediaEnabled = (CheckBoxPreference) findPreference(KEY_DOCK_AUDIO_MEDIA_ENABLED); mDockAudioMediaEnabled.setPersistent(false); mDockAudioMediaEnabled.setChecked( Settings.Global.getInt(resolver, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0) != 0); } else { mDockAudioSettings.setEnabled(false); } } } else { mDockAudioSettings.setEnabled(false); } } } Loading