forked from upstream-mirrors/OpenTracks
Bugfix: PublicAPI stop should not start TrackRecordingService in foreground.
Actually, TrackRecordingService will start in foreground if needed. Fixes #1850.
This commit is contained in:
@@ -0,0 +1,56 @@
|
|||||||
|
package de.dennisguse.opentracks.publicapi;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import androidx.test.filters.LargeTest;
|
||||||
|
import androidx.test.rule.GrantPermissionRule;
|
||||||
|
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import de.dennisguse.opentracks.R;
|
||||||
|
import de.dennisguse.opentracks.TestUtil;
|
||||||
|
import de.dennisguse.opentracks.settings.PreferencesUtils;
|
||||||
|
import de.dennisguse.opentracks.util.IntentUtils;
|
||||||
|
|
||||||
|
@LargeTest
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class PublicApiTest {
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public GrantPermissionRule mGrantPermissionRule = TestUtil.createGrantPermissionRule();
|
||||||
|
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void StartStopTest() throws InterruptedException {
|
||||||
|
PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true);
|
||||||
|
|
||||||
|
context.startActivity(IntentUtils.newIntent(context, StartRecording.class));
|
||||||
|
|
||||||
|
Thread.sleep(5000);
|
||||||
|
|
||||||
|
context.startActivity(IntentUtils.newIntent(context, StopRecording.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void StopAndWait() throws InterruptedException {
|
||||||
|
PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true);
|
||||||
|
|
||||||
|
context.startActivity(IntentUtils.newIntent(context, StopRecording.class));
|
||||||
|
|
||||||
|
Thread.sleep(10000);
|
||||||
|
|
||||||
|
//No ForegroundServiceDidNotStartInTimeException should be happening.
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
-3
@@ -26,7 +26,6 @@ import android.os.RemoteException;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
|
|
||||||
import de.dennisguse.opentracks.BuildConfig;
|
import de.dennisguse.opentracks.BuildConfig;
|
||||||
|
|
||||||
@@ -81,7 +80,8 @@ public class TrackRecordingServiceConnection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Log.i(TAG, "Binding the service.");
|
Log.i(TAG, "Binding the service.");
|
||||||
int flags = BuildConfig.DEBUG ? Context.BIND_DEBUG_UNBIND : 0;
|
|
||||||
|
int flags = Context.BIND_AUTO_CREATE + (BuildConfig.DEBUG ? Context.BIND_DEBUG_UNBIND : 0);
|
||||||
context.bindService(new Intent(context, TrackRecordingService.class), serviceConnection, flags);
|
context.bindService(new Intent(context, TrackRecordingService.class), serviceConnection, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,6 +142,6 @@ public class TrackRecordingServiceConnection {
|
|||||||
new TrackRecordingServiceConnection(withUnbind)
|
new TrackRecordingServiceConnection(withUnbind)
|
||||||
.bind(context);
|
.bind(context);
|
||||||
|
|
||||||
ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
|
// ContextCompat.startForegroundService(context, new Intent(context, TrackRecordingService.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user