summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/values/config.xml3
-rw-r--r--src/com/android/car/messenger/MessengerDelegate.java19
-rw-r--r--src/com/android/car/messenger/MessengerService.java4
-rw-r--r--src/com/android/car/messenger/bluetooth/BluetoothMonitor.java37
-rw-r--r--tests/robotests/src/com/android/car/messenger/bluetooth/BluetoothMonitorTest.java4
5 files changed, 20 insertions, 47 deletions
diff --git a/res/values/config.xml b/res/values/config.xml
index 0696f07..56cb667 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -18,7 +18,4 @@
<!-- Whether existing messages should be loaded. Recommended to turn off if head-unit's and
BT-paired phone's clocks are not synced.-->
<bool name="config_loadExistingMessages">false</bool>
- <!-- Whether app should attempt to reconnect to Bluetooth MAP profile, once MAP is
- disconnected. -->
- <bool name="config_reconnectToMap">true</bool>
</resources>
diff --git a/src/com/android/car/messenger/MessengerDelegate.java b/src/com/android/car/messenger/MessengerDelegate.java
index 22eb30a..926e3bc 100644
--- a/src/com/android/car/messenger/MessengerDelegate.java
+++ b/src/com/android/car/messenger/MessengerDelegate.java
@@ -55,7 +55,7 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe
private final Context mContext;
@GuardedBy("mMapClientLock")
private BluetoothMapClient mBluetoothMapClient;
- private NotificationManager mNotificationManager;
+ private final NotificationManager mNotificationManager;
private final SmsDatabaseHandler mSmsDatabaseHandler;
private boolean mShouldLoadExistingMessages;
@@ -142,10 +142,6 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe
return;
}
- if (mBluetoothMapClient != null) {
- mBluetoothMapClient.close();
- }
-
mBluetoothMapClient = client;
connectedDevices = mBluetoothMapClient.getConnectedDevices();
}
@@ -157,14 +153,10 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe
}
@Override
- public void onMapDisconnected(int profile) {
+ public void onMapDisconnected() {
L.d(TAG, "Disconnected from BluetoothMapClient");
cleanupMessagesAndNotifications(key -> true);
synchronized (mMapClientLock) {
- BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- if (adapter != null) {
- adapter.closeProfileProxy(BluetoothProfile.MAP_CLIENT, mBluetoothMapClient);
- }
mBluetoothMapClient = null;
}
}
@@ -322,13 +314,8 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe
return 0;
}
- protected void cleanup() {
+ protected void onDestroy() {
cleanupMessagesAndNotifications(key -> true);
- synchronized (mMapClientLock) {
- if (mBluetoothMapClient != null) {
- mBluetoothMapClient.close();
- }
- }
}
private Notification createNotification(
diff --git a/src/com/android/car/messenger/MessengerService.java b/src/com/android/car/messenger/MessengerService.java
index 3ea681f..0b0e4e4 100644
--- a/src/com/android/car/messenger/MessengerService.java
+++ b/src/com/android/car/messenger/MessengerService.java
@@ -136,8 +136,8 @@ public class MessengerService extends Service {
public void onDestroy() {
super.onDestroy();
L.d(TAG, "onDestroy");
- mMessengerDelegate.cleanup();
- mBluetoothMonitor.cleanup();
+ mMessengerDelegate.onDestroy();
+ mBluetoothMonitor.onDestroy();
}
@Override
diff --git a/src/com/android/car/messenger/bluetooth/BluetoothMonitor.java b/src/com/android/car/messenger/bluetooth/BluetoothMonitor.java
index 0015ebc..095474f 100644
--- a/src/com/android/car/messenger/bluetooth/BluetoothMonitor.java
+++ b/src/com/android/car/messenger/bluetooth/BluetoothMonitor.java
@@ -9,15 +9,10 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.res.Resources.NotFoundException;
import android.os.Parcelable;
-
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
-
-import com.android.car.messenger.R;
import com.android.car.messenger.log.L;
-
import java.util.HashSet;
import java.util.Set;
@@ -33,12 +28,12 @@ public class BluetoothMonitor {
private final BluetoothSdpReceiver mBluetoothSdpReceiver;
private final MapDeviceMonitor mMapDeviceMonitor;
private final BluetoothProfile.ServiceListener mMapServiceListener;
+ private BluetoothMapClient mBluetoothMapClient;
private final Set<OnBluetoothEventListener> mListeners;
public BluetoothMonitor(@NonNull Context context) {
mContext = context;
-
mBluetoothMapReceiver = new BluetoothMapReceiver();
mBluetoothSdpReceiver = new BluetoothSdpReceiver();
mMapDeviceMonitor = new MapDeviceMonitor();
@@ -52,7 +47,7 @@ public class BluetoothMonitor {
@Override
public void onServiceDisconnected(int profile) {
L.d(TAG, "Disconnected from MAP service!");
- onMapDisconnected(profile);
+ onMapDisconnected();
}
};
mListeners = new HashSet<>();
@@ -119,10 +114,8 @@ public class BluetoothMonitor {
/**
* Callback issued when a MAP client has been disconnected.
- *
- * @param profile see {@link BluetoothProfile.ServiceListener#onServiceDisconnected(int)}
*/
- void onMapDisconnected(int profile);
+ void onMapDisconnected();
/**
* Callback issued when a new SDP record has been detected.
@@ -150,22 +143,13 @@ public class BluetoothMonitor {
}
private void onMapConnected(BluetoothMapClient client) {
+ mBluetoothMapClient = client;
mListeners.forEach(listener -> listener.onMapConnected(client));
}
- private void onMapDisconnected(int profile) {
- mListeners.forEach(listener -> listener.onMapDisconnected(profile));
- boolean shouldReconnectToMap = false;
- try {
- shouldReconnectToMap = mContext.getResources().getBoolean(
- R.bool.config_loadExistingMessages);
- } catch (NotFoundException e) {
- // Should only happen for robolectric unit tests
- L.e(TAG, e, "Could not find loadExistingMessages config");
- }
- if (shouldReconnectToMap) {
- connectToMap();
- }
+ private void onMapDisconnected() {
+ mBluetoothMapClient = null;
+ mListeners.forEach(listener -> listener.onMapDisconnected());
}
private void onSdpRecord(BluetoothDevice device, boolean supportsReply) {
@@ -193,7 +177,12 @@ public class BluetoothMonitor {
/**
* Performs {@link Context} related cleanup (such as unregistering from receivers).
*/
- public void cleanup() {
+ public void onDestroy() {
+ BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ if (adapter != null) {
+ adapter.closeProfileProxy(BluetoothProfile.MAP_CLIENT, mBluetoothMapClient);
+ }
+ onMapDisconnected();
mListeners.clear();
mBluetoothMapReceiver.unregisterReceivers();
mBluetoothSdpReceiver.unregisterReceivers();
diff --git a/tests/robotests/src/com/android/car/messenger/bluetooth/BluetoothMonitorTest.java b/tests/robotests/src/com/android/car/messenger/bluetooth/BluetoothMonitorTest.java
index 6b9e1af..addb69f 100644
--- a/tests/robotests/src/com/android/car/messenger/bluetooth/BluetoothMonitorTest.java
+++ b/tests/robotests/src/com/android/car/messenger/bluetooth/BluetoothMonitorTest.java
@@ -42,7 +42,7 @@ public class BluetoothMonitorTest {
verify(mockBluetoothEventListener).onMapConnected(mockMapClient);
mServiceListener.onServiceDisconnected(BluetoothProfile.MAP_CLIENT);
- verify(mockBluetoothEventListener).onMapDisconnected(BluetoothProfile.MAP_CLIENT);
+ verify(mockBluetoothEventListener).onMapDisconnected();
}
@Test
@@ -50,7 +50,7 @@ public class BluetoothMonitorTest {
assertThat(mBluetoothMonitor.registerListener(mockBluetoothEventListener)).isFalse();
assertThat(mBluetoothMonitor.unregisterListener(mockBluetoothEventListener)).isTrue();
assertThat(mBluetoothMonitor.registerListener(mockBluetoothEventListener)).isTrue();
- mBluetoothMonitor.cleanup();
+ mBluetoothMonitor.onDestroy();
assertThat(mBluetoothMonitor.registerListener(mockBluetoothEventListener)).isTrue();
}
}