forked from upstream-mirrors/OpenTracks
Bugfix: a BLE sensor disconnect should only replace the aggregator.
Fixes #1799.
This commit is contained in:
@@ -148,6 +148,7 @@ public class BluetoothConnectionManager implements Driver {
|
|||||||
Log.w(TAG, "NONE: going to disconnect");
|
Log.w(TAG, "NONE: going to disconnect");
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
disconnect();
|
disconnect();
|
||||||
|
observer.onRemove(sensorHandler.createEmptySensorData(null, null));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,11 @@ public class GainManager implements SensorConnector {
|
|||||||
|
|
||||||
String address = PreferencesUtils.getBarometerSensorAddress();
|
String address = PreferencesUtils.getBarometerSensorAddress();
|
||||||
switch (PreferencesUtils.getSensorType(address)) {
|
switch (PreferencesUtils.getSensorType(address)) {
|
||||||
case NONE -> driver = null;
|
case NONE -> {
|
||||||
|
driver = null;
|
||||||
|
listener.onRemove(new AggregatorBarometer(null, null));
|
||||||
|
return;
|
||||||
|
}
|
||||||
case INTERNAL -> driver = new BarometerInternal(listener);
|
case INTERNAL -> driver = new BarometerInternal(listener);
|
||||||
case REMOTE -> driver =
|
case REMOTE -> driver =
|
||||||
new BluetoothConnectionManager(
|
new BluetoothConnectionManager(
|
||||||
@@ -63,9 +67,7 @@ public class GainManager implements SensorConnector {
|
|||||||
default -> throw new RuntimeException("Not implemented");
|
default -> throw new RuntimeException("Not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (driver != null) {
|
driver.connect(context, handler, address);
|
||||||
driver.connect(context, handler, address);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDisconnect() {
|
private void onDisconnect() {
|
||||||
|
|||||||
@@ -28,20 +28,26 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
|
|||||||
private final SensorDataChangedObserver listener = new SensorDataChangedObserver() {
|
private final SensorDataChangedObserver listener = new SensorDataChangedObserver() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnect(Aggregator<?, ?> sensorData) {
|
public void onConnect(Aggregator<?, ?> aggregator) {
|
||||||
sensorDataSet.add(sensorData);
|
sensorDataSet.add(aggregator);
|
||||||
observer.onChange(new SensorDataSet(sensorDataSet));
|
observer.onChange(new SensorDataSet(sensorDataSet));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChange(Raw<?> sensorData) {
|
public void onChange(Raw<?> data) {
|
||||||
sensorDataSet.update(sensorData);
|
sensorDataSet.update(data);
|
||||||
observer.onChange(new SensorDataSet(sensorDataSet));
|
observer.onChange(new SensorDataSet(sensorDataSet));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisconnect(Aggregator<?, ?> sensorData) {
|
public void onDisconnect(Aggregator<?, ?> aggregator) {
|
||||||
sensorDataSet.remove(sensorData);
|
sensorDataSet.add(aggregator);
|
||||||
|
observer.onChange(new SensorDataSet(sensorDataSet));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRemove(Aggregator<?, ?> aggregator) {
|
||||||
|
sensorDataSet.remove(aggregator);
|
||||||
observer.onChange(new SensorDataSet(sensorDataSet));
|
observer.onChange(new SensorDataSet(sensorDataSet));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -134,5 +140,7 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
|
|||||||
void onChange(Raw<?> sensorData);
|
void onChange(Raw<?> sensorData);
|
||||||
|
|
||||||
void onDisconnect(Aggregator<?, ?> sensorData);
|
void onDisconnect(Aggregator<?, ?> sensorData);
|
||||||
|
|
||||||
|
void onRemove(Aggregator<?, ?> sensorData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -30,7 +30,6 @@ public class AltitudeCorrectionManager {
|
|||||||
|
|
||||||
public void correctAltitude(Context context, TrackPoint trackPoint) {
|
public void correctAltitude(Context context, TrackPoint trackPoint) {
|
||||||
if (!trackPoint.hasLocation() || !trackPoint.hasAltitude()) {
|
if (!trackPoint.hasLocation() || !trackPoint.hasAltitude()) {
|
||||||
Log.d(TAG, "No altitude correction necessary.");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && altitudeConverter != null) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && altitudeConverter != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user