diff options
| -rw-r--r-- | core/java/android/bluetooth/BluetoothA2dp.java | 45 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothCodecConfig.java | 22 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetoothA2dp.aidl | 2 | ||||
| -rw-r--r-- | packages/SettingsLib/res/values/arrays.xml | 6 |
4 files changed, 74 insertions, 1 deletions
diff --git a/core/java/android/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java index 4960159db212..08e5a6ef4873 100644 --- a/core/java/android/bluetooth/BluetoothA2dp.java +++ b/core/java/android/bluetooth/BluetoothA2dp.java @@ -611,6 +611,51 @@ public final class BluetoothA2dp implements BluetoothProfile { } /** + * Enables the optional codecs. + * + * @hide + */ + public void enableOptionalCodecs() { + if (DBG) Log.d(TAG, "enableOptionalCodecs"); + enableDisableOptionalCodecs(true); + } + + /** + * Disables the optional codecs. + * + * @hide + */ + public void disableOptionalCodecs() { + if (DBG) Log.d(TAG, "disableOptionalCodecs"); + enableDisableOptionalCodecs(false); + } + + /** + * Enables or disables the optional codecs. + * + * @param enable if true, enable the optional codecs, other disable them + */ + private void enableDisableOptionalCodecs(boolean enable) { + try { + mServiceLock.readLock().lock(); + if (mService != null && isEnabled()) { + if (enable) { + mService.enableOptionalCodecs(); + } else { + mService.disableOptionalCodecs(); + } + } + if (mService == null) Log.w(TAG, "Proxy not attached to service"); + return; + } catch (RemoteException e) { + Log.e(TAG, "Error talking to BT service in enableDisableOptionalCodecs()", e); + return; + } finally { + mServiceLock.readLock().unlock(); + } + } + + /** * Helper for converting a state to a string. * * For debug use only - strings are not internationalized. diff --git a/core/java/android/bluetooth/BluetoothCodecConfig.java b/core/java/android/bluetooth/BluetoothCodecConfig.java index 176e48fb6e08..d5e142981013 100644 --- a/core/java/android/bluetooth/BluetoothCodecConfig.java +++ b/core/java/android/bluetooth/BluetoothCodecConfig.java @@ -63,7 +63,7 @@ public final class BluetoothCodecConfig implements Parcelable { public static final int CHANNEL_MODE_STEREO = 0x1 << 1; private final int mCodecType; - private final int mCodecPriority; + private int mCodecPriority; private final int mSampleRate; private final int mBitsPerSample; private final int mChannelMode; @@ -280,6 +280,15 @@ public final class BluetoothCodecConfig implements Parcelable { } /** + * Checks whether the codec is mandatory. + * + * @return true if the codec is mandatory, otherwise false. + */ + public boolean isMandatoryCodec() { + return mCodecType == SOURCE_CODEC_TYPE_SBC; + } + + /** * Gets the codec selection priority. * The codec selection priority is relative to other codecs: larger value * means higher priority. If 0, reset to default. @@ -291,6 +300,17 @@ public final class BluetoothCodecConfig implements Parcelable { } /** + * Sets the codec selection priority. + * The codec selection priority is relative to other codecs: larger value + * means higher priority. If 0, reset to default. + * + * @param codecPriority the codec priority + */ + public void setCodecPriority(int codecPriority) { + mCodecPriority = codecPriority; + } + + /** * Gets the codec sample rate. The value can be a bitmask with all * supported sample rates: * {@link android.bluetooth.BluetoothCodecConfig#SAMPLE_RATE_NONE} or diff --git a/core/java/android/bluetooth/IBluetoothA2dp.aidl b/core/java/android/bluetooth/IBluetoothA2dp.aidl index dbb5b7d7944b..a775a1f90b8e 100644 --- a/core/java/android/bluetooth/IBluetoothA2dp.aidl +++ b/core/java/android/bluetooth/IBluetoothA2dp.aidl @@ -40,4 +40,6 @@ interface IBluetoothA2dp { boolean isA2dpPlaying(in BluetoothDevice device); BluetoothCodecStatus getCodecStatus(); oneway void setCodecConfigPreference(in BluetoothCodecConfig codecConfig); + oneway void enableOptionalCodecs(); + oneway void disableOptionalCodecs(); } diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml index 950ed3eeec39..13ec72213274 100644 --- a/packages/SettingsLib/res/values/arrays.xml +++ b/packages/SettingsLib/res/values/arrays.xml @@ -124,6 +124,8 @@ <item>aptX</item> <item>aptX HD</item> <item>LDAC</item> + <item>Enable Optional Codecs</item> + <item>Disable Optional Codecs</item> </string-array> <!-- Values for Bluetooth Audio Codec selection preference. --> @@ -134,6 +136,8 @@ <item>2</item> <item>3</item> <item>4</item> + <item>5</item> + <item>6</item> </string-array> <!-- Summaries for Bluetooth Audio Codec selection preference. [CHAR LIMIT=50]--> @@ -144,6 +148,8 @@ <item>aptX</item> <item>aptX HD</item> <item>LDAC</item> + <item>Enable Optional Codecs</item> + <item>Disable Optional Codecs</item> </string-array> <!-- Titles for Bluetooth Audio Codec Sample Rate selection preference. [CHAR LIMIT=50] --> |