Renamed SensorManager to RemoteSensorManager.

This commit is contained in:
Dennis Guse
2019-08-16 21:19:38 +02:00
parent c159e1eba4
commit ea3de8a987
8 changed files with 65 additions and 68 deletions
@@ -31,6 +31,9 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import java.util.EnumSet;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.TrackDetailActivity; import de.dennisguse.opentracks.TrackDetailActivity;
import de.dennisguse.opentracks.content.Track; import de.dennisguse.opentracks.content.Track;
import de.dennisguse.opentracks.content.TrackDataHub; import de.dennisguse.opentracks.content.TrackDataHub;
@@ -40,6 +43,7 @@ import de.dennisguse.opentracks.content.Waypoint;
import de.dennisguse.opentracks.content.sensor.SensorDataSet; import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.services.ITrackRecordingService; import de.dennisguse.opentracks.services.ITrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.services.sensors.RemoteSensorManager;
import de.dennisguse.opentracks.stats.TripStatistics; import de.dennisguse.opentracks.stats.TripStatistics;
import de.dennisguse.opentracks.util.LocationUtils; import de.dennisguse.opentracks.util.LocationUtils;
import de.dennisguse.opentracks.util.PreferencesUtils; import de.dennisguse.opentracks.util.PreferencesUtils;
@@ -47,9 +51,6 @@ import de.dennisguse.opentracks.util.StatsUtils;
import de.dennisguse.opentracks.util.TrackIconUtils; import de.dennisguse.opentracks.util.TrackIconUtils;
import de.dennisguse.opentracks.util.TrackRecordingServiceConnectionUtils; import de.dennisguse.opentracks.util.TrackRecordingServiceConnectionUtils;
import de.dennisguse.opentracks.util.UnitConversions; import de.dennisguse.opentracks.util.UnitConversions;
import de.dennisguse.opentracks.R;
import java.util.EnumSet;
/** /**
* A fragment to display track statistics to the user. * A fragment to display track statistics to the user.
@@ -297,7 +298,7 @@ public class StatsFragment extends Fragment implements TrackDataListener {
} }
/** /**
* Tries to fetch most recent {@link SensorDataSet} {@link de.dennisguse.opentracks.services.sensors.SensorManager}. * Tries to fetch most recent {@link SensorDataSet} {@link RemoteSensorManager}.
*/ */
private void updateSensorDataUI() { private void updateSensorDataUI() {
ITrackRecordingService trackRecordingService = trackRecordingServiceConnection.getServiceIfBound(); ITrackRecordingService trackRecordingService = trackRecordingServiceConnection.getServiceIfBound();
@@ -58,8 +58,8 @@ import de.dennisguse.opentracks.content.Waypoint.WaypointType;
import de.dennisguse.opentracks.content.WaypointCreationRequest; import de.dennisguse.opentracks.content.WaypointCreationRequest;
import de.dennisguse.opentracks.content.sensor.SensorDataSet; import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.content.sensor.SensorState; import de.dennisguse.opentracks.content.sensor.SensorState;
import de.dennisguse.opentracks.services.sensors.SensorManager; import de.dennisguse.opentracks.services.sensors.RemoteSensorManager;
import de.dennisguse.opentracks.services.sensors.SensorManagerFactory; import de.dennisguse.opentracks.services.sensors.RemoteSensorManagerFactory;
import de.dennisguse.opentracks.services.tasks.AnnouncementPeriodicTaskFactory; import de.dennisguse.opentracks.services.tasks.AnnouncementPeriodicTaskFactory;
import de.dennisguse.opentracks.services.tasks.PeriodicTaskExecutor; import de.dennisguse.opentracks.services.tasks.PeriodicTaskExecutor;
import de.dennisguse.opentracks.services.tasks.SplitPeriodicTaskFactory; import de.dennisguse.opentracks.services.tasks.SplitPeriodicTaskFactory;
@@ -181,7 +181,7 @@ public class TrackRecordingService extends Service {
}; };
private TripStatisticsUpdater markerTripStatisticsUpdater; private TripStatisticsUpdater markerTripStatisticsUpdater;
private WakeLock wakeLock; private WakeLock wakeLock;
private SensorManager sensorManager; private RemoteSensorManager remoteSensorManager;
private Location lastLocation; private Location lastLocation;
private boolean currentSegmentHasLocation; private boolean currentSegmentHasLocation;
private boolean isIdle; // true if idle private boolean isIdle; // true if idle
@@ -280,9 +280,9 @@ public class TrackRecordingService extends Service {
@Override @Override
public void onDestroy() { public void onDestroy() {
if (sensorManager != null) { if (remoteSensorManager != null) {
SensorManagerFactory.releaseSystemSensorManager(); RemoteSensorManagerFactory.releaseSystemSensorManager();
sensorManager = null; remoteSensorManager = null;
} }
// Reverse order from onCreate // Reverse order from onCreate
@@ -617,7 +617,7 @@ public class TrackRecordingService extends Service {
*/ */
private void startRecording(boolean trackStarted) { private void startRecording(boolean trackStarted) {
// Update instance variables // Update instance variables
sensorManager = SensorManagerFactory.getSystemSensorManager(this); remoteSensorManager = RemoteSensorManagerFactory.getSystemSensorManager(this);
lastLocation = null; lastLocation = null;
currentSegmentHasLocation = false; currentSegmentHasLocation = false;
isIdle = false; isIdle = false;
@@ -715,9 +715,9 @@ public class TrackRecordingService extends Service {
splitExecutor.shutdown(); splitExecutor.shutdown();
// Update instance variables // Update instance variables
if (sensorManager != null) { if (remoteSensorManager != null) {
SensorManagerFactory.releaseSystemSensorManager(); RemoteSensorManagerFactory.releaseSystemSensorManager();
sensorManager = null; remoteSensorManager = null;
} }
lastLocation = null; lastLocation = null;
@@ -931,10 +931,10 @@ public class TrackRecordingService extends Service {
} }
private SensorDataSet getSensorDataSet() { private SensorDataSet getSensorDataSet() {
if (sensorManager == null || !sensorManager.isEnabled() || !sensorManager.isSensorDataSetValid()) { if (remoteSensorManager == null || !remoteSensorManager.isEnabled() || !remoteSensorManager.isSensorDataSetValid()) {
return null; return null;
} }
return sensorManager.getSensorDataSet(); return remoteSensorManager.getSensorDataSet();
} }
/** /**
@@ -1104,24 +1104,24 @@ public class TrackRecordingService extends Service {
@Override @Override
public SensorDataSet getSensorData() { public SensorDataSet getSensorData() {
if (trackRecordingService.sensorManager == null) { if (trackRecordingService.remoteSensorManager == null) {
Log.d(TAG, "sensorManager is null."); Log.d(TAG, "remoteSensorManager is null.");
return null; return null;
} }
if (trackRecordingService.getSensorDataSet() == null) { if (trackRecordingService.getSensorDataSet() == null) {
Log.d(TAG, "Sensor data set is null."); Log.d(TAG, "Sensor data set is null.");
return null; return null;
} }
return trackRecordingService.sensorManager.getSensorDataSet(); return trackRecordingService.remoteSensorManager.getSensorDataSet();
} }
@Override @Override
public SensorState getSensorState() { public SensorState getSensorState() {
if (trackRecordingService.sensorManager == null) { if (trackRecordingService.remoteSensorManager == null) {
Log.d(TAG, "sensorManager is null."); Log.d(TAG, "remoteSensorManager is null.");
return SensorState.NONE; return SensorState.NONE;
} }
return trackRecordingService.sensorManager.getSensorState(); return trackRecordingService.remoteSensorManager.getSensorState();
} }
/** /**
@@ -24,13 +24,13 @@ import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.util.Log; import android.util.Log;
import java.util.ArrayList;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.sensor.SensorDataSet; import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.content.sensor.SensorState; import de.dennisguse.opentracks.content.sensor.SensorState;
import de.dennisguse.opentracks.util.PreferencesUtils; import de.dennisguse.opentracks.util.PreferencesUtils;
import de.dennisguse.opentracks.util.UnitConversions; import de.dennisguse.opentracks.util.UnitConversions;
import de.dennisguse.opentracks.R;
import java.util.ArrayList;
/** /**
* Bluetooth sensor manager. * Bluetooth sensor manager.
@@ -39,7 +39,7 @@ import java.util.ArrayList;
* *
* @author Sandor Dornbush * @author Sandor Dornbush
*/ */
public class BluetoothSensorManager extends SensorManager { public class BluetoothRemoteSensorManager extends RemoteSensorManager {
private static final String TAG = BluetoothConnectionManager.class.getSimpleName(); private static final String TAG = BluetoothConnectionManager.class.getSimpleName();
private static final BluetoothAdapter bluetoothAdapter = getDefaultBluetoothAdapter(); private static final BluetoothAdapter bluetoothAdapter = getDefaultBluetoothAdapter();
@@ -71,7 +71,7 @@ public class BluetoothSensorManager extends SensorManager {
/** /**
* @param context the context * @param context the context
*/ */
public BluetoothSensorManager(Context context) { public BluetoothRemoteSensorManager(Context context) {
this.context = context; this.context = context;
bluetoothConnectionManager = new BluetoothConnectionManager(context, messageHandler); bluetoothConnectionManager = new BluetoothConnectionManager(context, messageHandler);
} }
@@ -18,23 +18,23 @@ package de.dennisguse.opentracks.services.sensors;
import android.util.Log; import android.util.Log;
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.content.sensor.SensorState;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.content.sensor.SensorState;
/** /**
* Manage the connection to a sensor. * Manage the connection to a remote sensor.
* *
* @author Sandor Dornbush * @author Sandor Dornbush
*/ */
public abstract class SensorManager { public abstract class RemoteSensorManager {
public static final long MAX_SENSOR_DATE_SET_AGE = 5000; public static final long MAX_SENSOR_DATE_SET_AGE = 5000;
public static final long MAX_SENSOR_STATE_AGE = 20000; public static final long MAX_SENSOR_STATE_AGE = 20000;
private static final String TAG = SensorManager.class.getSimpleName(); private static final String TAG = RemoteSensorManager.class.getSimpleName();
private static final int RETRY_PERIOD = 20000; private static final int RETRY_PERIOD = 20000;
private SensorState sensorState = SensorState.NONE; private SensorState sensorState = SensorState.NONE;
@@ -88,7 +88,7 @@ public abstract class SensorManager {
} }
} }
}; };
timer = new Timer(SensorManager.class.getSimpleName()); timer = new Timer(RemoteSensorManager.class.getSimpleName());
timer.schedule(timerTask, RETRY_PERIOD, RETRY_PERIOD); timer.schedule(timerTask, RETRY_PERIOD, RETRY_PERIOD);
} }
@@ -19,16 +19,16 @@ package de.dennisguse.opentracks.services.sensors;
import android.content.Context; import android.content.Context;
/** /**
* A factory of {@link SensorManager}. * A factory of {@link RemoteSensorManager}.
* *
* @author Sandor Dornbush * @author Sandor Dornbush
*/ */
public class SensorManagerFactory { public class RemoteSensorManagerFactory {
private static SensorManager systemSensorManager = null; private static RemoteSensorManager remoteSensorManagerSystem = null;
private static SensorManager sensorManagerTemporary = null; private static RemoteSensorManager remoteSensorManagerTemporary = null;
private SensorManagerFactory() { private RemoteSensorManagerFactory() {
} }
/** /**
@@ -36,49 +36,45 @@ public class SensorManagerFactory {
* *
* @param context the context * @param context the context
*/ */
public static SensorManager getSystemSensorManager(Context context) { public static RemoteSensorManager getSystemSensorManager(Context context) {
releaseSensorManagerTemporary(); releaseSensorManagerTemporary();
releaseSystemSensorManager(); releaseSystemSensorManager();
systemSensorManager = getSensorManager(context); remoteSensorManagerSystem = getSensorManager(context);
if (systemSensorManager != null) { remoteSensorManagerSystem.startSensor();
systemSensorManager.startSensor(); return remoteSensorManagerSystem;
}
return systemSensorManager;
} }
/** /**
* Releases the system sensor manager. * Releases the system sensor manager.
*/ */
public static void releaseSystemSensorManager() { public static void releaseSystemSensorManager() {
if (systemSensorManager != null) { if (remoteSensorManagerSystem != null) {
systemSensorManager.stopSensor(); remoteSensorManagerSystem.stopSensor();
} }
systemSensorManager = null; remoteSensorManagerSystem = null;
} }
/** /**
* Gets the temp sensor manager. * Gets the temp sensor manager.
*/ */
public static SensorManager getSensorManagerTemporary(Context context) { public static RemoteSensorManager getSensorManagerTemporary(Context context) {
releaseSensorManagerTemporary(); releaseSensorManagerTemporary();
if (systemSensorManager != null) { if (remoteSensorManagerSystem != null) {
return null; return null;
} }
sensorManagerTemporary = getSensorManager(context); remoteSensorManagerTemporary = getSensorManager(context);
if (sensorManagerTemporary != null) { remoteSensorManagerTemporary.startSensor();
sensorManagerTemporary.startSensor(); return remoteSensorManagerTemporary;
}
return sensorManagerTemporary;
} }
/** /**
* Releases the temp sensor manager. * Releases the temp sensor manager.
*/ */
public static void releaseSensorManagerTemporary() { public static void releaseSensorManagerTemporary() {
if (sensorManagerTemporary != null) { if (remoteSensorManagerTemporary != null) {
sensorManagerTemporary.stopSensor(); remoteSensorManagerTemporary.stopSensor();
} }
sensorManagerTemporary = null; remoteSensorManagerTemporary = null;
} }
/** /**
@@ -86,7 +82,7 @@ public class SensorManagerFactory {
* *
* @param context the context * @param context the context
*/ */
private static SensorManager getSensorManager(Context context) { private static RemoteSensorManager getSensorManager(Context context) {
return new BluetoothSensorManager(context); return new BluetoothRemoteSensorManager(context);
} }
} }
@@ -23,13 +23,13 @@ import android.view.View;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.services.sensors.SensorManager;
import de.dennisguse.opentracks.stats.TripStatistics;
import de.dennisguse.opentracks.R;
import java.util.Locale; import java.util.Locale;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
import de.dennisguse.opentracks.services.sensors.RemoteSensorManager;
import de.dennisguse.opentracks.stats.TripStatistics;
/** /**
* Utilities for updating the statistics UI labels and values. * Utilities for updating the statistics UI labels and values.
* *
@@ -294,7 +294,7 @@ public class StatsUtils {
private static void setHeartRateData(Context context, View viewValue, View viewSensor, SensorDataSet sensorDataSet) { private static void setHeartRateData(Context context, View viewValue, View viewSensor, SensorDataSet sensorDataSet) {
String heartRate = context.getString(R.string.value_unknown); String heartRate = context.getString(R.string.value_unknown);
String sensor = context.getString(R.string.value_unknown); String sensor = context.getString(R.string.value_unknown);
if (sensorDataSet != null && sensorDataSet.hasHeartRate() && sensorDataSet.isRecent(SensorManager.MAX_SENSOR_DATE_SET_AGE)) { if (sensorDataSet != null && sensorDataSet.hasHeartRate() && sensorDataSet.isRecent(RemoteSensorManager.MAX_SENSOR_DATE_SET_AGE)) {
heartRate = StringUtils.formatDecimal(sensorDataSet.getHeartRate(), 0); heartRate = StringUtils.formatDecimal(sensorDataSet.getHeartRate(), 0);
sensor = sensorDataSet.getSensorName(); sensor = sensorDataSet.getSensorName();
} }
+1 -1
View File
@@ -122,7 +122,7 @@ limitations under the License.
<include <include
android:id="@+id/stats_elevation" android:id="@+id/stats_elevation"
layout="@layout/stats_small_group_item" /> layout="@layout/stats_small_group_item" />
<!-- TODO DISABLED AS computation from GPS is not precise enough, go for getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure) --> <!-- TODO DISABLED AS computation from GPS is not precise enough, go for getAltitude(RemoteSensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure) -->
<!-- Elevation gain --> <!-- Elevation gain -->
<!--<include--> <!--<include-->
<!--android:id="@+id/stats_elevation_gain"--> <!--android:id="@+id/stats_elevation_gain"-->
+1 -1
View File
@@ -96,7 +96,7 @@ limitations under the License.
android:id="@+id/stats_elevation" android:id="@+id/stats_elevation"
layout="@layout/stats_small_group_item" /> layout="@layout/stats_small_group_item" />
<!-- Elevation gain --> <!-- Elevation gain -->
<!-- TODO DISABLED AS computation from GPS is not precise enough, go for getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure) --> <!-- TODO DISABLED AS computation from GPS is not precise enough, go for getAltitude(RemoteSensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure) -->
<!--<include--> <!--<include-->
<!--android:id="@+id/stats_elevation_gain"--> <!--android:id="@+id/stats_elevation_gain"-->
<!--layout="@layout/stats_small_group_item" />--> <!--layout="@layout/stats_small_group_item" />-->