forked from upstream-mirrors/OpenTracks
Add voice frequency and split frequency back to
the recording settings.
This commit is contained in:
@@ -17,7 +17,6 @@ limitations under the License.
|
|||||||
<resources>
|
<resources>
|
||||||
<!-- Keys for persisted preferences. Sorted alphabetically. DO NOT TRANSLATE. -->
|
<!-- Keys for persisted preferences. Sorted alphabetically. DO NOT TRANSLATE. -->
|
||||||
<string name="allow_access_key">allowAccess</string>
|
<string name="allow_access_key">allowAccess</string>
|
||||||
<string name="announcement_frequency_key">announcementFrequency</string>
|
|
||||||
<string name="ant_bike_cadence_sensor_id_key">antBikeCadenceSensorId</string>
|
<string name="ant_bike_cadence_sensor_id_key">antBikeCadenceSensorId</string>
|
||||||
<string name="ant_combined_bike_sensor_id_key">antCombinedBikeSensorId</string>
|
<string name="ant_combined_bike_sensor_id_key">antCombinedBikeSensorId</string>
|
||||||
<string name="ant_heart_rate_monitor_id_key">antHeartRateMonitorId</string>
|
<string name="ant_heart_rate_monitor_id_key">antHeartRateMonitorId</string>
|
||||||
@@ -55,6 +54,7 @@ limitations under the License.
|
|||||||
<string name="track_color_mode_slow_key">trackColorModeSlow</string>
|
<string name="track_color_mode_slow_key">trackColorModeSlow</string>
|
||||||
<string name="track_color_mode_key">trackColorMode</string>
|
<string name="track_color_mode_key">trackColorMode</string>
|
||||||
<string name="track_name_key">trackName</string>
|
<string name="track_name_key">trackName</string>
|
||||||
|
<string name="voice_frequency_key">voiceFrequency</string>
|
||||||
|
|
||||||
<!-- Keys for persistend preferences. But they should not get backed up or restored. -->
|
<!-- Keys for persistend preferences. But they should not get backed up or restored. -->
|
||||||
<string name="auto_resume_track_current_retry_key">autoResumeTrackCurrentRetry</string>
|
<string name="auto_resume_track_current_retry_key">autoResumeTrackCurrentRetry</string>
|
||||||
|
|||||||
@@ -16,6 +16,18 @@ limitations under the License.
|
|||||||
-->
|
-->
|
||||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:title="@string/settings_recording" >
|
android:title="@string/settings_recording" >
|
||||||
|
<com.google.android.apps.mytracks.IntegerListPreference
|
||||||
|
android:defaultValue="0"
|
||||||
|
android:entryValues="@array/frequency_values"
|
||||||
|
android:key="@string/voice_frequency_key"
|
||||||
|
android:summary="@string/settings_voice_frequency_title"
|
||||||
|
android:title="@string/menu_voice_frequency" />
|
||||||
|
<com.google.android.apps.mytracks.IntegerListPreference
|
||||||
|
android:defaultValue="0"
|
||||||
|
android:entryValues="@array/frequency_values"
|
||||||
|
android:key="@string/split_frequency_key"
|
||||||
|
android:summary="@string/settings_split_frequency_title"
|
||||||
|
android:title="@string/menu_split_frequency" />
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:defaultValue="@string/settings_recording_track_name_location_value"
|
android:defaultValue="@string/settings_recording_track_name_location_value"
|
||||||
android:entries="@array/track_name_options"
|
android:entries="@array/track_name_options"
|
||||||
|
|||||||
@@ -96,6 +96,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
private MenuItem shareMenuItem;
|
private MenuItem shareMenuItem;
|
||||||
private MenuItem sendGoogleMenuItem;
|
private MenuItem sendGoogleMenuItem;
|
||||||
private MenuItem saveMenuItem;
|
private MenuItem saveMenuItem;
|
||||||
|
private MenuItem voiceFrequencyMenuItem;
|
||||||
|
private MenuItem splitFrequencyMenuItem;
|
||||||
|
|
||||||
private final Runnable bindChangedCallback = new Runnable() {
|
private final Runnable bindChangedCallback = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
@@ -300,6 +302,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
shareMenuItem = menu.findItem(R.id.track_detail_share);
|
shareMenuItem = menu.findItem(R.id.track_detail_share);
|
||||||
sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google);
|
sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google);
|
||||||
saveMenuItem = menu.findItem(R.id.track_detail_save);
|
saveMenuItem = menu.findItem(R.id.track_detail_save);
|
||||||
|
voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency);
|
||||||
|
splitFrequencyMenuItem = menu.findItem(R.id.track_detail_split_frequency);
|
||||||
|
|
||||||
updateMenuItems(trackId == recordingTrackId, recordingTrackPaused);
|
updateMenuItems(trackId == recordingTrackId, recordingTrackPaused);
|
||||||
return true;
|
return true;
|
||||||
@@ -348,8 +352,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case R.id.track_detail_voice_frequency:
|
case R.id.track_detail_voice_frequency:
|
||||||
FrequencyDialogFragment.newInstance(R.string.announcement_frequency_key,
|
FrequencyDialogFragment.newInstance(R.string.voice_frequency_key,
|
||||||
PreferencesUtils.ANNOUNCEMENT_FREQUENCY_DEFAULT,
|
PreferencesUtils.VOICE_FREQUENCY_DEFAULT,
|
||||||
R.string.settings_voice_frequency_title)
|
R.string.settings_voice_frequency_title)
|
||||||
.show(getSupportFragmentManager(), FrequencyDialogFragment.FREQUENCY_DIALOG_TAG);
|
.show(getSupportFragmentManager(), FrequencyDialogFragment.FREQUENCY_DIALOG_TAG);
|
||||||
return true;
|
return true;
|
||||||
@@ -499,6 +503,13 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
|
|||||||
if (saveMenuItem != null) {
|
if (saveMenuItem != null) {
|
||||||
saveMenuItem.setVisible(!isRecording);
|
saveMenuItem.setVisible(!isRecording);
|
||||||
}
|
}
|
||||||
|
if (voiceFrequencyMenuItem != null) {
|
||||||
|
voiceFrequencyMenuItem.setVisible(isRecording);
|
||||||
|
}
|
||||||
|
if (splitFrequencyMenuItem != null) {
|
||||||
|
splitFrequencyMenuItem.setVisible(isRecording);
|
||||||
|
}
|
||||||
|
|
||||||
String title;
|
String title;
|
||||||
if (isRecording) {
|
if (isRecording) {
|
||||||
title = getString(
|
title = getString(
|
||||||
|
|||||||
+2
-14
@@ -17,6 +17,7 @@
|
|||||||
package com.google.android.apps.mytracks.fragments;
|
package com.google.android.apps.mytracks.fragments;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
||||||
|
import com.google.android.apps.mytracks.util.StringUtils;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
@@ -81,20 +82,7 @@ public class FrequencyDialogFragment extends DialogFragment {
|
|||||||
private String[] getFrequencyDisplayOptions() {
|
private String[] getFrequencyDisplayOptions() {
|
||||||
boolean metricUnits = PreferencesUtils.getBoolean(
|
boolean metricUnits = PreferencesUtils.getBoolean(
|
||||||
activity, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
activity, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
||||||
String[] values = getResources().getStringArray(R.array.frequency_values);
|
return StringUtils.getFrequencyDisplayOptions(activity, metricUnits);
|
||||||
String[] options = new String[values.length];
|
|
||||||
for (int i = 0; i < values.length; i++) {
|
|
||||||
int value = Integer.parseInt(values[i]);
|
|
||||||
if (value == PreferencesUtils.FREQUENCY_OFF) {
|
|
||||||
options[i] = getString(R.string.value_off);
|
|
||||||
} else if (value < 0) {
|
|
||||||
options[i] = getString(metricUnits ? R.string.value_integer_kilometer
|
|
||||||
: R.string.value_integer_mile, Math.abs(value));
|
|
||||||
} else {
|
|
||||||
options[i] = getString(R.string.value_integer_minute, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return options;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ public class TrackRecordingService extends Service {
|
|||||||
private Context context;
|
private Context context;
|
||||||
private MyTracksProviderUtils myTracksProviderUtils;
|
private MyTracksProviderUtils myTracksProviderUtils;
|
||||||
private MyTracksLocationManager myTracksLocationManager;
|
private MyTracksLocationManager myTracksLocationManager;
|
||||||
private PeriodicTaskExecutor announcementExecutor;
|
private PeriodicTaskExecutor voiceExecutor;
|
||||||
private PeriodicTaskExecutor splitExecutor;
|
private PeriodicTaskExecutor splitExecutor;
|
||||||
private ExecutorService executorService;
|
private ExecutorService executorService;
|
||||||
private SharedPreferences sharedPreferences;
|
private SharedPreferences sharedPreferences;
|
||||||
@@ -154,14 +154,13 @@ public class TrackRecordingService extends Service {
|
|||||||
|| key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) {
|
|| key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) {
|
||||||
boolean metricUnits = PreferencesUtils.getBoolean(
|
boolean metricUnits = PreferencesUtils.getBoolean(
|
||||||
context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
||||||
announcementExecutor.setMetricUnits(metricUnits);
|
voiceExecutor.setMetricUnits(metricUnits);
|
||||||
splitExecutor.setMetricUnits(metricUnits);
|
splitExecutor.setMetricUnits(metricUnits);
|
||||||
}
|
}
|
||||||
if (key == null || key.equals(
|
if (key == null
|
||||||
PreferencesUtils.getKey(context, R.string.announcement_frequency_key))) {
|
|| key.equals(PreferencesUtils.getKey(context, R.string.voice_frequency_key))) {
|
||||||
announcementExecutor.setTaskFrequency(PreferencesUtils.getInt(
|
voiceExecutor.setTaskFrequency(PreferencesUtils.getInt(
|
||||||
context, R.string.announcement_frequency_key,
|
context, R.string.voice_frequency_key, PreferencesUtils.VOICE_FREQUENCY_DEFAULT));
|
||||||
PreferencesUtils.ANNOUNCEMENT_FREQUENCY_DEFAULT));
|
|
||||||
}
|
}
|
||||||
if (key == null
|
if (key == null
|
||||||
|| key.equals(PreferencesUtils.getKey(context, R.string.split_frequency_key))) {
|
|| key.equals(PreferencesUtils.getKey(context, R.string.split_frequency_key))) {
|
||||||
@@ -273,7 +272,7 @@ public class TrackRecordingService extends Service {
|
|||||||
context = this;
|
context = this;
|
||||||
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this);
|
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this);
|
||||||
myTracksLocationManager = new MyTracksLocationManager(this);
|
myTracksLocationManager = new MyTracksLocationManager(this);
|
||||||
announcementExecutor = new PeriodicTaskExecutor(this, new AnnouncementPeriodicTaskFactory());
|
voiceExecutor = new PeriodicTaskExecutor(this, new AnnouncementPeriodicTaskFactory());
|
||||||
splitExecutor = new PeriodicTaskExecutor(this, new SplitPeriodicTaskFactory());
|
splitExecutor = new PeriodicTaskExecutor(this, new SplitPeriodicTaskFactory());
|
||||||
executorService = Executors.newSingleThreadExecutor();
|
executorService = Executors.newSingleThreadExecutor();
|
||||||
sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
@@ -345,9 +344,9 @@ public class TrackRecordingService extends Service {
|
|||||||
unregisterLocationListener();
|
unregisterLocationListener();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
announcementExecutor.shutdown();
|
voiceExecutor.shutdown();
|
||||||
} finally {
|
} finally {
|
||||||
announcementExecutor = null;
|
voiceExecutor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -678,7 +677,7 @@ public class TrackRecordingService extends Service {
|
|||||||
: R.string.track_resumed_broadcast_action, recordingTrackId);
|
: R.string.track_resumed_broadcast_action, recordingTrackId);
|
||||||
|
|
||||||
// Restore periodic tasks
|
// Restore periodic tasks
|
||||||
announcementExecutor.restore();
|
voiceExecutor.restore();
|
||||||
splitExecutor.restore();
|
splitExecutor.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -757,7 +756,7 @@ public class TrackRecordingService extends Service {
|
|||||||
private void endRecording(boolean trackStopped, long trackId) {
|
private void endRecording(boolean trackStopped, long trackId) {
|
||||||
|
|
||||||
// Shutdown periodic tasks
|
// Shutdown periodic tasks
|
||||||
announcementExecutor.shutdown();
|
voiceExecutor.shutdown();
|
||||||
splitExecutor.shutdown();
|
splitExecutor.shutdown();
|
||||||
|
|
||||||
// Update instance variables
|
// Update instance variables
|
||||||
@@ -912,7 +911,7 @@ public class TrackRecordingService extends Service {
|
|||||||
*/
|
*/
|
||||||
Log.w(TAG, "SQLiteException", e);
|
Log.w(TAG, "SQLiteException", e);
|
||||||
}
|
}
|
||||||
announcementExecutor.update();
|
voiceExecutor.update();
|
||||||
splitExecutor.update();
|
splitExecutor.update();
|
||||||
sendTrackBroadcast(R.string.track_update_broadcast_action, track.getId());
|
sendTrackBroadcast(R.string.track_update_broadcast_action, track.getId());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.google.android.apps.mytracks.settings;
|
package com.google.android.apps.mytracks.settings;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
||||||
|
import com.google.android.apps.mytracks.util.StringUtils;
|
||||||
import com.google.android.apps.mytracks.util.UnitConversions;
|
import com.google.android.apps.mytracks.util.UnitConversions;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
@@ -39,6 +40,16 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity {
|
|||||||
boolean metricUnits = PreferencesUtils.getBoolean(
|
boolean metricUnits = PreferencesUtils.getBoolean(
|
||||||
this, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
this, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
|
||||||
|
|
||||||
|
ListPreference voiceFrequencyListPreference = (ListPreference) findPreference(
|
||||||
|
getString(R.string.voice_frequency_key));
|
||||||
|
voiceFrequencyListPreference.setEntries(
|
||||||
|
StringUtils.getFrequencyDisplayOptions(this, metricUnits));
|
||||||
|
|
||||||
|
ListPreference splitFrequencyListPreference = (ListPreference) findPreference(
|
||||||
|
getString(R.string.split_frequency_key));
|
||||||
|
splitFrequencyListPreference.setEntries(
|
||||||
|
StringUtils.getFrequencyDisplayOptions(this, metricUnits));
|
||||||
|
|
||||||
ListPreference minRecordingIntervalListPreference = (ListPreference) findPreference(
|
ListPreference minRecordingIntervalListPreference = (ListPreference) findPreference(
|
||||||
getString(R.string.min_recording_interval_key));
|
getString(R.string.min_recording_interval_key));
|
||||||
minRecordingIntervalListPreference.setEntries(getMinRecordingIntervalDisplayOptions());
|
minRecordingIntervalListPreference.setEntries(getMinRecordingIntervalDisplayOptions());
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ public class PreferencesUtils {
|
|||||||
* files.
|
* files.
|
||||||
*/
|
*/
|
||||||
public static final boolean ALLOW_ACCESS_DEFAULT = false;
|
public static final boolean ALLOW_ACCESS_DEFAULT = false;
|
||||||
public static final int ANNOUNCEMENT_FREQUENCY_DEFAULT = 0;
|
|
||||||
public static final int AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT = 0;
|
public static final int AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT = 0;
|
||||||
|
|
||||||
public static final int AUTO_RESUME_TRACK_TIMEOUT_ALWAYS = -1;
|
public static final int AUTO_RESUME_TRACK_TIMEOUT_ALWAYS = -1;
|
||||||
@@ -85,6 +84,7 @@ public class PreferencesUtils {
|
|||||||
public static final int TRACK_COLOR_MODE_MEDIUM_DEFAULT = 15;
|
public static final int TRACK_COLOR_MODE_MEDIUM_DEFAULT = 15;
|
||||||
public static final int TRACK_COLOR_MODE_PERCENTAGE_DEFAULT = 25;
|
public static final int TRACK_COLOR_MODE_PERCENTAGE_DEFAULT = 25;
|
||||||
public static final int TRACK_COLOR_MODE_SLOW_DEFAULT = 9;
|
public static final int TRACK_COLOR_MODE_SLOW_DEFAULT = 9;
|
||||||
|
public static final int VOICE_FREQUENCY_DEFAULT = 0;
|
||||||
|
|
||||||
private PreferencesUtils() {}
|
private PreferencesUtils() {}
|
||||||
|
|
||||||
|
|||||||
@@ -283,4 +283,28 @@ public class StringUtils {
|
|||||||
}
|
}
|
||||||
return Html.fromHtml(context.getString(resId, args));
|
return Html.fromHtml(context.getString(resId, args));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the frequency display options.
|
||||||
|
*
|
||||||
|
* @param context the context
|
||||||
|
* @param metricUnits true to display in metric units
|
||||||
|
*/
|
||||||
|
public static String[] getFrequencyDisplayOptions(Context context, boolean metricUnits) {
|
||||||
|
String[] values = context.getResources().getStringArray(R.array.frequency_values);
|
||||||
|
String[] options = new String[values.length];
|
||||||
|
for (int i = 0; i < values.length; i++) {
|
||||||
|
int value = Integer.parseInt(values[i]);
|
||||||
|
if (value == PreferencesUtils.FREQUENCY_OFF) {
|
||||||
|
options[i] = context.getString(R.string.value_off);
|
||||||
|
} else if (value < 0) {
|
||||||
|
options[i] = context.getString(metricUnits ? R.string.value_integer_kilometer
|
||||||
|
: R.string.value_integer_mile, Math.abs(value));
|
||||||
|
} else {
|
||||||
|
options[i] = context.getString(R.string.value_integer_minute, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-7
@@ -573,21 +573,21 @@ public class TrackRecordingServiceTest extends ServiceTestCase<TestRecordingServ
|
|||||||
}
|
}
|
||||||
|
|
||||||
@MediumTest
|
@MediumTest
|
||||||
public void testWithProperties_announcementFrequencyDefault() throws Exception {
|
public void testWithProperties_voiceFrequencyDefault() throws Exception {
|
||||||
PreferencesUtils.setInt(context, R.string.announcement_frequency_key,
|
PreferencesUtils.setInt(context, R.string.voice_frequency_key,
|
||||||
PreferencesUtils.ANNOUNCEMENT_FREQUENCY_DEFAULT);
|
PreferencesUtils.VOICE_FREQUENCY_DEFAULT);
|
||||||
fullRecordingSession();
|
fullRecordingSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
@MediumTest
|
@MediumTest
|
||||||
public void testWithProperties_announcementFrequencyByDistance() throws Exception {
|
public void testWithProperties_voiceFrequencyByDistance() throws Exception {
|
||||||
PreferencesUtils.setInt(context, R.string.announcement_frequency_key, -1);
|
PreferencesUtils.setInt(context, R.string.voice_frequency_key, -1);
|
||||||
fullRecordingSession();
|
fullRecordingSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
@MediumTest
|
@MediumTest
|
||||||
public void testWithProperties_announcementFrequencyByTime() throws Exception {
|
public void testWithProperties_voiceFrequencyByTime() throws Exception {
|
||||||
PreferencesUtils.setInt(context, R.string.announcement_frequency_key, 1);
|
PreferencesUtils.setInt(context, R.string.voice_frequency_key, 1);
|
||||||
fullRecordingSession();
|
fullRecordingSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user