diff --git a/src/androidTest/java/de/dennisguse/opentracks/EspressoUITest.java b/src/androidTest/java/de/dennisguse/opentracks/EspressoUITest.java index ecc5484f4..1bd356182 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/EspressoUITest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/EspressoUITest.java @@ -3,6 +3,7 @@ package de.dennisguse.opentracks; import static androidx.test.espresso.Espresso.onData; import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.action.ViewActions.longClick; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; @@ -39,33 +40,30 @@ public class EspressoUITest { @LargeTest @Test - public void record_pause_resume_stop() { + public void record_stop_resume_stop_finish() { { // TrackListActivity: start recording ViewInteraction trackControllerRecordButton = onView(withId(R.id.track_list_fab_action)); trackControllerRecordButton.perform(click()); } { - // TrackRecordingActivity - ViewInteraction trackControllerStopButton = onView(withId(R.id.track_recording_fab_action)); + // TrackRecordingActivity: wait to record some time and then stop + onView(withId(R.id.track_recording_fab_action)) + .perform(waitFor(5000)) + .perform(longClick()); -// // wait; stay recording -// trackControllerRecordButton.perform(waitFor(5000)); -// -// //pause -// trackControllerRecordButton.perform(veryLongTouch(1600)); -// -// // wait; stay paused -// trackControllerRecordButton.perform(waitFor(1000)); -// -// // resume -// trackControllerRecordButton.perform(click()); -// -// // wait; stay recording -// trackControllerRecordButton.perform(waitFor(1000)); + // TrackStoppedActivity: resume + onView(withId(R.id.resume_button)) + .perform(click()); - // stop; - trackControllerStopButton.perform(veryLongTouch(1600)); + // TrackRecordingActivity: wait and then stop + onView(withId(R.id.track_recording_fab_action)) + .perform(waitFor(5000)) + .perform(longClick()); + + // TrackStoppedActivity + onView(withId(R.id.finish_button)) + .perform(click()); } } diff --git a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java index 43f376659..191f4792a 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java @@ -13,6 +13,7 @@ import de.dennisguse.opentracks.data.models.SpeedFormatter; import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.databinding.TrackStoppedBinding; import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment; +import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.util.ExportUtils; import de.dennisguse.opentracks.util.IntentUtils; @@ -94,16 +95,14 @@ public class TrackStoppedActivity extends AbstractActivity implements ChooseActi }); viewBinding.resumeButton.setOnClickListener(v -> { - resume(); - finish(); + resumeTrackAndFinish(); }); } @Override public void onBackPressed() { super.onBackPressed(); - resume(); - finish(); + resumeTrackAndFinish(); } @Override @@ -122,10 +121,17 @@ public class TrackStoppedActivity extends AbstractActivity implements ChooseActi viewBinding.fields.trackEditActivityType.setText(getString(TrackIconUtils.getIconActivityType(iconValue))); } - private void resume() { - Intent newIntent = IntentUtils.newIntent(TrackStoppedActivity.this, TrackRecordingActivity.class) - .putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId); - startActivity(newIntent); - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + private void resumeTrackAndFinish() { + new TrackRecordingServiceConnection((service, connection) -> { + service.resumeTrack(trackId); + + Intent newIntent = IntentUtils.newIntent(TrackStoppedActivity.this, TrackRecordingActivity.class) + .putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId); + startActivity(newIntent); + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + + connection.unbind(this); + finish(); + }).startAndBind(this); } } \ No newline at end of file