diff --git a/src/androidTest/java/de/dennisguse/opentracks/publicapi/PublicApiTest.java b/src/androidTest/java/de/dennisguse/opentracks/publicapi/PublicApiTest.java index a8b28f6fde..a6202a9e49 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/publicapi/PublicApiTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/publicapi/PublicApiTest.java @@ -31,13 +31,7 @@ public class PublicApiTest { private final Context context = ApplicationProvider.getApplicationContext(); - @Test - public void StartTest() { - PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true); - - context.startActivity(IntentUtils.newIntent(context, StartRecording.class)); - } - + //NOTE: this doesn't check if the TrackRecordingService was started in foreground. @Test public void StartStopTest() throws InterruptedException { PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true); diff --git a/src/main/java/de/dennisguse/opentracks/publicapi/AbstractAPIActivity.java b/src/main/java/de/dennisguse/opentracks/publicapi/AbstractAPIActivity.java index 3cc4352be5..a725cf6272 100644 --- a/src/main/java/de/dennisguse/opentracks/publicapi/AbstractAPIActivity.java +++ b/src/main/java/de/dennisguse/opentracks/publicapi/AbstractAPIActivity.java @@ -33,11 +33,15 @@ public abstract class AbstractAPIActivity extends AppCompatActivity { protected void onCreate(@Nullable Bundle savedInstanceState) { SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); - splashScreen.setKeepOnScreenCondition(() -> true ); + splashScreen.setKeepOnScreenCondition(() -> true); if (PreferencesUtils.isPublicAPIenabled()) { Log.i(TAG, "Received and trying to execute requested action."); - TrackRecordingServiceConnection.execute(this, serviceConnectedCallback); + if (requiresForeground()) { + TrackRecordingServiceConnection.executeForeground(this, serviceConnectedCallback); + } else { + TrackRecordingServiceConnection.execute(this, serviceConnectedCallback); + } } 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."); @@ -48,4 +52,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { protected abstract void execute(TrackRecordingService service); protected abstract boolean isPostExecuteStopService(); + + protected boolean requiresForeground() { + return false; + } } diff --git a/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java b/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java index ff778a94a8..bcb9bc3842 100644 --- a/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java +++ b/src/main/java/de/dennisguse/opentracks/publicapi/StartRecording.java @@ -62,4 +62,9 @@ private void startDashboardAPI(@NonNull Track.Id trackId, @NonNull Bundle bundle protected boolean isPostExecuteStopService() { return false; } + + @Override + protected boolean requiresForeground() { + return true; + } }