Cleanup using AndroidStudio analyze.

This commit is contained in:
Dennis Guse
2023-06-21 23:14:38 +02:00
parent 7e9b99ae1c
commit 1a5acc8f2d
24 changed files with 34 additions and 87 deletions
@@ -15,8 +15,6 @@ import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.allOf;
import static de.dennisguse.opentracks.util.EspressoUtils.waitFor; import static de.dennisguse.opentracks.util.EspressoUtils.waitFor;
import android.Manifest;
import androidx.test.espresso.ViewInteraction; import androidx.test.espresso.ViewInteraction;
import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -13,8 +13,6 @@ import static org.hamcrest.Matchers.anything;
import static de.dennisguse.opentracks.util.EspressoUtils.selectTabAtIndex; import static de.dennisguse.opentracks.util.EspressoUtils.selectTabAtIndex;
import static de.dennisguse.opentracks.util.EspressoUtils.waitFor; import static de.dennisguse.opentracks.util.EspressoUtils.waitFor;
import android.Manifest;
import androidx.test.espresso.ViewInteraction; import androidx.test.espresso.ViewInteraction;
import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -5,8 +5,6 @@ import android.os.Build;
import androidx.test.rule.GrantPermissionRule; import androidx.test.rule.GrantPermissionRule;
import de.dennisguse.opentracks.test.BuildConfig;
public class TestUtil { public class TestUtil {
public static GrantPermissionRule createGrantPermissionRule() { public static GrantPermissionRule createGrantPermissionRule() {
@@ -5,8 +5,6 @@ import android.location.Location;
import androidx.test.rule.ServiceTestRule; import androidx.test.rule.ServiceTestRule;
import java.util.concurrent.TimeoutException;
import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.services.handlers.TrackPointCreator;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
@@ -16,7 +14,7 @@ public class TrackRecordingServiceTestUtils {
//TODO Workaround as service is not stopped on API23; thus sharedpreferences are not reset between tests. //TODO Workaround as service is not stopped on API23; thus sharedpreferences are not reset between tests.
//TODO Anyhow, the service should re-create all it's resources if a recording starts and makes sure that there is no leftovers from previous recordings. //TODO Anyhow, the service should re-create all it's resources if a recording starts and makes sure that there is no leftovers from previous recordings.
@Deprecated @Deprecated
public static void resetService(ServiceTestRule mServiceRule, Context context) throws TimeoutException { public static void resetService(ServiceTestRule mServiceRule, Context context) {
// Let's use default values. // Let's use default values.
PreferencesUtils.clear(); PreferencesUtils.clear();
} }
@@ -5,7 +5,6 @@ import static org.junit.Assert.assertNull;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -226,25 +225,6 @@ public class TrackStatisticsUpdaterTest {
assertEquals(59.18, subject.getTrackStatistics().getTotalDistance().toM(), 0.01); assertEquals(59.18, subject.getTrackStatistics().getTotalDistance().toM(), 0.01);
} }
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
@Test
public void addTrackPoint_speed_from_GPS_not_moving() {
}
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
@Test
public void addTrackPoint_speed_from_GPS_moving() {
}
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
@Test
public void addTrackPoint_speed_from_GPS_not_moving_and_sensor_speed() {
}
@Ignore("TODO: create a concept ont to compute speed from GPS and sensor")
@Test
public void addTrackPoint_speed_from_GPS_moving_and_sensor_speed() {
}
@Test @Test
public void addTrackPoint_maxSpeed_ignore_above_acceleration() { public void addTrackPoint_maxSpeed_ignore_above_acceleration() {
@@ -1,7 +1,5 @@
package de.dennisguse.opentracks.data.models; package de.dennisguse.opentracks.data.models;
import java.util.Objects;
public record AtmosphericPressure(float value) { public record AtmosphericPressure(float value) {
public static AtmosphericPressure ofPA(float value_Pa) { public static AtmosphericPressure ofPA(float value_Pa) {
@@ -1,9 +1,6 @@
package de.dennisguse.opentracks.data.models; package de.dennisguse.opentracks.data.models;
import androidx.annotation.NonNull;
import java.time.Duration; import java.time.Duration;
import java.util.Objects;
public record Cadence(float value_rpm) { public record Cadence(float value_rpm) {
@@ -1,9 +1,5 @@
package de.dennisguse.opentracks.data.models; package de.dennisguse.opentracks.data.models;
import androidx.annotation.NonNull;
import java.util.Objects;
public record HeartRate(float value) { public record HeartRate(float value) {
public static HeartRate of(float value) { public static HeartRate of(float value) {
@@ -1,9 +1,5 @@
package de.dennisguse.opentracks.data.models; package de.dennisguse.opentracks.data.models;
import androidx.annotation.NonNull;
import java.util.Objects;
public record Power(float value) { public record Power(float value) {
public static Power of(float value) { public static Power of(float value) {
@@ -45,7 +45,7 @@ import de.dennisguse.opentracks.util.StringUtils;
/** /**
* Convert {@link Track} incl. {@link Marker} and {@link TrackPoint} to KML version 2.3. * Convert {@link Track} incl. {@link Marker} and {@link TrackPoint} to KML version 2.3.
* https://docs.opengeospatial.org/is/12-007r2/12-007r2.html * <a href="https://docs.opengeospatial.org/is/12-007r2/12-007r2.html">...</a>
* *
* @author Sandor Dornbush * @author Sandor Dornbush
* @author Rodrigo Damazio * @author Rodrigo Damazio
@@ -41,8 +41,8 @@ import de.dennisguse.opentracks.util.StringUtils;
/** /**
* Imports a GPX file. * Imports a GPX file.
* Uses: * Uses:
* * https://www8.garmin.com/xmlschemas/TrackPointExtensionv2.xsd * * <a href="https://www8.garmin.com/xmlschemas/TrackPointExtensionv2.xsd">...</a>
* * https://www8.garmin.com/xmlschemas/PowerExtensionv1.xsd * * <a href="https://www8.garmin.com/xmlschemas/PowerExtensionv1.xsd">...</a>
* <p> * <p>
* {@link de.dennisguse.opentracks.io.file.exporter.GPXTrackExporter} does not export information if a segment was started automatic or manually. * {@link de.dennisguse.opentracks.io.file.exporter.GPXTrackExporter} does not export information if a segment was started automatic or manually.
* Therefore, all segments starts are marked as SEGMENT_START_AUTOMATIC. * Therefore, all segments starts are marked as SEGMENT_START_AUTOMATIC.
@@ -135,7 +135,7 @@ public class TrackImporter {
track.setUuid(UUID.randomUUID()); track.setUuid(UUID.randomUUID());
} }
Collections.sort(trackPoints, (o1, o2) -> { trackPoints.sort((o1, o2) -> {
if (o1.getTime().isBefore(o2.getTime())) { if (o1.getTime().isBefore(o2.getTime())) {
return -1; return -1;
} }
@@ -65,39 +65,36 @@ public class BluetoothRemoteSensorManager implements SensorConnector, AbstractBl
private final BluetoothConnectionManagerCyclingPower cyclingPower = new BluetoothConnectionManagerCyclingPower(this); private final BluetoothConnectionManagerCyclingPower cyclingPower = new BluetoothConnectionManagerCyclingPower(this);
private final BluetoothConnectionRunningSpeedAndCadence runningSpeedAndCadence = new BluetoothConnectionRunningSpeedAndCadence(this); private final BluetoothConnectionRunningSpeedAndCadence runningSpeedAndCadence = new BluetoothConnectionRunningSpeedAndCadence(this);
private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (sharedPreferences, key) -> {
@Override if (!started) return;
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (!started) return;
if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_heart_rate_key, key)) { if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_heart_rate_key, key)) {
String address = PreferencesUtils.getBluetoothHeartRateSensorAddress(); String address = PreferencesUtils.getBluetoothHeartRateSensorAddress();
connect(heartRate, address); connect(heartRate, address);
} }
if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_cycling_cadence_key, key)) { if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_cycling_cadence_key, key)) {
String address = PreferencesUtils.getBluetoothCyclingCadenceSensorAddress(); String address = PreferencesUtils.getBluetoothCyclingCadenceSensorAddress();
connect(cyclingCadence, address); connect(cyclingCadence, address);
} }
if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_cycling_speed_key, key)) { if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_cycling_speed_key, key)) {
String address = PreferencesUtils.getBluetoothCyclingSpeedSensorAddress(); String address = PreferencesUtils.getBluetoothCyclingSpeedSensorAddress();
connect(cyclingSpeed, address); connect(cyclingSpeed, address);
} }
if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_cycling_power_key, key)) { if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_cycling_power_key, key)) {
String address = PreferencesUtils.getBluetoothCyclingPowerSensorAddress(); String address = PreferencesUtils.getBluetoothCyclingPowerSensorAddress();
connect(cyclingPower, address); connect(cyclingPower, address);
} }
if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_running_speed_and_cadence_key, key)) { if (PreferencesUtils.isKey(R.string.settings_sensor_bluetooth_running_speed_and_cadence_key, key)) {
String address = PreferencesUtils.getBluetoothRunningSpeedAndCadenceAddress(); String address = PreferencesUtils.getBluetoothRunningSpeedAndCadenceAddress();
connect(runningSpeedAndCadence, address); connect(runningSpeedAndCadence, address);
}
} }
}; };
@@ -23,8 +23,6 @@ import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@@ -1,8 +1,5 @@
package de.dennisguse.opentracks.sensors; package de.dennisguse.opentracks.sensors;
import androidx.annotation.NonNull;
import java.util.Objects;
import java.util.UUID; import java.util.UUID;
public record ServiceMeasurementUUID(UUID serviceUUID, UUID measurementUUID) { public record ServiceMeasurementUUID(UUID serviceUUID, UUID measurementUUID) {
@@ -1,9 +1,6 @@
package de.dennisguse.opentracks.services; package de.dennisguse.opentracks.services;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import java.util.Objects;
import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.Track;
@@ -4,7 +4,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -24,7 +23,7 @@ public class AggregatedStatistics {
} }
dataList.addAll(dataMap.values()); dataList.addAll(dataMap.values());
Collections.sort(dataList, (o1, o2) -> { dataList.sort((o1, o2) -> {
if (o1.getCountTracks() == o2.getCountTracks()) { if (o1.getCountTracks() == o2.getCountTracks()) {
return o1.getActivityType().compareTo(o2.getActivityType()); return o1.getActivityType().compareTo(o2.getActivityType());
} }
@@ -35,7 +35,6 @@ public final class CsvLayoutUtils {
/** /**
* @param csvField Layout's field in a CSV format. * @param csvField Layout's field in a CSV format.
* @return List of field parts or null if it's malformed.
*/ */
@Nullable @Nullable
public static String[] getCsvFieldParts(@Nullable String csvField) { public static String[] getCsvFieldParts(@Nullable String csvField) {
@@ -16,7 +16,7 @@ import de.dennisguse.opentracks.data.models.Altitude;
* Converts WGS84 altitude to EGM2008 (should be close to height above sea level). * Converts WGS84 altitude to EGM2008 (should be close to height above sea level).
* <p> * <p>
* Uses <a href="https://geographiclib.sourceforge.io/">GeographicLib</a>] EGM2008 5minute undulation data. * Uses <a href="https://geographiclib.sourceforge.io/">GeographicLib</a>] EGM2008 5minute undulation data.
* https://geographiclib.sourceforge.io/html/geoid.html * <a href="https://geographiclib.sourceforge.io/html/geoid.html">...</a>
* <p> * <p>
* File starts at 90N, 0E (North pole) and is encoded in parallel bands as unsigned shorts. * File starts at 90N, 0E (North pole) and is encoded in parallel bands as unsigned shorts.
*/ */
@@ -47,7 +47,7 @@ public class FileUtils {
/** /**
* The maximum FAT32 path length. See the FAT32 spec at * The maximum FAT32 path length. See the FAT32 spec at
* http://msdn.microsoft.com/en-us/windows/hardware/gg463080 * <a href="http://msdn.microsoft.com/en-us/windows/hardware/gg463080">...</a>
*/ */
static final int MAX_FAT32_PATH_LENGTH = 260; static final int MAX_FAT32_PATH_LENGTH = 260;
@@ -232,7 +232,7 @@ public class StringUtils {
} }
/** /**
* Gets the time, in milliseconds, from an XML date time string (ISO8601) as defined at http://www.w3.org/TR/xmlschema-2/#dateTime * Gets the time, in milliseconds, from an XML date time string (ISO8601) as defined at <a href="http://www.w3.org/TR/xmlschema-2/#dateTime">...</a>
* Let's be lenient: if timezone information is not provided, UTC will be used. * Let's be lenient: if timezone information is not provided, UTC will be used.
* *
* @param xmlDateTime the XML date time string * @param xmlDateTime the XML date time string
@@ -2,7 +2,8 @@
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path <path
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"
android:fillColor="#000000" /> android:fillColor="#000000" />
+1 -1
View File
@@ -12,7 +12,7 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
app:navigationIcon="@drawable/ic_help_black_24dp" app:navigationIcon="@drawable/ic_help_24dp"
app:title="@string/menu_help" /> app:title="@string/menu_help" />
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
+1 -1
View File
@@ -32,7 +32,7 @@ limitations under the License.
android:title="@string/menu_settings" /> android:title="@string/menu_settings" />
<item <item
android:id="@+id/track_list_help" android:id="@+id/track_list_help"
android:icon="@drawable/ic_help_black_24dp" android:icon="@drawable/ic_help_24dp"
android:title="@string/menu_help" /> android:title="@string/menu_help" />
</menu> </menu>