diff --git a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java
index 20be6bc1d..eb7a659f0 100644
--- a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java
+++ b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java
@@ -23,9 +23,7 @@ import android.bluetooth.BluetoothGattCharacteristic;
import android.bluetooth.BluetoothGattDescriptor;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
-import android.os.Bundle;
import android.os.Handler;
-import android.os.Message;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -42,10 +40,10 @@ import de.dennisguse.opentracks.content.sensor.SensorState;
public class BluetoothConnectionManager {
// Message types sent to handler
- static final int MESSAGE_DEVICE_NAME = 1;
- static final int MESSAGE_READ = 2;
-
- static final String KEY_DEVICE_NAME = "device_name";
+ static final int MESSAGE_CONNECTING = 1;
+ static final int MESSAGE_CONNECTED = 2;
+ static final int MESSAGE_READ = 3;
+ static final int MESSAGE_DISCONNECTED = 4;
private static final UUID HEART_RATE_SERVICE_UUID = new UUID(0x180D00001000L, 0x800000805f9b34fbL);
private static final UUID HEART_RATE_MEASUREMENT_CHAR_UUID = new UUID(0x2A3700001000L, 0x800000805f9b34fbL);
@@ -68,18 +66,15 @@ public class BluetoothConnectionManager {
case BluetoothProfile.STATE_CONNECTING:
Log.d(TAG, "Connecting to sensor: " + gatt.getDevice());
setState(SensorState.CONNECTING);
+
+ handler.obtainMessage(MESSAGE_CONNECTING, gatt.getDevice().getName()).sendToTarget();
case BluetoothProfile.STATE_CONNECTED:
Log.d(TAG, "Connected to sensor: " + gatt.getDevice());
setState(SensorState.CONNECTED);
gatt.discoverServices();
- //Inform about status change
- Message message = handler.obtainMessage(MESSAGE_DEVICE_NAME);
- Bundle bundle = new Bundle();
- bundle.putString(KEY_DEVICE_NAME, gatt.getDevice().getName());
- message.setData(bundle);
- handler.sendMessage(message);
+ handler.obtainMessage(MESSAGE_CONNECTED, gatt.getDevice().getName()).sendToTarget();
break;
case BluetoothProfile.STATE_DISCONNECTING:
Log.d(TAG, "Disconnecting from sensor: " + gatt.getDevice());
@@ -88,6 +83,8 @@ public class BluetoothConnectionManager {
case BluetoothProfile.STATE_DISCONNECTED:
Log.d(TAG, "Disconnected from sensor: " + gatt.getDevice());
setState(SensorState.DISCONNECTED);
+
+ handler.obtainMessage(MESSAGE_DISCONNECTED, gatt.getDevice().getName()).sendToTarget();
}
}
diff --git a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java
index edfed6733..ab2719a94 100644
--- a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java
+++ b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java
@@ -49,10 +49,13 @@ public class BluetoothRemoteSensorManager extends RemoteSensorManager {
private final Handler messageHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message message) {
+ String toastMessage;
switch (message.what) {
- case BluetoothConnectionManager.MESSAGE_DEVICE_NAME:
- String deviceName = message.getData().getString(BluetoothConnectionManager.KEY_DEVICE_NAME);
- String toastMessage = context.getString(R.string.settings_sensor_connected, deviceName);
+ case BluetoothConnectionManager.MESSAGE_CONNECTING:
+ //Ignore for now.
+ break;
+ case BluetoothConnectionManager.MESSAGE_CONNECTED:
+ toastMessage = context.getString(R.string.settings_sensor_connected, message.obj);
Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show();
break;
case BluetoothConnectionManager.MESSAGE_READ:
@@ -63,7 +66,12 @@ public class BluetoothRemoteSensorManager extends RemoteSensorManager {
sensorDataSet = (SensorDataSet) message.obj;
}
break;
+ case BluetoothConnectionManager.MESSAGE_DISCONNECTED:
+ toastMessage = context.getString(R.string.settings_sensor_disconnected, message.obj);
+ Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show();
+ break;
default:
+ Log.e(TAG, "Got an undefined case. Please check.");
break;
}
}
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 902c61e1e..5ad799f8f 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1278,6 +1278,11 @@ limitations under the License.
%1$s sensor name. E.g., 'Polar Bluetooth'.">
Connected to %1$s
+
+ Disconnected from %1$s
+