TrackRecordingService: always starts as foreground service.

This commit is contained in:
Dennis Guse
2023-12-26 08:30:40 +01:00
parent abbc61d419
commit 5c6a4a71a4
6 changed files with 9 additions and 29 deletions
@@ -191,7 +191,7 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
startActivity(newIntent);
connection.unbind(this);
}).startAndBind(this, true);
}).startAndBind(this);
});
viewBinding.trackListFabAction.setOnLongClickListener((view) -> {
if (!recordingStatus.isRecording()) {
@@ -211,7 +211,7 @@ public class TrackRecordedActivity extends AbstractTrackDeleteActivity implement
connection.unbind(this);
finish();
}).startAndBind(this, true);
}).startAndBind(this);
return true;
}
@@ -146,7 +146,7 @@ public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements
connection.unbind(this);
finish();
}).startAndBind(this, true);
}).startAndBind(this);
}
@Override
@@ -38,7 +38,7 @@ public abstract class AbstractAPIActivity extends AppCompatActivity {
if (PreferencesUtils.isPublicAPIenabled()) {
Log.i(TAG, "Received and trying to execute requested action.");
new TrackRecordingServiceConnection(serviceConnectedCallback)
.startAndBind(this, isStartServiceForeground());
.startAndBind(this);
} else {
Toast.makeText(this, getString(R.string.settings_public_api_disabled_toast), Toast.LENGTH_LONG).show();
Log.w(TAG, "Public API is disabled; ignoring request.");
@@ -46,10 +46,6 @@ public abstract class AbstractAPIActivity extends AppCompatActivity {
}
}
protected boolean isStartServiceForeground() {
return false;
}
protected abstract void execute(TrackRecordingService service);
protected abstract boolean isPostExecuteStopService();
@@ -62,9 +62,4 @@ public class StartRecording extends AbstractAPIActivity {
protected boolean isPostExecuteStopService() {
return false;
}
@Override
protected boolean isStartServiceForeground() {
return true;
}
}
@@ -82,23 +82,13 @@ public class TrackRecordingServiceConnection {
this.callback = callback;
}
/**
* Starts and binds the service.
*
* @param foreground is the service expected to call `startForeground()`?
*/
public void startAndBind(Context context, boolean foreground) {
public void startAndBind(Context context) {
if (trackRecordingService != null) {
// Service is already started and bound.
return;
}
Log.i(TAG, "Starting the service.");
if (foreground) {
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
} else {
context.startService(new Intent(context, TrackRecordingService.class));
}
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
startConnection(context);
}
@@ -112,7 +102,7 @@ public class TrackRecordingServiceConnection {
@Deprecated
public void startAndBindWithCallback(Context context) {
if (trackRecordingService == null) {
startAndBind(context, false);
startAndBind(context);
return;
}
if (callback != null) {
@@ -151,13 +141,12 @@ public class TrackRecordingServiceConnection {
private void setTrackRecordingService(TrackRecordingService value) {
trackRecordingService = value;
if (callback != null) {
if (value != null) {
if (callback != null && value != null) {
callback.onConnected(value, this);
}
}
}
//TODO Move to some other place; not needed here.
@Nullable
public Marker.Id addMarker(Context context, String name, String category, String description, String photoUrl) {
if (trackRecordingService == null) {