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