AVRCP version interop pereference (2/3)

Add a mechanism to allow the user to select the AVRCP version broadcasted
through SDP in the developer options. This helps solve some interoperability
issues such as with Honda Carkits where broadcasting AVRCP version 1.6 causes
media metadata to fail.

Bug: 35956792
Test: Select AVRCP version through developer option
Change-Id: I7d4b1bd23342d1a96ffdf08bb7d6d3c5e5fedca6
This commit is contained in:
Ajay Panicker
2017-03-20 11:34:54 -07:00
parent fb8e0dc545
commit da2723a5ae
2 changed files with 32 additions and 0 deletions

View File

@@ -203,7 +203,10 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
"bluetooth_disable_absolute_volume";
private static final String BLUETOOTH_DISABLE_ABSOLUTE_VOLUME_PROPERTY =
"persist.bluetooth.disableabsvol";
private static final String BLUETOOTH_AVRCP_VERSION_PROPERTY =
"persist.bluetooth.avrcpversion";
private static final String BLUETOOTH_SELECT_AVRCP_VERSION_KEY = "bluetooth_select_avrcp_version";
private static final String BLUETOOTH_SELECT_A2DP_CODEC_KEY = "bluetooth_select_a2dp_codec";
private static final String BLUETOOTH_SELECT_A2DP_SAMPLE_RATE_KEY = "bluetooth_select_a2dp_sample_rate";
private static final String BLUETOOTH_SELECT_A2DP_BITS_PER_SAMPLE_KEY = "bluetooth_select_a2dp_bits_per_sample";
@@ -280,6 +283,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
private BluetoothA2dp mBluetoothA2dp;
private final Object mBluetoothA2dpLock = new Object();
private ListPreference mBluetoothSelectAvrcpVersion;
private ListPreference mBluetoothSelectA2dpCodec;
private ListPreference mBluetoothSelectA2dpSampleRate;
private ListPreference mBluetoothSelectA2dpBitsPerSample;
@@ -494,6 +498,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
mWebViewMultiprocess = findAndInitSwitchPref(WEBVIEW_MULTIPROCESS_KEY);
mBluetoothDisableAbsVolume = findAndInitSwitchPref(BLUETOOTH_DISABLE_ABSOLUTE_VOLUME_KEY);
mBluetoothSelectAvrcpVersion = addListPreference(BLUETOOTH_SELECT_AVRCP_VERSION_KEY);
mBluetoothSelectA2dpCodec = addListPreference(BLUETOOTH_SELECT_A2DP_CODEC_KEY);
mBluetoothSelectA2dpSampleRate = addListPreference(BLUETOOTH_SELECT_A2DP_SAMPLE_RATE_KEY);
mBluetoothSelectA2dpBitsPerSample = addListPreference(BLUETOOTH_SELECT_A2DP_BITS_PER_SAMPLE_KEY);
@@ -1786,6 +1791,14 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
String[] summaries;
int index;
// Init the AVRCP Version - Default
values = getResources().getStringArray(R.array.bluetooth_avrcp_version_values);
summaries = getResources().getStringArray(R.array.bluetooth_avrcp_versions);
String value = SystemProperties.get(BLUETOOTH_AVRCP_VERSION_PROPERTY);
index = mBluetoothSelectAvrcpVersion.findIndexOfValue(value);
mBluetoothSelectAvrcpVersion.setValue(values[index]);
mBluetoothSelectAvrcpVersion.setSummary(summaries[index]);
// Init the Codec Type - Default
values = getResources().getStringArray(R.array.bluetooth_a2dp_codec_values);
summaries = getResources().getStringArray(R.array.bluetooth_a2dp_codec_summaries);
@@ -1822,6 +1835,15 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
mBluetoothSelectA2dpLdacPlaybackQuality.setSummary(summaries[index]);
}
private void writeBluetoothAvrcpVersion(Object newValue) {
SystemProperties.set(BLUETOOTH_AVRCP_VERSION_PROPERTY, newValue.toString());
int index = mBluetoothSelectAvrcpVersion.findIndexOfValue(newValue.toString());
if (index >= 0) {
String[] titles = getResources().getStringArray(R.array.bluetooth_avrcp_versions);
mBluetoothSelectAvrcpVersion.setSummary(titles[index]);
}
}
private void updateBluetoothA2dpConfigurationValues() {
int index;
String[] summaries;
@@ -2528,6 +2550,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
updateHdcpValues();
pokeSystemProperties();
return true;
} else if (preference == mBluetoothSelectAvrcpVersion) {
writeBluetoothAvrcpVersion(newValue);
return true;
} else if ((preference == mBluetoothSelectA2dpCodec) ||
(preference == mBluetoothSelectA2dpSampleRate) ||
(preference == mBluetoothSelectA2dpBitsPerSample) ||