package com.resl.sensors; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.os.Environment; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; public class ActivitySettings extends PreferenceActivity { SharedPreferences sharedPreferences; Preference lvSensorType; Preference lvRateGyroscope; Preference lvRateAccelerometers; CheckBoxPreference cbRotatedGyroscope; CheckBoxPreference cbRotatedAccelerometer; CheckBoxPreference cbLocation; Preference pAddActivity; Preference pMasterReset; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); sharedPreferences = getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Activity.MODE_PRIVATE); lvSensorType = (Preference) findPreference(Constants.KEY_SENSOR_TYPE); lvRateGyroscope = (Preference) findPreference(Constants.KEY_RATE_GYROSCOPE); lvRateAccelerometers = (Preference) findPreference(Constants.KEY_RATE_ACCELEROMETER); cbRotatedGyroscope = (CheckBoxPreference) findPreference(Constants.KEY_ROTATED_GYROSCOPE); cbRotatedAccelerometer = (CheckBoxPreference) findPreference(Constants.KEY_ROTATED_ACCELEROMETER); cbLocation = (CheckBoxPreference) findPreference(Constants.KEY_LOCATION); pAddActivity = (Preference) findPreference(Constants.KEY_ADD_ACTIVTY); pMasterReset = (Preference) findPreference(Constants.KEY_MASTER_RESET); // Check if gyroscope is not selected if ((sharedPreferences.getString(Constants.KEY_SENSOR_TYPE, getResources().getStringArray(R.array.array_sensor_type)[0])) .compareTo(getResources().getStringArray( R.array.array_sensor_type)[0]) != 0) { // If gyroscope is not selected, then it contains accelerometer for // sure cbRotatedAccelerometer.setEnabled(true); lvRateAccelerometers.setEnabled(true); } else { cbRotatedAccelerometer.setEnabled(false); lvRateAccelerometers.setEnabled(false); } // Check if accelerometer is not selected if ((sharedPreferences.getString(Constants.KEY_SENSOR_TYPE, getResources().getStringArray(R.array.array_sensor_type)[0])) .compareTo(getResources().getStringArray( R.array.array_sensor_type)[1]) != 0) { // If accelerometer is not selected, then it contains gyroscope for // sure cbRotatedGyroscope.setEnabled(true); lvRateGyroscope.setEnabled(true); } else { cbRotatedGyroscope.setEnabled(false); lvRateGyroscope.setEnabled(false); } lvSensorType.setSummary("Current Sensor Type : " + sharedPreferences.getString(Constants.KEY_SENSOR_TYPE, getResources() .getStringArray(R.array.array_sensor_type)[0])); lvRateGyroscope.setSummary("Current Rate : " + sharedPreferences.getString(Constants.KEY_RATE_GYROSCOPE, getResources().getStringArray(R.array.array_rate)[0])); lvRateAccelerometers.setSummary("Current Rate : " + sharedPreferences.getString(Constants.KEY_RATE_ACCELEROMETER, getResources().getStringArray(R.array.array_rate)[0])); lvSensorType .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { lvSensorType.setSummary("Current Sensor Type : " + newValue); Editor editor = getApplicationContext() .getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Context.MODE_PRIVATE).edit(); // Use first element as default editor.putString(Constants.KEY_SENSOR_TYPE, (String) newValue); // Commit the changes editor.commit(); // Check if gyroscope is not selected if (((String) newValue).compareTo(getResources() .getStringArray(R.array.array_sensor_type)[0]) != 0) { // If gyroscope is not selected, then it contains // accelerometer for sure cbRotatedAccelerometer.setEnabled(true); lvRateAccelerometers.setEnabled(true); } else { cbRotatedAccelerometer.setEnabled(false); lvRateAccelerometers.setEnabled(false); } // Check if gyroscope is not selected if (((String) newValue).compareTo(getResources() .getStringArray(R.array.array_sensor_type)[1]) != 0) { // If accelerometer is not selected, then it // contains // gyroscope for sure cbRotatedGyroscope.setEnabled(true); lvRateGyroscope.setEnabled(true); } else { cbRotatedGyroscope.setEnabled(false); lvRateGyroscope.setEnabled(false); } return true; } }); lvRateGyroscope .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { lvRateGyroscope .setSummary("Current Rate : " + newValue); Editor editor = getApplicationContext() .getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Context.MODE_PRIVATE).edit(); // Use first element as default editor.putString(Constants.KEY_RATE_GYROSCOPE, (String) newValue); // Commit the changes editor.commit(); return true; } }); lvRateAccelerometers .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { lvRateAccelerometers.setSummary("Current Rate : " + newValue); Editor editor = getApplicationContext() .getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Context.MODE_PRIVATE).edit(); // Use first element as default editor.putString(Constants.KEY_RATE_ACCELEROMETER, (String) newValue); // Commit the changes editor.commit(); return true; } }); cbRotatedAccelerometer .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Editor editor = getApplicationContext() .getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Context.MODE_PRIVATE).edit(); // Use first element as default editor.putBoolean(Constants.KEY_ROTATED_ACCELEROMETER, (Boolean) newValue); // Commit the changes editor.commit(); return true; } }); cbRotatedGyroscope .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Editor editor = getApplicationContext() .getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Context.MODE_PRIVATE).edit(); // Use first element as default editor.putBoolean(Constants.KEY_ROTATED_GYROSCOPE, (Boolean) newValue); // Commit the changes editor.commit(); return true; } }); cbLocation .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Editor editor = getApplicationContext() .getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Context.MODE_PRIVATE).edit(); // Use first element as default editor.putBoolean(Constants.KEY_LOCATION, (Boolean) newValue); // Commit the changes editor.commit(); return true; } }); pAddActivity .setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(ActivitySettings.this, ActivityAddNewActivity.class); startActivity(intent); return true; } }); pMasterReset .setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { final AlertDialog.Builder builder = new AlertDialog.Builder( ActivitySettings.this); builder.setMessage( "This will delete all your profiles and data. Are you sure you want to reset everything?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int id) { Editor editor = getApplicationContext() .getSharedPreferences( Constants.PREFERENCES_KEY_APPLICATION, Context.MODE_PRIVATE) .edit(); // Use first element as default editor.remove(Constants.KEY_PROFILE); // Commit the changes editor.commit(); Utility.deleteRecursively( Environment .getExternalStorageDirectory() + "/RESL_Data", true); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder .create(); alert.show(); return true; } }); } }