[say-my-texts-commits] 07/10: improve preferences + add max number of attempts in the preferences
This is an automated email from the git hooks/post-receive script. unknown user pushed a commit to branch devel in repository Say My Texts. commit f96bc2ec4191b79dbf61481016b1f5fed21b80a4 Author: kmorin <kmorin@2d65e43e-0f24-4770-8739-84cc4fd997b9> Date: Thu May 1 17:28:26 2014 +0000 improve preferences + add max number of attempts in the preferences --- res/values-fr/strings.xml | 5 +- res/values/preference_keys.xml | 1 + res/values/strings.xml | 5 +- res/xml/preferences.xml | 8 +- .../android/saymytexts/SayMyTextService.java | 119 +++++++++++---------- .../android/saymytexts/SettingsActivity.java | 45 ++++++-- 6 files changed, 110 insertions(+), 73 deletions(-) diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 6bb82b6..ef69b45 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -9,6 +9,7 @@ <string name="preferences_settings_label">Paramètres</string> <string name="preference_reading_profile_label">Lecture des SMS</string> <string name="preference_enable_interaction_label">Intéraction (appel ou réponse)</string> + <string name="preference_voice_recognizer_max_attempt_number_label">Nombre maximum d\'essais</string> <string name="preference_enable_heisendroid_mode_label">Mode Heisendroid</string> <string name="preference_test_sms_label">Tester en m\'envoyant un SMS</string> <string name="test_sms_content">Heisendroïd</string> @@ -29,13 +30,13 @@ <string name="crash_dialog_ok_toast">Merci !</string> <!-- actions --> - <string name="ask_next_action">Que voulez-vous faire ? Appeler, répondre ou quitter ?</string> + <string name="ask_next_action">Que voulez-vous faire ? Appeler, répondre ou rien ?</string> <string name="dictate_sms">Dictez votre réponse</string> <string name="send_sms_confirmation">Vous avez dicté : %s. Voulez-vous confirmer, corriger ou annuler ?</string> <string name="call_action">appeler</string> <string name="answer_action">répondre</string> - <string name="quit_action">quitter</string> + <string name="quit_action">rien</string> <string name="confirm_action">confirmer</string> <string name="modifiy_action">corriger</string> diff --git a/res/values/preference_keys.xml b/res/values/preference_keys.xml index 379b53c..43006d2 100644 --- a/res/values/preference_keys.xml +++ b/res/values/preference_keys.xml @@ -3,6 +3,7 @@ <string name="preference_reading_profile_key">reading_profile</string> <string name="preference_enable_interaction_key">enable_interaction</string> <string name="preference_enable_heisendroid_mode_key">enable_heisendroid_mode</string> + <string name="preference_voice_recognizer_max_attempt_number_key">preference_voice_recognizer_max_attempt_number</string> <string name="preference_test_sms_key">test_sms</string> <string name="preference_version_key">version</string> <string name="preference_documentation_key">documentation</string> diff --git a/res/values/strings.xml b/res/values/strings.xml index 0410b73..f67cb39 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -9,6 +9,7 @@ <string name="preferences_settings_label">Settings</string> <string name="preference_reading_profile_label">SMS reading</string> <string name="preference_enable_interaction_label">Interaction (call or answer)</string> + <string name="preference_voice_recognizer_max_attempt_number_label">Maximum attempt number</string> <string name="preference_enable_heisendroid_mode_label">Heisendroid mode</string> <string name="preference_test_sms_label">Test by sending an SMS to myself</string> <string name="test_sms_content">Heisendroïd</string> @@ -30,13 +31,13 @@ <string name="crash_dialog_ok_toast">Thank you !</string> <!-- actions --> - <string name="ask_next_action">What would you like to do? Call, answer or quit?</string> + <string name="ask_next_action">What would you like to do? Call, answer or nothing?</string> <string name="dictate_sms">Dictate your answer</string> <string name="send_sms_confirmation">You dictated: %s. Would you like to confirm, modify ou cancel?</string> <string name="call_action">call</string> <string name="answer_action">answer</string> - <string name="quit_action">quit</string> + <string name="quit_action">nothing</string> <string name="confirm_action">confirm</string> <string name="modifiy_action">modify</string> diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index d3bad81..1afb239 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -10,14 +10,18 @@ android:entryValues="@array/preferences_reading_profile_values" android:defaultValue="anyDeviceConnected"/> - <SwitchPreference android:key="@string/preference_enable_interaction_key" android:title="@string/preference_enable_interaction_label" android:defaultValue="true" /> + <EditTextPreference android:key="@string/preference_voice_recognizer_max_attempt_number_key" + android:title="@string/preference_voice_recognizer_max_attempt_number_label" + android:defaultValue="3" + android:numeric="integer"/> + <SwitchPreference android:key="@string/preference_enable_heisendroid_mode_key" android:title="@string/preference_enable_heisendroid_mode_label" - android:defaultValue="false" /> + android:defaultValue="false"/> <Preference android:key="@string/preference_test_sms_key" android:title="@string/preference_test_sms_label" diff --git a/src/org/chorem/android/saymytexts/SayMyTextService.java b/src/org/chorem/android/saymytexts/SayMyTextService.java index acca74a..0d701a6 100644 --- a/src/org/chorem/android/saymytexts/SayMyTextService.java +++ b/src/org/chorem/android/saymytexts/SayMyTextService.java @@ -54,7 +54,7 @@ import java.util.Map; * @author Kevin Morin (Code Lutin) * @since 1.0 */ -public class SayMyTextService extends Service implements TextToSpeech.OnInitListener { +public class SayMyTextService extends Service implements TextToSpeech.OnInitListener, SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "SayMyTextService"; @@ -82,6 +82,14 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList protected static final String ASK_NEXT_ACTION_UTTERANCE_ID = "askNextActionUtteranceId"; protected static final String OTHER_UTTERANCE_ID = "oherUtteranceId"; + protected int maxAttemptNumber; + + protected String readingProfile; + + protected boolean heisendroidModeEnabled; + + protected boolean interactionEnabled; + protected AudioManager audioManager; /** null if the texttospeech is not initialized */ @@ -133,6 +141,27 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList intentFilter = new IntentFilter(DictateSmsBroadcastReceiver.ACTION_DICTATE_SMS); registerReceiver(new DictateSmsBroadcastReceiver(), intentFilter); + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + String key = getString(R.string.preference_voice_recognizer_max_attempt_number_key); + String maxAttemptValue = sharedPref.getString(key, null); + try { + maxAttemptNumber = Integer.parseInt(maxAttemptValue); + } catch (NumberFormatException e) { + maxAttemptNumber = 3; + } + + String[] readingProfileValues = getResources().getStringArray(R.array.preferences_reading_profile_values); + String readingProfileKey = getString(R.string.preference_reading_profile_key); + readingProfile = sharedPref.getString(readingProfileKey, readingProfileValues[0]); + + String heisendroidModeEnabledKey = getString(R.string.preference_enable_heisendroid_mode_key); + heisendroidModeEnabled = sharedPref.getBoolean(heisendroidModeEnabledKey, true); + + String interactionPrefKey = getString(R.string.preference_enable_interaction_key); + interactionEnabled = sharedPref.getBoolean(interactionPrefKey, true); + + sharedPref.registerOnSharedPreferenceChangeListener(this); + //// Get the default adapter // final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); // @@ -179,11 +208,6 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList public int onStartCommand(Intent intent, int flags, int startId) { int result = super.onStartCommand(intent, flags, startId); - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); - String[] readingProfileValues = getResources().getStringArray(R.array.preferences_reading_profile_values); - String readingProfileKey = getString(R.string.preference_reading_profile_key); - String readingProfile = sharedPref.getString(readingProfileKey, readingProfileValues[0]); - if (intent != null) { String action = intent.getAction(); Log.d(TAG, "action " + action); @@ -211,39 +235,13 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList break; case ACTION_DICTATE_SMS: -// if (bluetoothDevices.isEmpty()) { - dictateSMS(sms, attemptNumber + 1); -// } else { -// requestBluetoothSpeakingActivation(new Function<Void, Void>() { -// @Override -// public Void apply(Void input) { -// dictateSMS(sms); -// return null; -// } -// }); -// } + dictateSMS(sms, attemptNumber + 1); break; case ACTION_CONFIRM_SMS_SENDING: // if a message has just been dictated final String dictatedMessage = intent.getStringExtra(INTENT_EXTRA_DICTATED_MESSAGE); -// if (!bluetoothDevices.isEmpty()) { -// registerReceiver(new BroadcastReceiver() { -// @Override -// public void onReceive(Context context, Intent intent) { -// int state = intent.getExtras().getInt(AudioManager.EXTRA_SCO_AUDIO_STATE); -// if (state == AudioManager.SCO_AUDIO_STATE_CONNECTED) { -// context.unregisterReceiver(this); -// askSendingConfirmation(dictatedMessage, sms); -// } -// } -// }, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED)); -// audioManager.setMode(AudioManager.MODE_IN_CALL); -// audioManager.startBluetoothSco(); -// -// } else { - askSendingConfirmation(dictatedMessage, sms, ++attemptNumber); -// } + askSendingConfirmation(dictatedMessage, sms, ++attemptNumber); break; case ACTION_READ_NEXT_SMS: @@ -252,8 +250,8 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList default: boolean readingEnabled; + String[] readingProfileValues = getResources().getStringArray(R.array.preferences_reading_profile_values); if (readingProfileValues[0].equals(readingProfile)) { - //TODO set speaker on readingEnabled = true; } else if (readingProfileValues[1].equals(readingProfile)) { @@ -382,11 +380,6 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList // disable the reading of the nexts sms while reading the current one setCanSpeak(false); - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); - String heisendroidModeEnabledKey = getString(R.string.preference_enable_heisendroid_mode_key); - boolean heisendroidModeEnabled = sharedPref.getBoolean(heisendroidModeEnabledKey, true); - - textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() { @Override public void onStart(String utteranceId) { @@ -406,12 +399,6 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList HashMap<String, String> params = new HashMap<>(); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_VOICE_CALL)); -// if (btConnected) { -// params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, BT_UTTERANCE_ID); -// } - - String interactionPrefKey = getString(R.string.preference_enable_interaction_key); - boolean interaction = sharedPref.getBoolean(interactionPrefKey, true); if (heisendroidModeEnabled) { textToSpeech.setLanguage(Locale.US); @@ -420,7 +407,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList textToSpeech.speak("Say my text.", TextToSpeech.QUEUE_ADD, params); } - if (!interaction && !heisendroidModeEnabled) { + if (!interactionEnabled && !heisendroidModeEnabled) { params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, OTHER_UTTERANCE_ID); } textToSpeech.setLanguage(Locale.getDefault()); @@ -430,7 +417,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, params); if (heisendroidModeEnabled) { - if (interaction) { + if (interactionEnabled) { params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, OTHER_UTTERANCE_ID); } textToSpeech.setLanguage(Locale.US); @@ -439,7 +426,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList textToSpeech.speak("You're goddamn right.", TextToSpeech.QUEUE_ADD, params); } - if (interaction) { + if (interactionEnabled) { askForActionAfterReading(sms, btConnected, 1); } } @@ -457,12 +444,6 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList @Override public void onDone(String utteranceId) { -// if (BT_UTTERANCE_ID.equals(utteranceId)) { -// // when the text has been read by the bluetooth device, stop the connection -// audioManager.stopBluetoothSco(); -// audioManager.setMode(AudioManager.MODE_NORMAL); -// } - if (ASK_NEXT_ACTION_UTTERANCE_ID.equals(utteranceId) || BT_ASK_NEXT_ACTION_UTTERANCE_ID.equals(utteranceId)) { Intent sayaction = new Intent(SayNextActionBroadcastReceiver.ACTION_SAY_NEXT_ACTION); @@ -486,7 +467,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList textToSpeech.speak(getString(R.string.voice_not_recognized), TextToSpeech.QUEUE_ADD, params); } - if (attemptNumber <= 3) { + if (attemptNumber <= maxAttemptNumber) { params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, btConnected ? BT_ASK_NEXT_ACTION_UTTERANCE_ID : ASK_NEXT_ACTION_UTTERANCE_ID); textToSpeech.speak(getString(R.string.ask_next_action), TextToSpeech.QUEUE_ADD, params); @@ -525,7 +506,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList textToSpeech.speak(getString(R.string.voice_not_recognized), TextToSpeech.QUEUE_ADD, params); } - if (attemptNumber <= 3) { + if (attemptNumber <= maxAttemptNumber) { params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, OTHER_UTTERANCE_ID); textToSpeech.setLanguage(Locale.getDefault()); textToSpeech.setSpeechRate(1f); @@ -573,7 +554,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList textToSpeech.speak(getString(R.string.voice_not_recognized), TextToSpeech.QUEUE_ADD, params); } - if (attemptNumber <= 3) { + if (attemptNumber <= maxAttemptNumber) { params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, OTHER_UTTERANCE_ID); String text = getString(R.string.send_sms_confirmation, message); textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, params); @@ -584,4 +565,26 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList } + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (key.equals(getString(R.string.preference_voice_recognizer_max_attempt_number_key))) { + String maxAttemptValue = sharedPreferences.getString(key, null); + try { + maxAttemptNumber = Integer.parseInt(maxAttemptValue); + } catch (NumberFormatException e) { + maxAttemptNumber = 3; + } + + } else if (key.equals(getString(R.string.preference_reading_profile_key))) { + String[] readingProfileValues = + getResources().getStringArray(R.array.preferences_reading_profile_values); + readingProfile = sharedPreferences.getString(key, readingProfileValues[0]); + + } else if (key.equals(getString(R.string.preference_enable_heisendroid_mode_key))) { + heisendroidModeEnabled = sharedPreferences.getBoolean(key, true); + + } else if (key.equals(getString(R.string.preference_enable_interaction_key))) { + interactionEnabled = sharedPreferences.getBoolean(key, true); + } + } } diff --git a/src/org/chorem/android/saymytexts/SettingsActivity.java b/src/org/chorem/android/saymytexts/SettingsActivity.java index aeaf63f..4908995 100644 --- a/src/org/chorem/android/saymytexts/SettingsActivity.java +++ b/src/org/chorem/android/saymytexts/SettingsActivity.java @@ -122,24 +122,30 @@ public class SettingsActivity extends Activity { addWebsitePreferenceClickListener(R.string.preference_documentation_key); addWebsitePreferenceClickListener(R.string.preference_issue_tracker_key); - } - - @Override - public void onResume() { - super.onResume(); - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); String key = getString(R.string.preference_reading_profile_key); - ListPreference preference = (ListPreference) findPreference(key); - CharSequence summary = preference.getEntry(); - preference.setSummary(summary); + ListPreference listPreference = (ListPreference) findPreference(key); + CharSequence summary = listPreference.getEntry(); + listPreference.setSummary(summary); key = getString(R.string.preference_enable_interaction_key); SwitchPreference switchPreference = (SwitchPreference) findPreference(key); boolean enabled = sharedPref.getBoolean(key, switchPreference.isChecked()); switchPreference.setChecked(enabled); + key = getString(R.string.preference_voice_recognizer_max_attempt_number_key); + String maxAttemptValue = sharedPref.getString(key, null); + int maxAttemptNumber; + try { + maxAttemptNumber = Integer.parseInt(maxAttemptValue); + } catch (NumberFormatException e) { + maxAttemptNumber = 3; + } + Preference preference = findPreference(key); + preference.setSummary(String.valueOf(maxAttemptNumber)); + preference.setEnabled(enabled); + key = getString(R.string.preference_enable_heisendroid_mode_key); switchPreference = (SwitchPreference) findPreference(key); enabled = sharedPref.getBoolean(key, switchPreference.isChecked()); @@ -155,6 +161,27 @@ public class SettingsActivity extends Activity { ListPreference preference = (ListPreference) findPreference(key); CharSequence summary = preference.getEntry(); preference.setSummary(summary); + + } else if (getString(R.string.preference_enable_interaction_key).equals(key)) { + SwitchPreference switchPreference = (SwitchPreference) findPreference(key); + boolean enabled = sharedPreferences.getBoolean(key, switchPreference.isChecked()); + switchPreference.setChecked(enabled); + findPreference(getString(R.string.preference_voice_recognizer_max_attempt_number_key)).setEnabled(enabled); + + } else if (getString(R.string.preference_voice_recognizer_max_attempt_number_key).equals(key)) { + String maxAttemptValue = sharedPreferences.getString(key, null); + int maxAttemptNumber; + try { + maxAttemptNumber = Integer.parseInt(maxAttemptValue); + } catch (NumberFormatException e) { + maxAttemptNumber = 3; + } + findPreference(key).setSummary(String.valueOf(maxAttemptNumber)); + + } else if (getString(R.string.preference_enable_heisendroid_mode_key).equals(key)) { + SwitchPreference switchPreference = (SwitchPreference) findPreference(key); + boolean enabled = sharedPreferences.getBoolean(key, switchPreference.isChecked()); + switchPreference.setChecked(enabled); } } -- To stop receiving notification emails like this one, please contact Chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
Chorem.org scm