diff --git a/MyTracks/res/xml/recording_settings.xml b/MyTracks/res/xml/recording_settings.xml index d6afce568..04747184f 100644 --- a/MyTracks/res/xml/recording_settings.xml +++ b/MyTracks/res/xml/recording_settings.xml @@ -18,17 +18,14 @@ limitations under the License. android:title="@string/settings_recording" > \ No newline at end of file diff --git a/MyTracks/res/xml/sensor_settings.xml b/MyTracks/res/xml/sensor_settings.xml index f02000d32..e79307e31 100644 --- a/MyTracks/res/xml/sensor_settings.xml +++ b/MyTracks/res/xml/sensor_settings.xml @@ -20,7 +20,6 @@ limitations under the License. sensorTypeEntries = Arrays.asList(getResources().getStringArray( - hasAntSupport ? R.array.sensor_type_all_options - : R.array.sensor_type_bluetooth_options)); - List sensorTypeEntryValues = Arrays.asList(getResources().getStringArray( - hasAntSupport ? R.array.sensor_type_all_values - : R.array.sensor_type_bluetooth_values)); - sensorTypeListPreference.setEntries(sensorTypeEntries.toArray( - new CharSequence[sensorTypeEntries.size()])); - sensorTypeListPreference.setEntryValues( - sensorTypeEntryValues.toArray(new CharSequence[sensorTypeEntryValues.size()])); - sensorTypeListPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + String[] sensorTypeOptions = getResources().getStringArray( + hasAntSupport ? R.array.sensor_type_all_options : R.array.sensor_type_bluetooth_options); + String[] sensorTypeValues = getResources().getStringArray( + hasAntSupport ? R.array.sensor_type_all_values : R.array.sensor_type_bluetooth_values); + String sensorTypeValue = PreferencesUtils.getString( + this, R.string.sensor_type_key, PreferencesUtils.SENSOR_TYPE_DEFAULT); + OnPreferenceChangeListener listener = new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { updateUiBySensorType((String) newValue); return true; } - }); - - updateUiBySensorType(sensorTypeListPreference.getValue()); + }; + configurePreference(sensorTypeListPreference, sensorTypeOptions, sensorTypeValues, + R.string.settings_sensor_type_summary, sensorTypeValue, listener); findPreference(getString(R.string.settings_sensor_bluetooth_pairing_key)) .setOnPreferenceClickListener(new OnPreferenceClickListener() { @@ -110,7 +105,7 @@ public class SensorSettingsActivity extends AbstractSettingsActivity { updateAntSensor(R.string.settings_sensor_ant_reset_combined_bike_sensor_key, R.string.ant_combined_bike_sensor_id_key, isAnt); } - + /** * Updates an ant sensor. * @@ -151,20 +146,31 @@ public class SensorSettingsActivity extends AbstractSettingsActivity { */ @SuppressWarnings("deprecation") private void updateBluetoothSensorListPreference() { + List optionsList = new ArrayList(); + List valuesList = new ArrayList(); + BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + if (bluetoothAdapter != null) { + BluetoothDeviceUtils.populateDeviceLists(bluetoothAdapter, optionsList, valuesList); + } + String[] options = optionsList.toArray(new String[optionsList.size()]); + String[] values = valuesList.toArray(new String[valuesList.size()]); + + String bluetoothSensorValue = PreferencesUtils.getString( + this, R.string.bluetooth_sensor_key, PreferencesUtils.BLUETOOTH_SENSOR_DEFAULT); ListPreference bluetoothSensorListPreference = (ListPreference) findPreference( getString(R.string.bluetooth_sensor_key)); - List entries = new ArrayList(); - List entryValues = new ArrayList(); - BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); - - if (bluetoothAdapter != null) { - BluetoothDeviceUtils.populateDeviceLists(bluetoothAdapter, entries, entryValues); - } - bluetoothSensorListPreference.setEntries(entries.toArray(new CharSequence[entries.size()])); - bluetoothSensorListPreference.setEntryValues(entryValues.toArray( - new CharSequence[entryValues.size()])); - if (entries.size() == 1) { - bluetoothSensorListPreference.setValueIndex(0); + if (valuesList.size() == 1) { + if (!valuesList.get(0).equals(bluetoothSensorValue)) { + bluetoothSensorValue = valuesList.get(0); + PreferencesUtils.setString(this, R.string.bluetooth_sensor_key, bluetoothSensorValue); + } + } else { + if (!valuesList.contains(bluetoothSensorValue)) { + bluetoothSensorValue = PreferencesUtils.BLUETOOTH_SENSOR_DEFAULT; + PreferencesUtils.setString(this, R.string.bluetooth_sensor_key, bluetoothSensorValue); + } } + configurePreference(bluetoothSensorListPreference, options, values, + R.string.settings_sensor_bluetooth_sensor_summary, bluetoothSensorValue); } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java index 780e2d227..c69d9ea99 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/PreferencesUtils.java @@ -73,6 +73,9 @@ public class PreferencesUtils { public static final boolean SEND_TO_DOCS_DEFAULT = true; public static final boolean SEND_TO_FUSION_TABLES_DEFAULT = true; public static final boolean SEND_TO_MAPS_DEFAULT = true; + + public static final String SENSOR_TYPE_DEFAULT = "NONE"; + public static final boolean SHOW_CONFIRM_SHARING_DIALOG_DEFAULT = true; public static final int SPLIT_FREQUENCY_DEFAULT = 0; @@ -84,7 +87,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 String TRACK_NAME_DEFAULT = "LOCATION"; public static final int VOICE_FREQUENCY_DEFAULT = 0; @@ -183,7 +186,7 @@ public class PreferencesUtils { editor.putLong(getKey(context, keyId), value); ApiAdapterFactory.getApiAdapter().applyPreferenceChanges(editor); } - + /** * Gets a string preference value. * @@ -196,7 +199,7 @@ public class PreferencesUtils { Constants.SETTINGS_NAME, Context.MODE_PRIVATE); return sharedPreferences.getString(getKey(context, keyId), defaultValue); } - + /** * Sets a string preference value. * diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java index 9d0ce67b4..4fa2095aa 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java @@ -678,7 +678,7 @@ public class TrackRecordingServiceTest extends ServiceTestCase