Merge cherrypicks of [2860986, 2860116, 2860927, 2860463, 2861006, 2861007, 2860788, 2860789, 2860790, 2860791, 2860970, 2860792, 2861008, 2860117, 2860971] into oc-r2-release
Change-Id: I389d6327d64a80e88070b9cac4e6d8a04a7c262e
diff --git a/src/com/android/bluetooth/a2dp/A2dpService.java b/src/com/android/bluetooth/a2dp/A2dpService.java
index 187a139..bdab866 100755
--- a/src/com/android/bluetooth/a2dp/A2dpService.java
+++ b/src/com/android/bluetooth/a2dp/A2dpService.java
@@ -48,7 +48,9 @@
private A2dpStateMachine mStateMachine;
private Avrcp mAvrcp;
- private BroadcastReceiver mConnectionStateChangedReceiver = new BroadcastReceiver() {
+ private BroadcastReceiver mConnectionStateChangedReceiver = null;
+
+ private class CodecSupportReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (!BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED.equals(intent.getAction())) {
@@ -108,9 +110,12 @@
mAvrcp = Avrcp.make(this);
mStateMachine = A2dpStateMachine.make(this, this);
setA2dpService(this);
- IntentFilter filter = new IntentFilter();
- filter.addAction(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED);
- registerReceiver(mConnectionStateChangedReceiver, filter);
+ if (mConnectionStateChangedReceiver == null) {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED);
+ mConnectionStateChangedReceiver = new CodecSupportReceiver();
+ registerReceiver(mConnectionStateChangedReceiver, filter);
+ }
return true;
}
@@ -125,9 +130,13 @@
}
protected boolean cleanup() {
- unregisterReceiver(mConnectionStateChangedReceiver);
- if (mStateMachine!= null) {
+ if (mConnectionStateChangedReceiver != null) {
+ unregisterReceiver(mConnectionStateChangedReceiver);
+ mConnectionStateChangedReceiver = null;
+ }
+ if (mStateMachine != null) {
mStateMachine.cleanup();
+ mStateMachine = null;
}
if (mAvrcp != null) {
mAvrcp.cleanup();