Change defaut recording distance interval to 10m

This commit is contained in:
Jimmy Shih
2013-07-09 14:43:49 -07:00
parent 89b1c6debe
commit e67bb581e6
16 changed files with 80 additions and 74 deletions
@@ -116,15 +116,6 @@ limitations under the License.
<item>1000</item>
<item>5000</item>
</string-array>
<string-array name="min_recording_distance_values">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>10</item>
<item>100</item>
</string-array>
<string-array name="min_recording_interval_values">
<item>-2</item>
<item>-1</item>
@@ -143,6 +134,15 @@ limitations under the License.
<item>900</item>
<item>1800</item>
</string-array>
<string-array name="recording_distance_interval_values">
<item>1</item>
<item>2</item>
<item>5</item>
<item>10</item>
<item>20</item>
<item>50</item>
<item>100</item>
</string-array>
<string-array name="recording_gps_accuracy_values">
<item>10</item>
<item>20</item>
+1 -1
View File
@@ -31,8 +31,8 @@ limitations under the License.
<string name="export_type_key">exportType</string>
<string name="map_type_key">mapType</string>
<string name="max_recording_distance_key">maxRecordingDistance</string>
<string name="min_recording_distance_key">minRecordingDistance</string>
<string name="min_recording_interval_key">minRecordingInterval</string>
<string name="recording_distance_interval_key">recordingDistanceInterval</string>
<string name="recording_gps_accuracy_key">recordingGpsAccuracy</string>
<string name="report_speed_key">reportSpeed</string>
<string name="sensor_type_key">sensorType</string>
+2 -2
View File
@@ -38,8 +38,8 @@ limitations under the License.
android:key="@string/min_recording_interval_key"
android:title="@string/settings_recording_min_recording_interval_title" />
<com.google.android.apps.mytracks.IntegerListPreference
android:defaultValue="5"
android:key="@string/min_recording_distance_key"
android:defaultValue="10"
android:key="@string/recording_distance_interval_key"
android:title="@string/settings_recording_min_recording_distance_title" />
<com.google.android.apps.mytracks.IntegerListPreference
android:defaultValue="200"
@@ -65,7 +65,7 @@ public class TrackDataHub implements DataSourceListener {
private boolean metricUnits;
private boolean reportSpeed;
private int recordingGpsAccuracy;
private int minRecordingDistance;
private int recordingDistanceInterval;
// Track points sampling state
private int numLoadedPoints;
@@ -307,15 +307,15 @@ public class TrackDataHub implements DataSourceListener {
}
}
}
if (key == null
|| key.equals(PreferencesUtils.getKey(context, R.string.min_recording_distance_key))) {
minRecordingDistance = PreferencesUtils.getInt(
context, R.string.min_recording_distance_key,
PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
if (key == null || key.equals(
PreferencesUtils.getKey(context, R.string.recording_distance_interval_key))) {
recordingDistanceInterval = PreferencesUtils.getInt(
context, R.string.recording_distance_interval_key,
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
if (key != null) {
for (TrackDataListener trackDataListener :
trackDataManager.getListeners(TrackDataType.PREFERENCE)) {
if (trackDataListener.onMinRecordingDistanceChanged(minRecordingDistance)) {
if (trackDataListener.onRecordingDistanceIntervalChanged(recordingDistanceInterval)) {
loadDataForListener(trackDataListener);
}
}
@@ -339,7 +339,7 @@ public class TrackDataHub implements DataSourceListener {
trackDataListener.onMetricUnitsChanged(metricUnits);
trackDataListener.onReportSpeedChanged(reportSpeed);
trackDataListener.onRecordingGpsAccuracy(recordingGpsAccuracy);
trackDataListener.onMinRecordingDistanceChanged(minRecordingDistance);
trackDataListener.onRecordingDistanceIntervalChanged(recordingDistanceInterval);
}
notifyTracksTableUpdate(trackDataManager.getListeners(TrackDataType.TRACKS_TABLE));
@@ -367,7 +367,7 @@ public class TrackDataHub implements DataSourceListener {
trackDataListener.onMetricUnitsChanged(metricUnits);
trackDataListener.onReportSpeedChanged(reportSpeed);
trackDataListener.onRecordingGpsAccuracy(recordingGpsAccuracy);
trackDataListener.onMinRecordingDistanceChanged(minRecordingDistance);
trackDataListener.onRecordingDistanceIntervalChanged(recordingDistanceInterval);
}
if (trackDataTypes.contains(TrackDataType.TRACKS_TABLE)) {
@@ -117,10 +117,10 @@ public interface TrackDataListener {
public boolean onRecordingGpsAccuracy(int recordingGpsAccuracy);
/**
* Called when the min recording distance preference value is changed.
* Called when the recording distance interval preference value is changed.
*
* @param minRecordingDistance the new value
* @param recordingDistanceInterval the new value
* @return true to reload all the data, false otherwise.
*/
public boolean onMinRecordingDistanceChanged(int minRecordingDistance);
public boolean onRecordingDistanceIntervalChanged(int recordingDistanceInterval);
}
@@ -66,7 +66,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
private boolean metricUnits = true;
private boolean reportSpeed = PreferencesUtils.REPORT_SPEED_DEFAULT;
private int minRecordingDistance = PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT;
private int recordingDistanceInterval = PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT;
// Modes of operation
private boolean chartByDistance = true;
@@ -289,12 +289,12 @@ public class ChartFragment extends Fragment implements TrackDataListener {
}
@Override
public boolean onMinRecordingDistanceChanged(int value) {
public boolean onRecordingDistanceIntervalChanged(int value) {
if (isResumed()) {
if (minRecordingDistance == value) {
if (recordingDistanceInterval == value) {
return false;
}
minRecordingDistance = value;
recordingDistanceInterval = value;
return true;
}
return false;
@@ -439,7 +439,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
double power = Double.NaN;
if (tripStatisticsUpdater != null) {
tripStatisticsUpdater.addLocation(location, minRecordingDistance);
tripStatisticsUpdater.addLocation(location, recordingDistanceInterval);
TripStatistics tripStatistics = tripStatisticsUpdater.getTripStatistics();
if (chartByDistance) {
double distance = tripStatistics.getTotalDistance() * UnitConversions.M_TO_KM;
@@ -498,7 +498,7 @@ public class MyTracksMapFragment extends SupportMapFragment implements TrackData
}
@Override
public boolean onMinRecordingDistanceChanged(int minRecordingDistance) {
public boolean onRecordingDistanceIntervalChanged(int minRecordingDistance) {
// We don't care.
return false;
}
@@ -213,7 +213,7 @@ public class StatsFragment extends Fragment implements TrackDataListener {
}
@Override
public boolean onMinRecordingDistanceChanged(int minRecordingDistance) {
public boolean onRecordingDistanceIntervalChanged(int minRecordingDistance) {
// We don't care.
return false;
}
@@ -104,7 +104,7 @@ abstract class AbstractImporter extends DefaultHandler {
private final Context context;
private final long importTrackId;
private final MyTracksProviderUtils myTracksProviderUtils;
private final int minRecordingDistance;
private final int recordingDistanceInterval;
private final List<Long> trackIds;
private final List<Waypoint> waypoints;
@@ -143,8 +143,9 @@ abstract class AbstractImporter extends DefaultHandler {
this.context = context;
this.importTrackId = importTrackId;
this.myTracksProviderUtils = myTracksProviderUtils;
this.minRecordingDistance = PreferencesUtils.getInt(context,
R.string.min_recording_distance_key, PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
this.recordingDistanceInterval = PreferencesUtils.getInt(context,
R.string.recording_distance_interval_key,
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
trackIds = new ArrayList<Long>();
waypoints = new ArrayList<Waypoint>();
}
@@ -248,8 +249,8 @@ abstract class AbstractImporter extends DefaultHandler {
// No more track points. Ignore the rest of the waypoints.
return;
}
trackTripStatisticstrackUpdater.addLocation(trackPoint, minRecordingDistance);
markerTripStatisticsUpdater.addLocation(trackPoint, minRecordingDistance);
trackTripStatisticstrackUpdater.addLocation(trackPoint, recordingDistanceInterval);
markerTripStatisticsUpdater.addLocation(trackPoint, recordingDistanceInterval);
}
if (waypoint.getLocation().getTime() > trackPoint.getTime()) {
trackPoint = null;
@@ -526,7 +527,7 @@ abstract class AbstractImporter extends DefaultHandler {
trackData.tripStatisticsUpdater = new TripStatisticsUpdater(
location.getTime() != -1L ? location.getTime() : trackData.importTime);
}
trackData.tripStatisticsUpdater.addLocation(location, minRecordingDistance);
trackData.tripStatisticsUpdater.addLocation(location, recordingDistanceInterval);
trackData.bufferedLocations[trackData.numBufferedLocations] = location;
trackData.numBufferedLocations++;
@@ -253,8 +253,9 @@ public class SendMapsAsyncTask extends AbstractSendAsyncTask {
Vector<Double> elevations = new Vector<Double>();
TripStatisticsUpdater tripStatisticsUpdater = new TripStatisticsUpdater(
track.getTripStatistics().getStartTime());
int minRecordingDistance = PreferencesUtils.getInt(context,
R.string.min_recording_distance_key, PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
int recordingDistanceInterval = PreferencesUtils.getInt(context,
R.string.recording_distance_interval_key,
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
for (int i = 0; i < count; i++) {
cursor.moveToPosition(i);
@@ -276,7 +277,7 @@ public class SendMapsAsyncTask extends AbstractSendAsyncTask {
sentStartMarker = true;
}
tripStatisticsUpdater.addLocation(location, minRecordingDistance);
tripStatisticsUpdater.addLocation(location, recordingDistanceInterval);
if (i % elevationSamplingFrequency == 0) {
distances.add(tripStatisticsUpdater.getTripStatistics().getTotalDistance());
elevations.add(tripStatisticsUpdater.getSmoothedElevation());
@@ -114,7 +114,7 @@ public class TrackRecordingService extends Service {
private long recordingTrackId;
private boolean recordingTrackPaused;
private LocationListenerPolicy locationListenerPolicy;
private int minRecordingDistance;
private int recordingDistanceInterval;
private int maxRecordingDistance;
private int recordingGpsAccuracy;
private int autoResumeTrackTimeout;
@@ -193,10 +193,10 @@ public class TrackRecordingService extends Service {
}
}
if (key == null || key.equals(
PreferencesUtils.getKey(context, R.string.min_recording_distance_key))) {
minRecordingDistance = PreferencesUtils.getInt(context,
R.string.min_recording_distance_key,
PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
PreferencesUtils.getKey(context, R.string.recording_distance_interval_key))) {
recordingDistanceInterval = PreferencesUtils.getInt(context,
R.string.recording_distance_interval_key,
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
}
if (key == null || key.equals(
PreferencesUtils.getKey(context, R.string.max_recording_distance_key))) {
@@ -649,9 +649,9 @@ public class TrackRecordingService extends Service {
if (cursor.moveToLast()) {
do {
Location location = myTracksProviderUtils.createTrackPoint(cursor);
trackTripStatisticsUpdater.addLocation(location, minRecordingDistance);
trackTripStatisticsUpdater.addLocation(location, recordingDistanceInterval);
if (location.getTime() > markerStartTime) {
markerTripStatisticsUpdater.addLocation(location, minRecordingDistance);
markerTripStatisticsUpdater.addLocation(location, recordingDistanceInterval);
}
} while (cursor.moveToPrevious());
}
@@ -932,8 +932,8 @@ public class TrackRecordingService extends Service {
}
double distanceToLastTrackLocation = location.distanceTo(lastValidTrackPoint);
if (distanceToLastTrackLocation < minRecordingDistance && sensorDataSet == null) {
Log.d(TAG, "Not recording location due to min recording distance.");
if (distanceToLastTrackLocation < recordingDistanceInterval && sensorDataSet == null) {
Log.d(TAG, "Not recording location due to recording distance interval.");
} else if (distanceToLastTrackLocation > maxRecordingDistance) {
insertLocation(track, lastLocation, lastValidTrackPoint);
Location pause = new Location(LocationManager.GPS_PROVIDER);
@@ -982,8 +982,8 @@ public class TrackRecordingService extends Service {
try {
Uri uri = myTracksProviderUtils.insertTrackPoint(location, track.getId());
long trackPointId = Long.parseLong(uri.getLastPathSegment());
trackTripStatisticsUpdater.addLocation(location, minRecordingDistance);
markerTripStatisticsUpdater.addLocation(location, minRecordingDistance);
trackTripStatisticsUpdater.addLocation(location, recordingDistanceInterval);
markerTripStatisticsUpdater.addLocation(location, recordingDistanceInterval);
updateRecordingTrack(track, trackPointId, LocationUtils.isValidLocation(location));
} catch (SQLiteException e) {
/*
@@ -49,9 +49,9 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity {
configListPreference(R.string.min_recording_interval_key,
PreferencesUtils.MIN_RECORDING_INTERVAL_DEFAULT, R.array.min_recording_interval_values,
metricUnits);
configListPreference(R.string.min_recording_distance_key,
PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT, R.array.min_recording_distance_values,
metricUnits);
configListPreference(R.string.recording_distance_interval_key,
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT,
R.array.recording_distance_interval_values, metricUnits);
configListPreference(R.string.max_recording_distance_key,
PreferencesUtils.MAX_RECORDING_DISTANCE_DEFAULT, R.array.max_recording_distance_values,
metricUnits);
@@ -115,8 +115,8 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity {
case R.string.min_recording_interval_key:
setMinRecordingIntervalSummaryAndOptions(summary, options, values);
break;
case R.string.min_recording_distance_key:
setMinRecordingDistanceSummaryAndOptions(summary, options, values, metricUnits);
case R.string.recording_distance_interval_key:
setRecordingDistanceIntervalSummaryAndOptions(summary, options, values, metricUnits);
break;
case R.string.max_recording_distance_key:
setMaxRecordingDistanceSummaryAndOptions(summary, options, values, metricUnits);
@@ -167,14 +167,14 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity {
}
/**
* Sets the min recording distance summary and options.
* Sets the recording distance interval summary and options.
*
* @param summary the summary
* @param options the options
* @param values the values
* @param metricUnits true for metric units
*/
private void setMinRecordingDistanceSummaryAndOptions(
private void setRecordingDistanceIntervalSummaryAndOptions(
String[] summary, String[] options, String[] values, boolean metricUnits) {
for (int i = 0; i < values.length; i++) {
int value = Integer.parseInt(values[i]);
@@ -182,7 +182,7 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity {
if (metricUnits) {
displayValue = getString(R.string.value_integer_meter, value);
switch (value) {
case PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT:
case PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT:
options[i] = getString(R.string.value_integer_meter_recommended, value);
break;
default:
@@ -192,7 +192,7 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity {
int feet = (int) (value * UnitConversions.M_TO_FT);
displayValue = getString(R.string.value_integer_feet, feet);
switch (value) {
case PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT:
case PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT:
options[i] = getString(R.string.value_integer_feet_recommended, feet);
break;
default:
@@ -76,13 +76,14 @@ public class PreferencesUtils {
public static final String GOOGLE_ACCOUNT_DEFAULT = "";
public static final int MAP_TYPE_DEFAUlT = 1;
public static final int MAX_RECORDING_DISTANCE_DEFAULT = 200;
public static final int MIN_RECORDING_DISTANCE_DEFAULT = 5;
// Values for min_recording_interval_key
public static final int MIN_RECORDING_INTERVAL_ADAPT_ACCURACY = -1;
public static final int MIN_RECORDING_INTERVAL_ADAPT_BATTERY_LIFE = -2;
public static final int MIN_RECORDING_INTERVAL_DEFAULT = 0;
public static final int RECORDING_DISTANCE_INTERVAL_DEFAULT = 10;
// Values for recording_gps_accuracy
public static final int RECORDING_GPS_ACCURACY_DEFAULT = 50;
public static final int RECORDING_GPS_ACCURACY_EXCELLENT = 10;
@@ -531,8 +531,8 @@ public class TrackDataHubTest extends AndroidTestCase {
context, R.string.stats_units_key, PreferencesUtils.STATS_UNITS_DEFAULT);
PreferencesUtils.setInt(context, R.string.recording_gps_accuracy_key,
PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT);
PreferencesUtils.setInt(context, R.string.min_recording_distance_key,
PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
PreferencesUtils.setInt(context, R.string.recording_distance_interval_key,
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
dataSource.registerOnSharedPreferenceChangeListener(capture(preferenceChangeListenerCapture));
expect(trackDataListener1.onMetricUnitsChanged(true)).andReturn(false);
@@ -540,15 +540,15 @@ public class TrackDataHubTest extends AndroidTestCase {
expect(
trackDataListener1.onRecordingGpsAccuracy(PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT))
.andReturn(false);
expect(trackDataListener1.onMinRecordingDistanceChanged(
PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT)).andReturn(false);
expect(trackDataListener1.onRecordingDistanceIntervalChanged(
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT)).andReturn(false);
expect(trackDataListener2.onMetricUnitsChanged(true)).andReturn(false);
expect(trackDataListener2.onReportSpeedChanged(true)).andReturn(false);
expect(
trackDataListener2.onRecordingGpsAccuracy(PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT))
.andReturn(false);
expect(trackDataListener2.onMinRecordingDistanceChanged(
PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT)).andReturn(false);
expect(trackDataListener2.onRecordingDistanceIntervalChanged(
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT)).andReturn(false);
replay();
trackDataHub.start();
@@ -610,14 +610,14 @@ public class TrackRecordingServiceTest extends ServiceTestCase<TestRecordingServ
@MediumTest
public void testWithProperties_minRecordingDistanceDefault() throws Exception {
PreferencesUtils.setInt(context, R.string.min_recording_distance_key,
PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
PreferencesUtils.setInt(context, R.string.recording_distance_interval_key,
PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
fullRecordingSession();
}
@MediumTest
public void testWithProperties_minRecordingDistance() throws Exception {
PreferencesUtils.setInt(context, R.string.min_recording_distance_key, 2);
PreferencesUtils.setInt(context, R.string.recording_distance_interval_key, 2);
fullRecordingSession();
}
@@ -235,7 +235,8 @@ public class TripStatisticsUpdaterTest extends TestCase {
// Each time slice is 10 seconds.
Location location = getLocation(i + locationOffset, (i + locationOffset) * .001, MOVING_SPEED,
startTime + (timeOffset + i) * TEN_SECONDS);
tripStatisticsUpdater.addLocation(location, PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
tripStatisticsUpdater.addLocation(
location, PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
tripStatistics = tripStatisticsUpdater.getTripStatistics();
assertEquals((timeOffset + i) * TEN_SECONDS, tripStatistics.getTotalTime());
@@ -279,7 +280,8 @@ public class TripStatisticsUpdaterTest extends TestCase {
for (int i = 0; i < points; i++) {
Location location = getLocation(
locationOffset, locationOffset * .001, 0, startTime + (i + timeOffset) * TEN_SECONDS);
tripStatisticsUpdater.addLocation(location, PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
tripStatisticsUpdater.addLocation(
location, PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
tripStatistics = tripStatisticsUpdater.getTripStatistics();
assertEquals((i + timeOffset) * TEN_SECONDS, tripStatistics.getTotalTime());
@@ -315,7 +317,8 @@ public class TripStatisticsUpdaterTest extends TestCase {
// 99999 means a speed should bigger than given speed.
Location location = getLocation(i + locationOffset, (i + locationOffset) * .001, 99999,
startTime + (timeOffset + i) * TEN_SECONDS);
tripStatisticsUpdater.addLocation(location, PreferencesUtils.MIN_RECORDING_DISTANCE_DEFAULT);
tripStatisticsUpdater.addLocation(
location, PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT);
tripStatistics = tripStatisticsUpdater.getTripStatistics();
assertTrue(tripStatistics.getMovingTime() <= tripStatistics.getTotalTime());