Add voice frequency and split frequency back to

the recording settings.
This commit is contained in:
Jimmy Shih
2012-09-17 15:00:14 -07:00
parent 42f1e79bed
commit 65c8a57aa3
9 changed files with 85 additions and 40 deletions
+2 -2
View File
@@ -17,7 +17,6 @@ limitations under the License.
<resources>
<!-- Keys for persisted preferences. Sorted alphabetically. DO NOT TRANSLATE. -->
<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_combined_bike_sensor_id_key">antCombinedBikeSensorId</string>
<string name="ant_heart_rate_monitor_id_key">antHeartRateMonitorId</string>
@@ -55,7 +54,8 @@ limitations under the License.
<string name="track_color_mode_slow_key">trackColorModeSlow</string>
<string name="track_color_mode_key">trackColorMode</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. -->
<string name="auto_resume_track_current_retry_key">autoResumeTrackCurrentRetry</string>
<string name="recording_track_id_key">recordingTrackId</string>
+12
View File
@@ -16,6 +16,18 @@ limitations under the License.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
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
android:defaultValue="@string/settings_recording_track_name_location_value"
android:entries="@array/track_name_options"
@@ -96,6 +96,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
private MenuItem shareMenuItem;
private MenuItem sendGoogleMenuItem;
private MenuItem saveMenuItem;
private MenuItem voiceFrequencyMenuItem;
private MenuItem splitFrequencyMenuItem;
private final Runnable bindChangedCallback = new Runnable() {
@Override
@@ -300,7 +302,9 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
shareMenuItem = menu.findItem(R.id.track_detail_share);
sendGoogleMenuItem = menu.findItem(R.id.track_detail_send_google);
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);
return true;
}
@@ -348,8 +352,8 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
startActivity(intent);
return true;
case R.id.track_detail_voice_frequency:
FrequencyDialogFragment.newInstance(R.string.announcement_frequency_key,
PreferencesUtils.ANNOUNCEMENT_FREQUENCY_DEFAULT,
FrequencyDialogFragment.newInstance(R.string.voice_frequency_key,
PreferencesUtils.VOICE_FREQUENCY_DEFAULT,
R.string.settings_voice_frequency_title)
.show(getSupportFragmentManager(), FrequencyDialogFragment.FREQUENCY_DIALOG_TAG);
return true;
@@ -499,6 +503,13 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
if (saveMenuItem != null) {
saveMenuItem.setVisible(!isRecording);
}
if (voiceFrequencyMenuItem != null) {
voiceFrequencyMenuItem.setVisible(isRecording);
}
if (splitFrequencyMenuItem != null) {
splitFrequencyMenuItem.setVisible(isRecording);
}
String title;
if (isRecording) {
title = getString(
@@ -17,6 +17,7 @@
package com.google.android.apps.mytracks.fragments;
import com.google.android.apps.mytracks.util.PreferencesUtils;
import com.google.android.apps.mytracks.util.StringUtils;
import com.google.android.maps.mytracks.R;
import android.app.AlertDialog;
@@ -81,20 +82,7 @@ public class FrequencyDialogFragment extends DialogFragment {
private String[] getFrequencyDisplayOptions() {
boolean metricUnits = PreferencesUtils.getBoolean(
activity, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
String[] values = 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] = 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;
return StringUtils.getFrequencyDisplayOptions(activity, metricUnits);
}
/**
@@ -96,7 +96,7 @@ public class TrackRecordingService extends Service {
private Context context;
private MyTracksProviderUtils myTracksProviderUtils;
private MyTracksLocationManager myTracksLocationManager;
private PeriodicTaskExecutor announcementExecutor;
private PeriodicTaskExecutor voiceExecutor;
private PeriodicTaskExecutor splitExecutor;
private ExecutorService executorService;
private SharedPreferences sharedPreferences;
@@ -154,14 +154,13 @@ public class TrackRecordingService extends Service {
|| key.equals(PreferencesUtils.getKey(context, R.string.metric_units_key))) {
boolean metricUnits = PreferencesUtils.getBoolean(
context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT);
announcementExecutor.setMetricUnits(metricUnits);
voiceExecutor.setMetricUnits(metricUnits);
splitExecutor.setMetricUnits(metricUnits);
}
if (key == null || key.equals(
PreferencesUtils.getKey(context, R.string.announcement_frequency_key))) {
announcementExecutor.setTaskFrequency(PreferencesUtils.getInt(
context, R.string.announcement_frequency_key,
PreferencesUtils.ANNOUNCEMENT_FREQUENCY_DEFAULT));
if (key == null
|| key.equals(PreferencesUtils.getKey(context, R.string.voice_frequency_key))) {
voiceExecutor.setTaskFrequency(PreferencesUtils.getInt(
context, R.string.voice_frequency_key, PreferencesUtils.VOICE_FREQUENCY_DEFAULT));
}
if (key == null
|| key.equals(PreferencesUtils.getKey(context, R.string.split_frequency_key))) {
@@ -273,7 +272,7 @@ public class TrackRecordingService extends Service {
context = this;
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this);
myTracksLocationManager = new MyTracksLocationManager(this);
announcementExecutor = new PeriodicTaskExecutor(this, new AnnouncementPeriodicTaskFactory());
voiceExecutor = new PeriodicTaskExecutor(this, new AnnouncementPeriodicTaskFactory());
splitExecutor = new PeriodicTaskExecutor(this, new SplitPeriodicTaskFactory());
executorService = Executors.newSingleThreadExecutor();
sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
@@ -345,9 +344,9 @@ public class TrackRecordingService extends Service {
unregisterLocationListener();
try {
announcementExecutor.shutdown();
voiceExecutor.shutdown();
} finally {
announcementExecutor = null;
voiceExecutor = null;
}
try {
@@ -678,7 +677,7 @@ public class TrackRecordingService extends Service {
: R.string.track_resumed_broadcast_action, recordingTrackId);
// Restore periodic tasks
announcementExecutor.restore();
voiceExecutor.restore();
splitExecutor.restore();
}
@@ -757,7 +756,7 @@ public class TrackRecordingService extends Service {
private void endRecording(boolean trackStopped, long trackId) {
// Shutdown periodic tasks
announcementExecutor.shutdown();
voiceExecutor.shutdown();
splitExecutor.shutdown();
// Update instance variables
@@ -912,7 +911,7 @@ public class TrackRecordingService extends Service {
*/
Log.w(TAG, "SQLiteException", e);
}
announcementExecutor.update();
voiceExecutor.update();
splitExecutor.update();
sendTrackBroadcast(R.string.track_update_broadcast_action, track.getId());
}
@@ -17,6 +17,7 @@
package com.google.android.apps.mytracks.settings;
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.maps.mytracks.R;
@@ -39,6 +40,16 @@ public class RecordingSettingsActivity extends AbstractSettingsActivity {
boolean metricUnits = PreferencesUtils.getBoolean(
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(
getString(R.string.min_recording_interval_key));
minRecordingIntervalListPreference.setEntries(getMinRecordingIntervalDisplayOptions());
@@ -34,7 +34,6 @@ public class PreferencesUtils {
* files.
*/
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_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_PERCENTAGE_DEFAULT = 25;
public static final int TRACK_COLOR_MODE_SLOW_DEFAULT = 9;
public static final int VOICE_FREQUENCY_DEFAULT = 0;
private PreferencesUtils() {}
@@ -283,4 +283,28 @@ public class StringUtils {
}
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;
}
}
@@ -573,21 +573,21 @@ public class TrackRecordingServiceTest extends ServiceTestCase<TestRecordingServ
}
@MediumTest
public void testWithProperties_announcementFrequencyDefault() throws Exception {
PreferencesUtils.setInt(context, R.string.announcement_frequency_key,
PreferencesUtils.ANNOUNCEMENT_FREQUENCY_DEFAULT);
public void testWithProperties_voiceFrequencyDefault() throws Exception {
PreferencesUtils.setInt(context, R.string.voice_frequency_key,
PreferencesUtils.VOICE_FREQUENCY_DEFAULT);
fullRecordingSession();
}
@MediumTest
public void testWithProperties_announcementFrequencyByDistance() throws Exception {
PreferencesUtils.setInt(context, R.string.announcement_frequency_key, -1);
public void testWithProperties_voiceFrequencyByDistance() throws Exception {
PreferencesUtils.setInt(context, R.string.voice_frequency_key, -1);
fullRecordingSession();
}
@MediumTest
public void testWithProperties_announcementFrequencyByTime() throws Exception {
PreferencesUtils.setInt(context, R.string.announcement_frequency_key, 1);
public void testWithProperties_voiceFrequencyByTime() throws Exception {
PreferencesUtils.setInt(context, R.string.voice_frequency_key, 1);
fullRecordingSession();
}