From 01b4bc0e765bb104314402578e9b269cdc3f7e8c Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 17 Jul 2019 23:05:03 +0200 Subject: [PATCH] Cleanup. --- .../apps/mytracks/AbstractTrackActivity.java | 20 +++---- .../android/apps/mytracks/ChartView.java | 23 ++------ .../apps/mytracks/DeleteAsyncTask.java | 1 - .../apps/mytracks/MarkerListActivity.java | 56 ++++++++++--------- .../apps/mytracks/SearchListActivity.java | 7 ++- .../apps/mytracks/SensorStateActivity.java | 13 ++--- .../apps/mytracks/TrackController.java | 16 +++--- .../apps/mytracks/TrackListActivity.java | 15 ++--- .../mytracks/content/MyTracksProvider.java | 15 ++--- .../content/MyTracksProviderUtilsImpl.java | 18 +++--- .../apps/mytracks/content/SearchEngine.java | 9 ++- .../apps/mytracks/content/Waypoint.java | 2 - .../mytracks/content/WaypointsColumns.java | 5 -- .../mytracks/fragments/ChartFragment.java | 15 ++--- .../ChooseActivityDialogFragment.java | 26 ++++----- .../ChooseActivityTypeDialogFragment.java | 26 ++++----- .../ConfirmDeleteDialogFragment.java | 17 +++--- .../fragments/DeleteMarkerDialogFragment.java | 22 ++++---- .../fragments/FileTypeDialogFragment.java | 19 +++---- .../fragments/MarkerDetailFragment.java | 3 +- .../mytracks/fragments/StatsFragment.java | 6 +- .../importer/AbstractFileTrackImporter.java | 21 ++++--- .../file/importer/KmlFileTrackImporter.java | 17 +++--- .../services/ControlRecordingService.java | 3 +- .../services/MyTracksLocationManager.java | 5 -- .../services/TrackRecordingService.java | 2 - .../sensors/BluetoothSensorManager.java | 19 +++---- .../sensors/SensorManagerFactory.java | 2 - .../tasks/AnnouncementPeriodicTask.java | 41 +++++++------- .../settings/AbstractSettingsActivity.java | 9 ++- .../settings/RecordingSettingsActivity.java | 13 ++--- .../settings/SensorSettingsActivity.java | 9 ++- .../apps/mytracks/stats/DoubleBuffer.java | 3 + .../apps/mytracks/stats/ExtremityMonitor.java | 3 + .../apps/mytracks/stats/TripStatistics.java | 3 + .../apps/mytracks/util/ListItemUtils.java | 4 +- .../apps/mytracks/util/StringUtils.java | 10 +--- .../apps/mytracks/util/SystemUtils.java | 7 +-- .../TrackRecordingServiceConnectionUtils.java | 17 +++--- 39 files changed, 239 insertions(+), 283 deletions(-) diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractTrackActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractTrackActivity.java index 89a3f8349..412de762e 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractTrackActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractTrackActivity.java @@ -16,19 +16,10 @@ package com.google.android.apps.mytracks; -import com.google.android.apps.mytracks.fragments.ConfirmDeleteDialogFragment; -import com.google.android.apps.mytracks.fragments.ConfirmDeleteDialogFragment.ConfirmDeleteCaller; -import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; -import com.google.android.apps.mytracks.util.IntentUtils; -import com.google.android.apps.mytracks.util.PreferencesUtils; -import com.google.android.apps.mytracks.util.TrackRecordingServiceConnectionUtils; -import com.google.android.maps.mytracks.R; - import android.app.Activity; import android.app.SearchManager; import android.content.Context; import android.content.Intent; -import android.util.Log; import android.util.SparseBooleanArray; import android.view.ActionMode; import android.view.Menu; @@ -38,6 +29,14 @@ import android.widget.AbsListView; import android.widget.ListView; import android.widget.SearchView; +import com.google.android.apps.mytracks.fragments.ConfirmDeleteDialogFragment; +import com.google.android.apps.mytracks.fragments.ConfirmDeleteDialogFragment.ConfirmDeleteCaller; +import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; +import com.google.android.apps.mytracks.util.IntentUtils; +import com.google.android.apps.mytracks.util.PreferencesUtils; +import com.google.android.apps.mytracks.util.TrackRecordingServiceConnectionUtils; +import com.google.android.maps.mytracks.R; + import java.util.ArrayList; /** @@ -64,8 +63,7 @@ public abstract class AbstractTrackActivity extends AbstractActivity implements } } - public static void configureListViewContextualMenu(final Activity activity, final ListView listView, - final ContextualActionModeCallback contextualActionModeCallback) { + public static void configureListViewContextualMenu(final ListView listView, final ContextualActionModeCallback contextualActionModeCallback) { listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() { diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/ChartView.java b/myTracks/src/main/java/com/google/android/apps/mytracks/ChartView.java index 1cdd105fd..29ccfe755 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/ChartView.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/ChartView.java @@ -33,8 +33,6 @@ import android.view.View; import android.view.ViewConfiguration; import android.widget.Scroller; -import androidx.annotation.VisibleForTesting; - import com.google.android.apps.mytracks.content.Waypoint; import com.google.android.apps.mytracks.stats.ExtremityMonitor; import com.google.android.apps.mytracks.util.IntentUtils; @@ -649,18 +647,15 @@ public class ChartView extends View { /** * Draws a x axis marker. * - * @param canvas + * @param canvas canvas * @param value value * @param numberFormat the number format * @param spacing the spacing between x axis and marker */ - private void drawXAxisMarker( - Canvas canvas, double value, NumberFormat numberFormat, int spacing) { - String marker = chartByDistance ? numberFormat.format(value) - : StringUtils.formatElapsedTime((long) value); + private void drawXAxisMarker(Canvas canvas, double value, NumberFormat numberFormat, int spacing) { + String marker = chartByDistance ? numberFormat.format(value) : StringUtils.formatElapsedTime((long) value); Rect rect = getRect(xAxisMarkerPaint, marker); - canvas.drawText(marker, getX(value), topBorder + effectiveHeight + spacing + rect.height(), - xAxisMarkerPaint); + canvas.drawText(marker, getX(value), topBorder + effectiveHeight + spacing + rect.height(), xAxisMarkerPaint); } /** @@ -981,14 +976,4 @@ public class ChartView extends View { return false; } } - - /** - * Returns the status of metricUnits. - * - * @return the status of metricUnits - */ - @VisibleForTesting - public boolean isMetricUnits() { - return metricUnits; - } } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/DeleteAsyncTask.java b/myTracks/src/main/java/com/google/android/apps/mytracks/DeleteAsyncTask.java index 2d4c13f5d..aad2836da 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/DeleteAsyncTask.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/DeleteAsyncTask.java @@ -20,7 +20,6 @@ import android.content.Context; import android.os.AsyncTask; import com.google.android.apps.mytracks.content.MyTracksProviderUtils; -import com.google.android.apps.mytracks.util.UnitConversions; /** * Async Task to delete tracks. diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/MarkerListActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/MarkerListActivity.java index 0302512c7..1402fb262 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/MarkerListActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/MarkerListActivity.java @@ -16,27 +16,12 @@ package com.google.android.apps.mytracks; -import com.google.android.apps.mytracks.content.MyTracksProviderUtils; -import com.google.android.apps.mytracks.content.Track; -import com.google.android.apps.mytracks.content.Waypoint.WaypointType; -import com.google.android.apps.mytracks.content.WaypointsColumns; -import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment; -import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment.DeleteMarkerCaller; -import com.google.android.apps.mytracks.util.IntentUtils; -import com.google.android.apps.mytracks.util.ListItemUtils; -import com.google.android.apps.mytracks.util.PreferencesUtils; -import com.google.android.maps.mytracks.R; - import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.database.Cursor; import android.os.Bundle; -import androidx.loader.app.LoaderManager.LoaderCallbacks; -import androidx.loader.content.CursorLoader; -import androidx.loader.content.Loader; -import androidx.cursoradapter.widget.ResourceCursorAdapter; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -49,6 +34,24 @@ import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; +import androidx.annotation.NonNull; +import androidx.cursoradapter.widget.ResourceCursorAdapter; +import androidx.loader.app.LoaderManager; +import androidx.loader.app.LoaderManager.LoaderCallbacks; +import androidx.loader.content.CursorLoader; +import androidx.loader.content.Loader; + +import com.google.android.apps.mytracks.content.MyTracksProviderUtils; +import com.google.android.apps.mytracks.content.Track; +import com.google.android.apps.mytracks.content.Waypoint.WaypointType; +import com.google.android.apps.mytracks.content.WaypointsColumns; +import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment; +import com.google.android.apps.mytracks.fragments.DeleteMarkerDialogFragment.DeleteMarkerCaller; +import com.google.android.apps.mytracks.util.IntentUtils; +import com.google.android.apps.mytracks.util.ListItemUtils; +import com.google.android.apps.mytracks.util.PreferencesUtils; +import com.google.android.maps.mytracks.R; + /** * Activity to show a list of markers in a track. * @@ -177,10 +180,11 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker } }; listView.setAdapter(resourceCursorAdapter); - AbstractTrackActivity.configureListViewContextualMenu(this, listView, contextualActionModeCallback); + AbstractTrackActivity.configureListViewContextualMenu(listView, contextualActionModeCallback); final long firstWaypointId = myTracksProviderUtils.getFirstWaypointId(trackId); - getSupportLoaderManager().initLoader(0, null, new LoaderCallbacks() { + LoaderManager.getInstance(this).initLoader(0, null, new LoaderCallbacks() { + @NonNull @Override public Loader onCreateLoader(int arg0, Bundle arg1) { return new CursorLoader(MarkerListActivity.this, WaypointsColumns.CONTENT_URI, PROJECTION, @@ -189,12 +193,12 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker } @Override - public void onLoadFinished(Loader loader, Cursor cursor) { + public void onLoadFinished(@NonNull Loader loader, Cursor cursor) { resourceCursorAdapter.swapCursor(cursor); } @Override - public void onLoaderReset(Loader loader) { + public void onLoaderReset(@NonNull Loader loader) { resourceCursorAdapter.swapCursor(null); } }); @@ -244,15 +248,13 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.marker_list_insert_marker: - Intent intent = IntentUtils.newIntent(this, MarkerEditActivity.class) - .putExtra(MarkerEditActivity.EXTRA_TRACK_ID, track.getId()); - startActivity(intent); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.marker_list_insert_marker) { + Intent intent = IntentUtils.newIntent(this, MarkerEditActivity.class) + .putExtra(MarkerEditActivity.EXTRA_TRACK_ID, track.getId()); + startActivity(intent); + return true; } + return super.onOptionsItemSelected(item); } @Override diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/SearchListActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/SearchListActivity.java index c440d4ec8..758c11f52 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/SearchListActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/SearchListActivity.java @@ -36,6 +36,8 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; +import androidx.annotation.NonNull; + import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.content.SearchEngine; import com.google.android.apps.mytracks.content.SearchEngine.ScoredResult; @@ -179,8 +181,9 @@ public class SearchListActivity extends AbstractTrackActivity implements DeleteM searchRecentSuggestions = SearchEngineProvider.newHelper(this); arrayAdapter = new ArrayAdapter>(this, R.layout.list_item, R.id.list_item_name) { + @NonNull @Override - public View getView(int position, View convertView, android.view.ViewGroup parent) { + public View getView(int position, View convertView, @NonNull android.view.ViewGroup parent) { View view; if (convertView == null) { view = getLayoutInflater().inflate(R.layout.list_item, parent, false); @@ -228,7 +231,7 @@ public class SearchListActivity extends AbstractTrackActivity implements DeleteM startActivity(intent); } }); - AbstractTrackActivity.configureListViewContextualMenu(this, listView, contextualActionModeCallback); + AbstractTrackActivity.configureListViewContextualMenu(listView, contextualActionModeCallback); handleIntent(getIntent()); } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/SensorStateActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/SensorStateActivity.java index 444e27e9f..01478e4f5 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/SensorStateActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/SensorStateActivity.java @@ -16,6 +16,12 @@ package com.google.android.apps.mytracks; +import android.os.Bundle; +import android.os.Handler; +import android.text.format.DateFormat; +import android.util.Log; +import android.widget.TextView; + import com.google.android.apps.mytracks.content.Sensor; import com.google.android.apps.mytracks.services.ITrackRecordingService; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; @@ -27,13 +33,6 @@ import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.mytracks.R; import com.google.protobuf.InvalidProtocolBufferException; -import android.os.Bundle; -import android.os.Handler; -import android.os.RemoteException; -import android.text.format.DateFormat; -import android.util.Log; -import android.widget.TextView; - /** * An activity that displays information about sensors. * diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackController.java b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackController.java index d474fd441..db19580df 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackController.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackController.java @@ -16,21 +16,19 @@ package com.google.android.apps.mytracks; +import android.app.Activity; +import android.os.Handler; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ImageButton; +import android.widget.TextView; + import com.google.android.apps.mytracks.services.ITrackRecordingService; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.apps.mytracks.util.StringUtils; import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.mytracks.R; -import android.app.Activity; -import android.os.Handler; -import android.os.RemoteException; -import android.util.Log; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.ImageButton; -import android.widget.TextView; - /** * Track controller for record, pause, resume, and stop. * diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java index 1f8efaaab..612d87da1 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java @@ -48,6 +48,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import androidx.cursoradapter.widget.ResourceCursorAdapter; +import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager.LoaderCallbacks; import androidx.loader.content.CursorLoader; import androidx.loader.content.Loader; @@ -161,7 +162,7 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType @Override public void run() { TrackListActivity.this.invalidateOptionsMenu(); - getSupportLoaderManager().restartLoader(0, null, loaderCallbacks); + LoaderManager.getInstance(TrackListActivity.this).restartLoader(0, null, loaderCallbacks); boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; trackController.update(isRecording, recordingTrackPaused); } @@ -230,12 +231,12 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType } @Override - public void onLoadFinished(Loader loader, Cursor cursor) { + public void onLoadFinished(@NonNull Loader loader, Cursor cursor) { resourceCursorAdapter.swapCursor(cursor); } @Override - public void onLoaderReset(Loader loader) { + public void onLoaderReset(@NonNull Loader loader) { resourceCursorAdapter.swapCursor(null); } }; @@ -339,9 +340,9 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType } }; listView.setAdapter(resourceCursorAdapter); - AbstractTrackActivity.configureListViewContextualMenu(this, listView, contextualActionModeCallback); + AbstractTrackActivity.configureListViewContextualMenu(listView, contextualActionModeCallback); - getSupportLoaderManager().initLoader(0, null, loaderCallbacks); + LoaderManager.getInstance(this).initLoader(0, null, loaderCallbacks); showStartupDialogs(); } @@ -365,7 +366,7 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType // Update UI this.invalidateOptionsMenu(); - getSupportLoaderManager().restartLoader(0, null, loaderCallbacks); + LoaderManager.getInstance(this).restartLoader(0, null, loaderCallbacks); boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; trackController.onResume(isRecording, recordingTrackPaused); } @@ -432,7 +433,7 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType updateMenuItems(isGpsStarted, isRecording); View searchView = searchMenuItem.getActionView(); - if (searchView != null && searchView instanceof SearchView) { + if (searchView instanceof SearchView) { ((SearchView) searchView).setQuery("", false); } return super.onPrepareOptionsMenu(menu); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProvider.java b/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProvider.java index 1a1e75146..437f965b8 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProvider.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProvider.java @@ -33,6 +33,7 @@ import android.os.ParcelFileDescriptor; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.google.android.apps.mytracks.util.FileUtils; @@ -129,7 +130,7 @@ public class MyTracksProvider extends ContentProvider { } @Override - public int delete(Uri url, String where, String[] selectionArgs) { + public int delete(@NonNull Uri url, String where, String[] selectionArgs) { String table; boolean shouldVacuum = false; switch (getUrlType(url)) { @@ -167,7 +168,7 @@ public class MyTracksProvider extends ContentProvider { } @Override - public String getType(Uri url) { + public String getType(@NonNull Uri url) { switch (getUrlType(url)) { case TRACKPOINTS: return TrackPointsColumns.CONTENT_TYPE; @@ -187,7 +188,7 @@ public class MyTracksProvider extends ContentProvider { } @Override - public Uri insert(Uri url, ContentValues initialValues) { + public Uri insert(@NonNull Uri url, ContentValues initialValues) { if (initialValues == null) { initialValues = new ContentValues(); } @@ -204,7 +205,7 @@ public class MyTracksProvider extends ContentProvider { } @Override - public int bulkInsert(Uri url, ContentValues[] valuesBulk) { + public int bulkInsert(@NonNull Uri url, @NonNull ContentValues[] valuesBulk) { int numInserted; try { // Use a transaction in order to make the insertions run as a single batch @@ -227,7 +228,7 @@ public class MyTracksProvider extends ContentProvider { } @Override - public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) { + public Cursor query(@NonNull Uri url, String[] projection, String selection, String[] selectionArgs, String sort) { SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); String sortOrder = null; switch (getUrlType(url)) { @@ -264,7 +265,7 @@ public class MyTracksProvider extends ContentProvider { } @Override - public int update(Uri url, ContentValues values, String where, String[] selectionArgs) { + public int update(@NonNull Uri url, ContentValues values, String where, String[] selectionArgs) { String table; String whereClause; switch (getUrlType(url)) { @@ -317,7 +318,7 @@ public class MyTracksProvider extends ContentProvider { } @Override - public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { + public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException { try { File file = new File(uri.getPath()); if (file.exists()) { diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java b/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java index bd6f99894..52d267cb8 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java @@ -16,12 +16,6 @@ package com.google.android.apps.mytracks.content; -import com.google.android.apps.mytracks.content.Sensor.SensorDataSet; -import com.google.android.apps.mytracks.content.Waypoint.WaypointType; -import com.google.android.apps.mytracks.stats.TripStatistics; -import com.google.android.apps.mytracks.util.FileUtils; -import com.google.protobuf.InvalidProtocolBufferException; - import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; @@ -30,6 +24,12 @@ import android.location.Location; import android.net.Uri; import android.util.Log; +import com.google.android.apps.mytracks.content.Sensor.SensorDataSet; +import com.google.android.apps.mytracks.content.Waypoint.WaypointType; +import com.google.android.apps.mytracks.stats.TripStatistics; +import com.google.android.apps.mytracks.util.FileUtils; +import com.google.protobuf.InvalidProtocolBufferException; + import java.io.File; import java.util.ArrayList; import java.util.List; @@ -312,10 +312,8 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils { * @param selectionArgs the selection arguments * @param sortOrder the sort oder */ - private Cursor getTrackCursor( - String[] projection, String selection, String[] selectionArgs, String sortOrder) { - return contentResolver.query( - TracksColumns.CONTENT_URI, projection, selection, selectionArgs, sortOrder); + private Cursor getTrackCursor(String[] projection, String selection, String[] selectionArgs, String sortOrder) { + return contentResolver.query(TracksColumns.CONTENT_URI, projection, selection, selectionArgs, sortOrder); } @Override diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/content/SearchEngine.java b/myTracks/src/main/java/com/google/android/apps/mytracks/content/SearchEngine.java index ddc6559c4..8a611d06f 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/content/SearchEngine.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/content/SearchEngine.java @@ -15,13 +15,15 @@ */ package com.google.android.apps.mytracks.content; +import android.database.Cursor; +import android.location.Location; + +import androidx.annotation.NonNull; + import com.google.android.apps.mytracks.stats.TripStatistics; import com.google.android.apps.mytracks.util.LocationUtils; import com.google.android.apps.mytracks.util.UnitConversions; -import android.database.Cursor; -import android.location.Location; - import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; @@ -113,6 +115,7 @@ public class SearchEngine { public final Waypoint waypoint; public final double score; + @NonNull @Override public String toString() { return "ScoredResult [" diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/content/Waypoint.java b/myTracks/src/main/java/com/google/android/apps/mytracks/content/Waypoint.java index 78b707ae5..14079856b 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/content/Waypoint.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/content/Waypoint.java @@ -23,8 +23,6 @@ import android.os.Parcelable; import com.google.android.apps.mytracks.stats.TripStatistics; -import java.net.URI; - /** * A waypoint. * diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/content/WaypointsColumns.java b/myTracks/src/main/java/com/google/android/apps/mytracks/content/WaypointsColumns.java index ea007283f..37f37a460 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/content/WaypointsColumns.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/content/WaypointsColumns.java @@ -16,11 +16,6 @@ package com.google.android.apps.mytracks.content; -import static com.google.android.apps.mytracks.content.ContentTypeIds.FLOAT_TYPE_ID; -import static com.google.android.apps.mytracks.content.ContentTypeIds.INT_TYPE_ID; -import static com.google.android.apps.mytracks.content.ContentTypeIds.LONG_TYPE_ID; -import static com.google.android.apps.mytracks.content.ContentTypeIds.STRING_TYPE_ID; - import android.net.Uri; import android.provider.BaseColumns; diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChartFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChartFragment.java index 1cb05e095..3e62cf549 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChartFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChartFragment.java @@ -18,15 +18,17 @@ package com.google.android.apps.mytracks.fragments; import android.location.Location; import android.os.Bundle; -import androidx.annotation.VisibleForTesting; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.ZoomControls; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; + import com.google.android.apps.mytracks.ChartView; import com.google.android.apps.mytracks.TrackDetailActivity; import com.google.android.apps.mytracks.content.MyTracksLocation; @@ -108,7 +110,7 @@ public class ChartFragment extends Fragment implements TrackDataListener { @Override public View onCreateView( - LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + @NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.chart, container, false); zoomControls = view.findViewById(R.id.chart_zoom_controls); zoomControls.setOnZoomInClickListener(new View.OnClickListener() { @@ -507,11 +509,6 @@ public class ChartFragment extends Fragment implements TrackDataListener { } } - @VisibleForTesting - ChartView getChartView() { - return chartView; - } - @VisibleForTesting void setTripStatisticsUpdater(long time) { tripStatisticsUpdater = new TripStatisticsUpdater(time); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java index a37334fd1..270258306 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java @@ -16,27 +16,28 @@ package com.google.android.apps.mytracks.fragments; -import com.google.android.apps.mytracks.util.IntentUtils; -import com.google.android.maps.mytracks.R; - -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; -import androidx.annotation.NonNull; -import androidx.fragment.app.FragmentActivity; -import androidx.core.app.ShareCompat; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.core.app.ShareCompat; +import androidx.fragment.app.FragmentActivity; + +import com.google.android.apps.mytracks.util.IntentUtils; +import com.google.android.maps.mytracks.R; + import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -68,19 +69,16 @@ public class ChooseActivityDialogFragment extends AbstractMyTracksDialogFragment ImageView icon; } - public static final String CHOOSE_ACTIVITY_DIALOG_TAG = "chooseActivityDialog"; - private ChooseActivityCaller caller; private PackageManager packageManager; @Override - public void onAttach(Activity activity) { - super.onAttach(activity); + public void onAttach(Context context) { + super.onAttach(context); try { - caller = (ChooseActivityCaller) activity; + caller = (ChooseActivityCaller) context; } catch (ClassCastException e) { - throw new ClassCastException( - activity.toString() + " must implement " + ChooseActivityCaller.class.getSimpleName()); + throw new ClassCastException(context + " must implement " + ChooseActivityCaller.class.getSimpleName()); } } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java index 84f6aa150..52732fdc0 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ChooseActivityTypeDialogFragment.java @@ -16,25 +16,25 @@ package com.google.android.apps.mytracks.fragments; -import com.google.android.apps.mytracks.util.DialogUtils; -import com.google.android.apps.mytracks.util.PreferencesUtils; -import com.google.android.apps.mytracks.util.StringUtils; -import com.google.android.apps.mytracks.util.TrackIconUtils; -import com.google.android.maps.mytracks.R; - import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; import android.graphics.BitmapFactory; import android.graphics.BitmapFactory.Options; import android.os.Bundle; -import androidx.fragment.app.DialogFragment; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; -import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; + +import com.google.android.apps.mytracks.util.DialogUtils; +import com.google.android.apps.mytracks.util.TrackIconUtils; +import com.google.android.maps.mytracks.R; import java.util.ArrayList; import java.util.List; @@ -75,16 +75,16 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment { } @Override - public void onAttach(Activity activity) { - super.onAttach(activity); + public void onAttach(Context context) { + super.onAttach(context); try { - caller = (ChooseActivityTypeCaller) activity; + caller = (ChooseActivityTypeCaller) context; } catch (ClassCastException e) { - throw new ClassCastException(activity.toString() + " must implement " - + ChooseActivityTypeCaller.class.getSimpleName()); + throw new ClassCastException(context + " must implement " + ChooseActivityTypeCaller.class.getSimpleName()); } } + @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return getDialog(getActivity(), getArguments().getString(KEY_CATEGORY), caller); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ConfirmDeleteDialogFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ConfirmDeleteDialogFragment.java index 87a061801..570bd921b 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ConfirmDeleteDialogFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/ConfirmDeleteDialogFragment.java @@ -16,14 +16,14 @@ package com.google.android.apps.mytracks.fragments; -import com.google.android.apps.mytracks.util.DialogUtils; -import com.google.android.maps.mytracks.R; - -import android.app.Activity; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import com.google.android.apps.mytracks.util.DialogUtils; +import com.google.android.maps.mytracks.R; + /** * A DialogFragment to confirm delete. * @@ -68,13 +68,12 @@ public class ConfirmDeleteDialogFragment extends AbstractMyTracksDialogFragment private ConfirmDeleteCaller caller; @Override - public void onAttach(Activity activity) { - super.onAttach(activity); + public void onAttach(Context context) { + super.onAttach(context); try { - caller = (ConfirmDeleteCaller) activity; + caller = (ConfirmDeleteCaller) context; } catch (ClassCastException e) { - throw new ClassCastException( - activity.toString() + " must implement " + ConfirmDeleteCaller.class.getSimpleName()); + throw new ClassCastException(context + " must implement " + ConfirmDeleteCaller.class.getSimpleName()); } } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/DeleteMarkerDialogFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/DeleteMarkerDialogFragment.java index 86581dbdc..14f43bcc9 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/DeleteMarkerDialogFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/DeleteMarkerDialogFragment.java @@ -16,17 +16,18 @@ package com.google.android.apps.mytracks.fragments; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; + +import androidx.fragment.app.FragmentActivity; + import com.google.android.apps.mytracks.content.DescriptionGeneratorImpl; import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.util.DialogUtils; import com.google.android.maps.mytracks.R; -import android.app.Activity; -import android.app.Dialog; -import android.content.DialogInterface; -import android.os.Bundle; -import androidx.fragment.app.FragmentActivity; - /** * A DialogFragment to delete marker. * @@ -62,13 +63,12 @@ public class DeleteMarkerDialogFragment extends AbstractMyTracksDialogFragment { private DeleteMarkerCaller caller; @Override - public void onAttach(Activity activity) { - super.onAttach(activity); + public void onAttach(Context context) { + super.onAttach(context); try { - caller = (DeleteMarkerCaller) activity; + caller = (DeleteMarkerCaller) context; } catch (ClassCastException e) { - throw new ClassCastException( - activity.toString() + " must implement " + DeleteMarkerCaller.class.getSimpleName()); + throw new ClassCastException(context + " must implement " + DeleteMarkerCaller.class.getSimpleName()); } } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java index 1cd8bd51c..97f1d8cfb 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java @@ -16,17 +16,17 @@ package com.google.android.apps.mytracks.fragments; -import com.google.android.apps.mytracks.io.file.TrackFileFormat; -import com.google.android.apps.mytracks.util.FileUtils; -import com.google.android.maps.mytracks.R; - -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; +import com.google.android.apps.mytracks.io.file.TrackFileFormat; +import com.google.android.apps.mytracks.util.FileUtils; +import com.google.android.maps.mytracks.R; + /** * A DialogFragment to select a file type, gpx, kml, etc. * @@ -70,13 +70,12 @@ public class FileTypeDialogFragment extends AbstractMyTracksDialogFragment { private FileTypeCaller caller; @Override - public void onAttach(Activity activity) { - super.onAttach(activity); + public void onAttach(Context context) { + super.onAttach(context); try { - caller = (FileTypeCaller) activity; + caller = (FileTypeCaller) context; } catch (ClassCastException e) { - throw new ClassCastException( - activity.toString() + " must implement " + FileTypeCaller.class.getSimpleName()); + throw new ClassCastException(context + " must implement " + FileTypeCaller.class.getSimpleName()); } } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java index d0e28b9f6..919b7f923 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java @@ -34,6 +34,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; @@ -118,7 +119,7 @@ public class MarkerDetailFragment extends Fragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.marker_detail_fragment, container, false); getActivity().setTitle(getArguments().getString(KEY_TITLE)); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/StatsFragment.java b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/StatsFragment.java index 614fe78c9..6a5f42db6 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/StatsFragment.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/fragments/StatsFragment.java @@ -19,7 +19,6 @@ package com.google.android.apps.mytracks.fragments; import android.location.Location; import android.os.Bundle; import android.os.Handler; -import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -27,12 +26,11 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Spinner; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import com.google.android.apps.mytracks.TrackDetailActivity; -import com.google.android.apps.mytracks.content.MyTracksLocation; -import com.google.android.apps.mytracks.content.Sensor; import com.google.android.apps.mytracks.content.Track; import com.google.android.apps.mytracks.content.TrackDataHub; import com.google.android.apps.mytracks.content.TrackDataListener; @@ -79,7 +77,7 @@ public class StatsFragment extends Fragment implements TrackDataListener { }; @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.stats, container, false); } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/AbstractFileTrackImporter.java b/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/AbstractFileTrackImporter.java index 23b7b9394..1f254e05c 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/AbstractFileTrackImporter.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/AbstractFileTrackImporter.java @@ -16,6 +16,12 @@ package com.google.android.apps.mytracks.io.file.importer; +import android.content.Context; +import android.location.Location; +import android.location.LocationManager; +import android.net.Uri; +import android.util.Log; + import com.google.android.apps.mytracks.content.DescriptionGeneratorImpl; import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.content.MyTracksProviderUtils.LocationIterator; @@ -33,11 +39,9 @@ import com.google.android.apps.mytracks.util.TrackIconUtils; import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.mytracks.R; -import android.content.Context; -import android.location.Location; -import android.location.LocationManager; -import android.net.Uri; -import android.util.Log; +import org.xml.sax.Locator; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; import java.io.File; import java.io.IOException; @@ -50,10 +54,6 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; -import org.xml.sax.Locator; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - /** * Abstract class for various file track importers like {@link GpxFileTrackImporter} and * {@link KmlFileTrackImporter}. @@ -403,8 +403,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track Location location = createLocation(); // Calculate derived attributes from the previous point - if (trackData.lastLocationInCurrentSegment != null - && trackData.lastLocationInCurrentSegment.getTime() != 0) { + if (trackData.lastLocationInCurrentSegment != null && trackData.lastLocationInCurrentSegment.getTime() != 0) { long timeDifference = location.getTime() - trackData.lastLocationInCurrentSegment.getTime(); // Check for negative time change diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/KmlFileTrackImporter.java b/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/KmlFileTrackImporter.java index e90550473..1c5fdb2eb 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/KmlFileTrackImporter.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/io/file/importer/KmlFileTrackImporter.java @@ -16,22 +16,23 @@ package com.google.android.apps.mytracks.io.file.importer; +import android.content.Context; +import android.location.Location; +import android.net.Uri; + +import androidx.annotation.VisibleForTesting; + import com.google.android.apps.mytracks.content.MyTracksLocation; import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.content.Sensor; import com.google.android.apps.mytracks.content.Sensor.SensorDataSet; import com.google.android.apps.mytracks.content.Waypoint.WaypointType; -import android.content.Context; -import android.location.Location; -import android.net.Uri; -import androidx.annotation.VisibleForTesting; - -import java.util.ArrayList; - import org.xml.sax.Attributes; import org.xml.sax.SAXException; +import java.util.ArrayList; + /** * Imports a KML file. * @@ -288,8 +289,6 @@ public class KmlFileTrackImporter extends AbstractFileTrackImporter { /** * On sensor data start. gx:SimpleArrayData start tag. - * - * @param attributes */ private void onSensorDataStart(Attributes attributes) { sensorName = attributes.getValue(ATTRIBUTE_NAME); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/services/ControlRecordingService.java b/myTracks/src/main/java/com/google/android/apps/mytracks/services/ControlRecordingService.java index 5edf74dc0..e2bdfefa7 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/services/ControlRecordingService.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/services/ControlRecordingService.java @@ -21,9 +21,8 @@ import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; -import android.os.RemoteException; + import androidx.annotation.VisibleForTesting; -import android.util.Log; import com.google.android.apps.mytracks.widgets.TrackWidgetProvider; import com.google.android.maps.mytracks.R; diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/services/MyTracksLocationManager.java b/myTracks/src/main/java/com/google/android/apps/mytracks/services/MyTracksLocationManager.java index dc0d48bea..653739745 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/services/MyTracksLocationManager.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/services/MyTracksLocationManager.java @@ -17,16 +17,11 @@ package com.google.android.apps.mytracks.services; import android.annotation.SuppressLint; -import android.content.ContentResolver; import android.content.Context; -import android.database.ContentObserver; -import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; -import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import androidx.annotation.Nullable; /** * My Tracks Location Manager. Applies Google location settings before allowing diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/services/TrackRecordingService.java b/myTracks/src/main/java/com/google/android/apps/mytracks/services/TrackRecordingService.java index 24bded4e6..b60a0ad91 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -30,13 +30,11 @@ import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.net.Uri; -import android.os.Binder; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.PowerManager.WakeLock; -import android.os.Process; import android.util.Log; import androidx.annotation.VisibleForTesting; diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/BluetoothSensorManager.java b/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/BluetoothSensorManager.java index 6d7ecc052..8df9ea283 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/BluetoothSensorManager.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/BluetoothSensorManager.java @@ -16,6 +16,15 @@ package com.google.android.apps.mytracks.services.sensors; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.content.Context; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.util.Log; +import android.widget.Toast; + import com.google.android.apps.mytracks.content.Sensor; import com.google.android.apps.mytracks.content.Sensor.SensorDataSet; import com.google.android.apps.mytracks.content.Sensor.SensorState; @@ -23,16 +32,6 @@ import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.mytracks.R; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.util.Log; -import android.widget.Toast; - import java.util.ArrayList; /** diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java b/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java index dd6ad1551..b10712fd4 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java @@ -57,8 +57,6 @@ public class SensorManagerFactory { /** * Gets the temp sensor manager. - * - * @param context */ public static SensorManager getSensorManagerTemporary(Context context) { releaseSensorManagerTemporary(); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/services/tasks/AnnouncementPeriodicTask.java b/myTracks/src/main/java/com/google/android/apps/mytracks/services/tasks/AnnouncementPeriodicTask.java index 6262e6843..cb8e801b2 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/services/tasks/AnnouncementPeriodicTask.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/services/tasks/AnnouncementPeriodicTask.java @@ -20,12 +20,13 @@ import android.content.Context; import android.media.AudioManager; import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech.OnInitListener; -import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener; -import androidx.annotation.VisibleForTesting; +import android.speech.tts.UtteranceProgressListener; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; +import androidx.annotation.VisibleForTesting; + import com.google.android.apps.mytracks.services.TrackRecordingService; import com.google.android.apps.mytracks.stats.TripStatistics; import com.google.android.apps.mytracks.util.PreferencesUtils; @@ -33,7 +34,6 @@ import com.google.android.apps.mytracks.util.StringUtils; import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.mytracks.R; -import java.util.HashMap; import java.util.Locale; /** @@ -51,22 +51,23 @@ public class AnnouncementPeriodicTask implements PeriodicTask { private static final String TAG = AnnouncementPeriodicTask.class.getSimpleName(); - @VisibleForTesting - static final HashMap SPEECH_PARAMS = new HashMap<>(); - static { - SPEECH_PARAMS.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "not_used"); - } + private final UtteranceProgressListener utteranceListener = new UtteranceProgressListener() { + @Override + public void onStart(String utteranceId) { + } - private final OnUtteranceCompletedListener - utteranceListener = new OnUtteranceCompletedListener() { - @Override - public void onUtteranceCompleted(String utteranceId) { - int result = audioManager.abandonAudioFocus(null); - if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) { - Log.w(TAG, "Failed to relinquish audio focus."); - } - } - }; + @Override + public void onDone(String utteranceId) { + int result = audioManager.abandonAudioFocus(null); + if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) { + Log.w(TAG, "Failed to relinquish audio focus."); + } + } + + @Override + public void onError(String utteranceId) { + } + }; private final Context context; private TextToSpeech tts; @@ -186,7 +187,7 @@ public class AnnouncementPeriodicTask implements PeriodicTask { // Slow down the speed just a bit as it is hard to hear when exercising. tts.setSpeechRate(TTS_SPEECH_RATE); - tts.setOnUtteranceCompletedListener(utteranceListener); + tts.setOnUtteranceProgressListener(utteranceListener); } /** @@ -205,7 +206,7 @@ public class AnnouncementPeriodicTask implements PeriodicTask { * We don't care about the utterance id. It is supplied here to force * onUtteranceCompleted to be called. */ - tts.speak(announcement, TextToSpeech.QUEUE_FLUSH, SPEECH_PARAMS); + tts.speak(announcement, TextToSpeech.QUEUE_FLUSH, null, "not used"); } /** diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/settings/AbstractSettingsActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/settings/AbstractSettingsActivity.java index 5c8cedb2d..fa8e75ffd 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/settings/AbstractSettingsActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/settings/AbstractSettingsActivity.java @@ -16,9 +16,6 @@ package com.google.android.apps.mytracks.settings; -import com.google.android.apps.mytracks.Constants; -import com.google.android.maps.mytracks.R; - import android.app.ActionBar; import android.content.Context; import android.os.Bundle; @@ -30,6 +27,9 @@ import android.preference.PreferenceManager; import android.speech.tts.TextToSpeech; import android.view.MenuItem; +import com.google.android.apps.mytracks.Constants; +import com.google.android.maps.mytracks.R; + /** * An abstract activity for all the settings activities. * @@ -101,8 +101,7 @@ public class AbstractSettingsActivity extends PreferenceActivity { * @param values the values array * @param value the value */ - private void updatePreferenceSummary( - Preference preference, String[] summary, String[] values, String value) { + private void updatePreferenceSummary(Preference preference, String[] summary, String[] values, String value) { int index = getIndex(values, value); if (index == -1) { preference.setSummary(R.string.value_unknown); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/settings/RecordingSettingsActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/settings/RecordingSettingsActivity.java index 4e45f165f..998a4053d 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/settings/RecordingSettingsActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/settings/RecordingSettingsActivity.java @@ -16,6 +16,11 @@ package com.google.android.apps.mytracks.settings; +import android.app.Dialog; +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.Preference; + import com.google.android.apps.mytracks.fragments.ChooseActivityTypeDialogFragment; import com.google.android.apps.mytracks.fragments.ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller; import com.google.android.apps.mytracks.util.PreferencesUtils; @@ -23,11 +28,6 @@ import com.google.android.apps.mytracks.util.StringUtils; import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.maps.mytracks.R; -import android.app.Dialog; -import android.os.Bundle; -import android.preference.ListPreference; -import android.preference.Preference; - /** * An activity for accessing recording settings. * @@ -81,8 +81,7 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity return ChooseActivityTypeDialogFragment.getDialog(this, category, this); } - private void configFrequencyPreference( - int key, int defaultValue, int valueArray, boolean metricUnits) { + private void configFrequencyPreference(int key, int defaultValue, int valueArray, boolean metricUnits) { ListPreference preference = (ListPreference) findPreference(getString(key)); int value = PreferencesUtils.getInt(this, key, defaultValue); String[] values = getResources().getStringArray(valueArray); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/settings/SensorSettingsActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/settings/SensorSettingsActivity.java index 605c7faac..0b6603880 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/settings/SensorSettingsActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/settings/SensorSettingsActivity.java @@ -16,19 +16,18 @@ package com.google.android.apps.mytracks.settings; -import com.google.android.apps.mytracks.util.BluetoothDeviceUtils; -import com.google.android.apps.mytracks.util.PreferencesUtils; -import com.google.android.maps.mytracks.R; - import android.bluetooth.BluetoothAdapter; import android.content.Intent; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; -import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.provider.Settings; +import com.google.android.apps.mytracks.util.BluetoothDeviceUtils; +import com.google.android.apps.mytracks.util.PreferencesUtils; +import com.google.android.maps.mytracks.R; + import java.util.ArrayList; import java.util.List; diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/stats/DoubleBuffer.java b/myTracks/src/main/java/com/google/android/apps/mytracks/stats/DoubleBuffer.java index 1c53d4790..2e55ac094 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/stats/DoubleBuffer.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/stats/DoubleBuffer.java @@ -16,6 +16,8 @@ package com.google.android.apps.mytracks.stats; +import androidx.annotation.NonNull; + /** * This class maintains a buffer of doubles. This buffer is a convenient class * for storing a series of doubles and calculating information about them. This @@ -118,6 +120,7 @@ public class DoubleBuffer { } } + @NonNull @Override public String toString() { StringBuilder builder = new StringBuilder("Full: "); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/stats/ExtremityMonitor.java b/myTracks/src/main/java/com/google/android/apps/mytracks/stats/ExtremityMonitor.java index 8a4618588..012cdb299 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/stats/ExtremityMonitor.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/stats/ExtremityMonitor.java @@ -16,6 +16,8 @@ package com.google.android.apps.mytracks.stats; +import androidx.annotation.NonNull; + /** * A helper class that tracks a minimum and a maximum of a variable. * @@ -110,6 +112,7 @@ public class ExtremityMonitor { return min != Double.POSITIVE_INFINITY && max != Double.NEGATIVE_INFINITY; } + @NonNull @Override public String toString() { return "Min: " + min + " Max: " + max; diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/stats/TripStatistics.java b/myTracks/src/main/java/com/google/android/apps/mytracks/stats/TripStatistics.java index 6cd8854cf..5354cfe14 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/stats/TripStatistics.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/stats/TripStatistics.java @@ -19,6 +19,8 @@ package com.google.android.apps.mytracks.stats; import android.os.Parcel; import android.os.Parcelable; +import androidx.annotation.NonNull; + /** * Statistical data about a trip. The data in this class should be filled out by * TripStatisticsBuilder. @@ -477,6 +479,7 @@ public class TripStatistics implements Parcelable { gradeExtremities.update(grade); } + @NonNull @Override public String toString() { return "TripStatistics { Start Time: " + getStartTime() + "; Stop Time: " + getStopTime() diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/util/ListItemUtils.java b/myTracks/src/main/java/com/google/android/apps/mytracks/util/ListItemUtils.java index af7bc0731..4d637b8db 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/util/ListItemUtils.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/util/ListItemUtils.java @@ -21,7 +21,6 @@ import android.content.Context; import android.content.res.TypedArray; import android.net.Uri; import android.text.format.DateUtils; -import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.ViewGroup.LayoutParams; @@ -75,8 +74,7 @@ public class ListItemUtils { textGradient.setVisibility(hasPhoto ? View.VISIBLE : View.GONE); if (hasPhoto) { - int photoHeight = getPhotoHeight(activity); - photo.getLayoutParams().height = photoHeight; + photo.getLayoutParams().height = getPhotoHeight(activity); photo.setImageResource(android.R.color.transparent); photo.setImageURI(Uri.parse(photoUrl)); } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/util/StringUtils.java b/myTracks/src/main/java/com/google/android/apps/mytracks/util/StringUtils.java index be7795226..1a50cfff3 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/util/StringUtils.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/util/StringUtils.java @@ -15,8 +15,6 @@ */ package com.google.android.apps.mytracks.util; -import com.google.android.maps.mytracks.R; - import android.content.Context; import android.location.Location; import android.text.Html; @@ -24,6 +22,8 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.format.DateUtils; +import com.google.android.maps.mytracks.R; + import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Date; @@ -152,11 +152,7 @@ public class StringUtils { } public static String formatDecimal(double value) { - return formatDecimal(value, 2); - } - - private static String formatDecimal(double value, int precision) { - String result = String.format(Locale.getDefault(), "%1$,." + precision + "f", value); + String result = String.format(Locale.getDefault(), "%1$,.2f", value); return result.replaceAll("[0]*$", "").replaceAll("\\.$", ""); } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/util/SystemUtils.java b/myTracks/src/main/java/com/google/android/apps/mytracks/util/SystemUtils.java index b7c35b17c..b0e4203a3 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/util/SystemUtils.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/util/SystemUtils.java @@ -16,6 +16,7 @@ package com.google.android.apps.mytracks.util; +import android.annotation.SuppressLint; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -51,17 +52,13 @@ public class SystemUtils { } } - /** - * Tries to acquire a partial wake lock if not already acquired. Logs errors - * and gives up trying in case the wake lock cannot be acquired. - */ - /** * Acquire a wake lock if not already acquired. * * @param context the context * @param wakeLock wake lock or null */ + @SuppressLint("WakelockTimeout") public static WakeLock acquireWakeLock(Context context, WakeLock wakeLock) { Log.i(TAG, "Acquiring wake lock."); try { diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/util/TrackRecordingServiceConnectionUtils.java b/myTracks/src/main/java/com/google/android/apps/mytracks/util/TrackRecordingServiceConnectionUtils.java index a8c27a784..c8ccba66d 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/util/TrackRecordingServiceConnectionUtils.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/util/TrackRecordingServiceConnectionUtils.java @@ -16,6 +16,14 @@ package com.google.android.apps.mytracks.util; +import android.app.ActivityManager; +import android.app.ActivityManager.RunningServiceInfo; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.util.Log; +import android.widget.Toast; + import com.google.android.apps.mytracks.TrackEditActivity; import com.google.android.apps.mytracks.content.WaypointCreationRequest; import com.google.android.apps.mytracks.services.ITrackRecordingService; @@ -23,15 +31,6 @@ import com.google.android.apps.mytracks.services.TrackRecordingService; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.maps.mytracks.R; -import android.app.ActivityManager; -import android.app.ActivityManager.RunningServiceInfo; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.os.RemoteException; -import android.util.Log; -import android.widget.Toast; - import java.util.List; /**