diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java index 9ea5ffa1c..8738ac7cd 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java @@ -24,15 +24,11 @@ import android.os.IBinder; import android.os.IBinder.DeathRecipient; import android.os.RemoteException; import android.util.Log; -import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import de.dennisguse.opentracks.BuildConfig; -import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.data.models.Marker; /** * Wrapper for the track recording service. @@ -125,28 +121,6 @@ public class TrackRecordingServiceConnection { } } - //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) { - Log.d(TAG, "Unable to add marker, no track recording service"); - return null; - } - - try { - Marker.Id marker = trackRecordingService.insertMarker(name, category, description, photoUrl); - if (marker == null) { - Toast.makeText(context, R.string.marker_add_error, Toast.LENGTH_LONG).show(); - return null; - } - - return marker; - } catch (IllegalStateException e) { - Log.e(TAG, "Unable to add marker.", e); - return null; - } - } - public void stopRecording(@NonNull Context context) { if (trackRecordingService == null) { Log.e(TAG, "TrackRecordingService not connected."); diff --git a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java index c0c3805cb..b80ba6753 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java @@ -47,6 +47,7 @@ import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.data.models.Marker; import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.databinding.MarkerEditBinding; +import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; /** @@ -158,15 +159,14 @@ public class MarkerEditActivity extends AbstractActivity { if (markerId == null) { - new TrackRecordingServiceConnection((service, self) -> { - Marker.Id newMarkerId = self.addMarker(MarkerEditActivity.this, "", "", "", null); + TrackRecordingServiceConnection.execute(this, (service, self) -> { + Marker.Id newMarkerId = createNewMarker(service); if (newMarkerId == null) { finish(); } else { loadMarkerData(newMarkerId); } - self.unbind(this); - }).bind(this); + }); } else { loadMarkerData(markerId); } @@ -174,6 +174,21 @@ public class MarkerEditActivity extends AbstractActivity { setSupportActionBar(viewBinding.bottomAppBarLayout.bottomAppBar); } + private Marker.Id createNewMarker(TrackRecordingService trackRecordingService) { + try { + Marker.Id marker = trackRecordingService.insertMarker("", "", "", null); + if (marker == null) { + Toast.makeText(this, R.string.marker_add_error, Toast.LENGTH_LONG).show(); + return null; + } + + return marker; + } catch (IllegalStateException e) { + Log.e(TAG, "Unable to add marker.", e); + return null; + } + } + private void loadMarkerData(Marker.Id markerId) { viewModel.getMarkerData(markerId).observe(this, data -> { marker = data;