diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 3984c214bf7..2e4738bdfcb 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -318,7 +318,8 @@ - 1 (Default) + Use System Default: %1$d + 1 2 3 4 @@ -326,7 +327,8 @@ - + + 1 2 3 diff --git a/src/com/android/settings/development/DevelopmentSettings.java b/src/com/android/settings/development/DevelopmentSettings.java index 2912e174b60..078489efeb9 100644 --- a/src/com/android/settings/development/DevelopmentSettings.java +++ b/src/com/android/settings/development/DevelopmentSettings.java @@ -901,6 +901,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment } writeOverlayDisplayDevicesOptions(null); writeAppProcessLimitOptions(null); + writeBluetoothMaxConnectedAudioDevices(""); mHaveDebugSettings = false; updateAllOptions(); mDontPokeProperties = false; @@ -1884,12 +1885,44 @@ public class DevelopmentSettings extends RestrictedSettingsFragment mBluetoothSelectA2dpLdacPlaybackQuality.setValue(values[index]); mBluetoothSelectA2dpLdacPlaybackQuality.setSummary(summaries[index]); - // Init the maximum connected devices - Default - values = getResources().getStringArray(R.array.bluetooth_max_connected_audio_devices_values); - summaries = getResources().getStringArray(R.array.bluetooth_max_connected_audio_devices); - index = 0; - mBluetoothSelectMaxConnectedAudioDevices.setValue(values[index]); - mBluetoothSelectMaxConnectedAudioDevices.setSummary(summaries[index]); + // Init the maximum connected devices + initBluetoothMaxConnectedAudioDevicesPreference(); + updateBluetoothMaxConnectedAudioDevicesPreference(); + } + + private void initBluetoothMaxConnectedAudioDevicesPreference() { + int defaultMaxConnectedAudioDevices = getResources().getInteger( + com.android.internal.R.integer.config_bluetooth_max_connected_audio_devices); + final CharSequence[] entries = mBluetoothSelectMaxConnectedAudioDevices.getEntries(); + entries[0] = String.format(entries[0].toString(), defaultMaxConnectedAudioDevices); + mBluetoothSelectMaxConnectedAudioDevices.setEntries(entries); + } + + private void updateBluetoothMaxConnectedAudioDevicesPreference() { + final CharSequence[] entries = mBluetoothSelectMaxConnectedAudioDevices.getEntries(); + final String currentValue = + SystemProperties.get(BLUETOOTH_MAX_CONNECTED_AUDIO_DEVICES_PROPERTY); + int index = 0; + if (!currentValue.isEmpty()) { + index = mBluetoothSelectMaxConnectedAudioDevices.findIndexOfValue(currentValue); + if (index < 0) { + // Reset property value when value is illegal + SystemProperties.set(BLUETOOTH_MAX_CONNECTED_AUDIO_DEVICES_PROPERTY, ""); + index = 0; + } + } + mBluetoothSelectMaxConnectedAudioDevices.setValueIndex(index); + mBluetoothSelectMaxConnectedAudioDevices.setSummary(entries[index]); + } + + private void writeBluetoothMaxConnectedAudioDevices(Object newValue) { + String newValueString = newValue.toString(); + if (mBluetoothSelectMaxConnectedAudioDevices.findIndexOfValue(newValueString) <= 0) { + // Reset property value when default is chosen or when value is illegal + newValueString = ""; + } + SystemProperties.set(BLUETOOTH_MAX_CONNECTED_AUDIO_DEVICES_PROPERTY, newValueString); + updateBluetoothMaxConnectedAudioDevicesPreference(); } private void writeBluetoothAvrcpVersion(Object newValue) { @@ -2058,15 +2091,6 @@ public class DevelopmentSettings extends RestrictedSettingsFragment } } - private void writeBluetoothMaxConnectedAudioDevices(Object newValue) { - SystemProperties.set(BLUETOOTH_MAX_CONNECTED_AUDIO_DEVICES_PROPERTY, newValue.toString()); - int index = mBluetoothSelectMaxConnectedAudioDevices.findIndexOfValue(newValue.toString()); - if (index >= 0) { - String[] titles = getResources().getStringArray(R.array.bluetooth_max_connected_audio_devices); - mBluetoothSelectMaxConnectedAudioDevices.setSummary(titles[index]); - } - } - private void writeBluetoothConfigurationOption(Preference preference, Object newValue) { String[] summaries;