Merge "A2DP: Prevent NPE in getDevicesMatchingConnectionStates()"
diff --git a/src/com/android/bluetooth/a2dpsink/A2dpSinkStateMachine.java b/src/com/android/bluetooth/a2dpsink/A2dpSinkStateMachine.java
index d949952..7a5de62 100644
--- a/src/com/android/bluetooth/a2dpsink/A2dpSinkStateMachine.java
+++ b/src/com/android/bluetooth/a2dpsink/A2dpSinkStateMachine.java
@@ -622,10 +622,20 @@
switch (state) {
case AUDIO_STATE_STARTED:
mStreaming.obtainMessage(A2dpSinkStreamHandler.SRC_STR_START).sendToTarget();
+ if (mPlayingDevice == null) {
+ mPlayingDevice = device;
+ broadcastAudioState(device, BluetoothA2dpSink.STATE_NOT_PLAYING,
+ BluetoothA2dpSink.STATE_PLAYING);
+ }
break;
case AUDIO_STATE_REMOTE_SUSPEND:
case AUDIO_STATE_STOPPED:
mStreaming.obtainMessage(A2dpSinkStreamHandler.SRC_STR_STOP).sendToTarget();
+ if (mPlayingDevice != null) {
+ broadcastAudioState(device, BluetoothA2dpSink.STATE_PLAYING,
+ BluetoothA2dpSink.STATE_NOT_PLAYING);
+ mPlayingDevice = null;
+ }
break;
default:
loge("Audio State Device: " + device + " bad state: " + state);
diff --git a/src/com/android/bluetooth/btservice/Config.java b/src/com/android/bluetooth/btservice/Config.java
index ae65863..db79486 100644
--- a/src/com/android/bluetooth/btservice/Config.java
+++ b/src/com/android/bluetooth/btservice/Config.java
@@ -21,6 +21,7 @@
import android.content.Context;
import android.content.res.Resources;
import android.provider.Settings;
+import android.util.FeatureFlagUtils;
import android.util.Log;
import com.android.bluetooth.R;
@@ -117,6 +118,13 @@
ArrayList<Class> profiles = new ArrayList<>(PROFILE_SERVICES_AND_FLAGS.length);
for (ProfileConfig config : PROFILE_SERVICES_AND_FLAGS) {
boolean supported = resources.getBoolean(config.mSupported);
+
+ if (supported && (config.mClass == HearingAidService.class) && !FeatureFlagUtils
+ .isEnabled(ctx, FeatureFlagUtils.HEARING_AID_SETTINGS)) {
+ Log.v(TAG, "Feature Flag disables support for HearingAidService");
+ supported = false;
+ }
+
if (supported && !isProfileDisabled(ctx, config.mMask)) {
Log.v(TAG, "Adding " + config.mClass.getSimpleName());
profiles.add(config.mClass);
diff --git a/src/com/android/bluetooth/gatt/GattService.java b/src/com/android/bluetooth/gatt/GattService.java
index fd8551a..25c30d0 100644
--- a/src/com/android/bluetooth/gatt/GattService.java
+++ b/src/com/android/bluetooth/gatt/GattService.java
@@ -2457,7 +2457,7 @@
int latency;
// Link supervision timeout is measured in N * 10ms
- int timeout = 2000; // 20s
+ int timeout = 500; // 5s
switch (connectionPriority) {
case BluetoothGatt.CONNECTION_PRIORITY_HIGH:
diff --git a/src/com/android/bluetooth/sap/SapService.java b/src/com/android/bluetooth/sap/SapService.java
index 66e0b19..00eeca7 100644
--- a/src/com/android/bluetooth/sap/SapService.java
+++ b/src/com/android/bluetooth/sap/SapService.java
@@ -539,7 +539,7 @@
public boolean disconnect(BluetoothDevice device) {
boolean result = false;
synchronized (SapService.this) {
- if (getRemoteDevice().equals(device)) {
+ if (mRemoteDevice != null && mRemoteDevice.equals(device)) {
switch (mState) {
case BluetoothSap.STATE_CONNECTED:
closeConnectionSocket();
diff --git a/tests/robotests/Android.mk b/tests/robotests/Android.mk
index 47fbc4a..73f7706 100644
--- a/tests/robotests/Android.mk
+++ b/tests/robotests/Android.mk
@@ -12,7 +12,7 @@
LOCAL_JAVA_LIBRARIES := \
junit \
- platform-robolectric-3.6.1-prebuilt
+ platform-robolectric-3.6.2-prebuilt
LOCAL_INSTRUMENTATION_FOR := Bluetooth
LOCAL_MODULE := BluetoothRoboTests
@@ -37,4 +37,4 @@
LOCAL_INSTRUMENT_SOURCE_DIRS := $(dir $(LOCAL_PATH))../src
-include prebuilts/misc/common/robolectric/3.6.1/run_robotests.mk
+include prebuilts/misc/common/robolectric/3.6.2/run_robotests.mk