Refactored TrackRecordingServiceConnection: made static methods object methods.

This commit is contained in:
Dennis Guse
2019-09-10 22:45:20 +02:00
parent 443e069a13
commit b5cb47a0c7
8 changed files with 34 additions and 36 deletions
@@ -31,6 +31,8 @@ import android.widget.AbsListView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.SearchView; import android.widget.SearchView;
import androidx.annotation.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment; import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment;
@@ -199,7 +201,7 @@ public abstract class AbstractListActivity extends AbstractActivity implements C
} }
} }
if (stopRecording) { if (stopRecording) {
TrackRecordingServiceConnection.stopRecording(this, getTrackRecordingServiceConnection(), false); getTrackRecordingServiceConnection().stopRecording(this, false);
} }
Intent intent = IntentUtils.newIntent(this, DeleteActivity.class); Intent intent = IntentUtils.newIntent(this, DeleteActivity.class);
intent.putExtra(DeleteActivity.EXTRA_TRACK_IDS, trackIds); intent.putExtra(DeleteActivity.EXTRA_TRACK_IDS, trackIds);
@@ -210,6 +212,7 @@ public abstract class AbstractListActivity extends AbstractActivity implements C
* Gets the track recording service connection. For stopping the current * Gets the track recording service connection. For stopping the current
* recording if need to delete the current recording track. * recording if need to delete the current recording track.
*/ */
@NonNull
abstract protected TrackRecordingServiceConnection getTrackRecordingServiceConnection(); abstract protected TrackRecordingServiceConnection getTrackRecordingServiceConnection();
/** /**
@@ -90,7 +90,7 @@ public class MarkerEditActivity extends AbstractActivity {
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
TrackRecordingServiceConnection.startConnection(this, trackRecordingServiceConnection); trackRecordingServiceConnection.startConnection(this);
} }
@Override @Override
@@ -167,7 +167,7 @@ public class MarkerEditActivity extends AbstractActivity {
waypointDescription.getText().toString(), waypointDescription.getText().toString(),
null, null,
null); null);
TrackRecordingServiceConnection.addMarker(this, trackRecordingServiceConnection, waypointCreationRequest); trackRecordingServiceConnection.addMarker(this, waypointCreationRequest);
} }
/** /**
@@ -231,7 +231,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
super.onStart(); super.onStart();
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
sharedPreferenceChangeListener.onSharedPreferenceChanged(null, null); sharedPreferenceChangeListener.onSharedPreferenceChanged(null, null);
TrackRecordingServiceConnection.startConnection(this, trackRecordingServiceConnection); trackRecordingServiceConnection.startConnection(this);
} }
@Override @Override
@@ -110,7 +110,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
if (hasPhoto && photoUri != null) { if (hasPhoto && photoUri != null) {
hasPhoto = false; hasPhoto = false;
WaypointCreationRequest waypointCreationRequest = new WaypointCreationRequest(WaypointType.WAYPOINT, false, null, null, null, null, photoUri.toString()); WaypointCreationRequest waypointCreationRequest = new WaypointCreationRequest(WaypointType.WAYPOINT, false, null, null, null, null, photoUri.toString());
long markerId = TrackRecordingServiceConnection.addMarker(TrackDetailActivity.this, trackRecordingServiceConnection, waypointCreationRequest); long markerId = trackRecordingServiceConnection.addMarker(TrackDetailActivity.this, waypointCreationRequest);
if (markerId != -1L) { if (markerId != -1L) {
//TODO: Make configurable. //TODO: Make configurable.
FileUtils.updateMediaScanner(TrackDetailActivity.this, photoUri); FileUtils.updateMediaScanner(TrackDetailActivity.this, photoUri);
@@ -167,12 +167,12 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
if (recordingTrackPaused) { if (recordingTrackPaused) {
// Paused -> Resume // Paused -> Resume
updateMenuItems(false); updateMenuItems(false);
TrackRecordingServiceConnection.resumeTrack(trackRecordingServiceConnection); trackRecordingServiceConnection.resumeTrack();
trackController.update(true, false); trackController.update(true, false);
} else { } else {
// Recording -> Paused // Recording -> Paused
updateMenuItems(true); updateMenuItems(true);
TrackRecordingServiceConnection.pauseTrack(trackRecordingServiceConnection); trackRecordingServiceConnection.pauseTrack();
trackController.update(true, true); trackController.update(true, true);
} }
} }
@@ -181,7 +181,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
private final OnClickListener stopListener = new OnClickListener() { private final OnClickListener stopListener = new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
TrackRecordingServiceConnection.stopRecording(TrackDetailActivity.this, trackRecordingServiceConnection, true); trackRecordingServiceConnection.stopRecording(TrackDetailActivity.this, true);
updateMenuItems(true); updateMenuItems(true);
} }
}; };
@@ -248,7 +248,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
sharedPreferenceChangeListener.onSharedPreferenceChanged(null, null); sharedPreferenceChangeListener.onSharedPreferenceChanged(null, null);
TrackRecordingServiceConnection.startConnection(this, trackRecordingServiceConnection); trackRecordingServiceConnection.startConnection(this);
trackDataHub.start(); trackDataHub.start();
} }
@@ -172,7 +172,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
TrackRecordingServiceConnection.startConnection(this, trackRecordingServiceConnection); trackRecordingServiceConnection.startConnection(this);
} }
@Override @Override
@@ -182,7 +182,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
@Override @Override
public void onClick(View v) { public void onClick(View v) {
updateMenuItems(false, false); updateMenuItems(false, false);
TrackRecordingServiceConnection.stopRecording(TrackListActivity.this, trackRecordingServiceConnection, true); trackRecordingServiceConnection.stopRecording(TrackListActivity.this, true);
} }
}; };
@@ -241,12 +241,12 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
if (recordingTrackPaused) { if (recordingTrackPaused) {
// Paused -> Resume // Paused -> Resume
updateMenuItems(false, true); updateMenuItems(false, true);
TrackRecordingServiceConnection.resumeTrack(trackRecordingServiceConnection); trackRecordingServiceConnection.resumeTrack();
trackController.update(true, false); trackController.update(true, false);
} else { } else {
// Recording -> Paused // Recording -> Paused
updateMenuItems(false, true); updateMenuItems(false, true);
TrackRecordingServiceConnection.pauseTrack(trackRecordingServiceConnection); trackRecordingServiceConnection.pauseTrack();
trackController.update(true, true); trackController.update(true, true);
} }
} }
@@ -329,7 +329,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
sharedPreferenceChangeListener.onSharedPreferenceChanged(null, null); sharedPreferenceChangeListener.onSharedPreferenceChanged(null, null);
TrackRecordingServiceConnection.startConnection(this, trackRecordingServiceConnection); trackRecordingServiceConnection.startConnection(this);
} }
@Override @Override
@@ -95,7 +95,7 @@ public class StatsFragment extends Fragment implements TrackDataListener {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
handlerUpdateUI = new Handler(); handlerUpdateUI = new Handler();
trackRecordingServiceConnection = new TrackRecordingServiceConnection(getContext(), null); trackRecordingServiceConnection = new TrackRecordingServiceConnection(getContext(), null);
TrackRecordingServiceConnection.startConnection(getContext(), trackRecordingServiceConnection); trackRecordingServiceConnection.startConnection(getContext());
Spinner activityTypeIcon = getView().findViewById(R.id.stats_activity_type_icon); Spinner activityTypeIcon = getView().findViewById(R.id.stats_activity_type_icon);
activityTypeIcon.setAdapter(TrackIconUtils.getIconSpinnerAdapter(getActivity(), "")); activityTypeIcon.setAdapter(TrackIconUtils.getIconSpinnerAdapter(getActivity(), ""));
@@ -27,6 +27,8 @@ import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import java.util.List; import java.util.List;
import de.dennisguse.opentracks.BuildConfig; import de.dennisguse.opentracks.BuildConfig;
@@ -195,11 +197,10 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
/** /**
* Resumes the track recording service connection. * Resumes the track recording service connection.
* *
* @param context the context * @param context the context
* @param trackRecordingServiceConnection the track recording service connection
*/ */
public static void startConnection(Context context, TrackRecordingServiceConnection trackRecordingServiceConnection) { public void startConnection(@NonNull Context context) {
trackRecordingServiceConnection.bindIfStarted(); bindIfStarted();
if (!isRecordingServiceRunning(context)) { if (!isRecordingServiceRunning(context)) {
resetRecordingState(context); resetRecordingState(context);
} }
@@ -207,11 +208,9 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
/** /**
* Resumes the recording track. * Resumes the recording track.
*
* @param trackRecordingServiceConnection the track recording service
*/ */
public static void resumeTrack(TrackRecordingServiceConnection trackRecordingServiceConnection) { public void resumeTrack() {
ITrackRecordingService service = trackRecordingServiceConnection.getServiceIfBound(); ITrackRecordingService service = getServiceIfBound();
if (service != null) { if (service != null) {
service.resumeCurrentTrack(); service.resumeCurrentTrack();
} }
@@ -219,12 +218,9 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
/** /**
* Pauses the recording track. * Pauses the recording track.
*
* @param trackRecordingServiceConnection the track recording service
* connection
*/ */
public static void pauseTrack(TrackRecordingServiceConnection trackRecordingServiceConnection) { public void pauseTrack() {
ITrackRecordingService service = trackRecordingServiceConnection.getServiceIfBound(); ITrackRecordingService service = getServiceIfBound();
if (service != null) { if (service != null) {
service.pauseCurrentTrack(); service.pauseCurrentTrack();
} }
@@ -233,12 +229,11 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
/** /**
* Stops the recording. * Stops the recording.
* *
* @param context the context * @param context the context
* @param trackRecordingServiceConnection the track recording service connection * @param showEditor true to show the editor
* @param showEditor true to show the editor
*/ */
public static void stopRecording(Context context, TrackRecordingServiceConnection trackRecordingServiceConnection, boolean showEditor) { public void stopRecording(@NonNull Context context, boolean showEditor) {
ITrackRecordingService trackRecordingService = trackRecordingServiceConnection.getServiceIfBound(); ITrackRecordingService trackRecordingService = getServiceIfBound();
if (trackRecordingService == null) { if (trackRecordingService == null) {
resetRecordingState(context); resetRecordingState(context);
} else { } else {
@@ -261,7 +256,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
Log.e(TAG, "Unable to stop recording.", e); Log.e(TAG, "Unable to stop recording.", e);
} }
} }
trackRecordingServiceConnection.unbindAndStop(); unbindAndStop();
} }
/** /**
@@ -269,8 +264,8 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death
* *
* @return the id of the marker or -1L if none could be created. * @return the id of the marker or -1L if none could be created.
*/ */
public static long addMarker(Context context, TrackRecordingServiceConnection trackRecordingServiceConnection, WaypointCreationRequest waypointCreationRequest) { public long addMarker(Context context, WaypointCreationRequest waypointCreationRequest) {
ITrackRecordingService trackRecordingService = trackRecordingServiceConnection.getServiceIfBound(); ITrackRecordingService trackRecordingService = getServiceIfBound();
if (trackRecordingService == null) { if (trackRecordingService == null) {
Log.d(TAG, "Unable to add marker, no track recording service"); Log.d(TAG, "Unable to add marker, no track recording service");
} else { } else {