01/01: check if the text recognizer is available.
This is an automated email from the git hooks/post-receive script. New commit to branch devel in repository say-my-texts. See http://git.chorem.org/say-my-texts.git commit fefdf81fbe945ff0cf869d8297df6fdd8be1ddca Author: Kevin <morin@codelutin.com> Date: Sun May 25 17:55:11 2014 +0200 check if the text recognizer is available. --- .../android/saymytexts/SayMyTextService.java | 12 +++++++-- .../chorem/android/saymytexts/SayMyTextsUtils.java | 24 +++++++++++++++++ .../android/saymytexts/SettingsActivity.java | 30 +++++++++++----------- 3 files changed, 49 insertions(+), 17 deletions(-) diff --git a/src/org/chorem/android/saymytexts/SayMyTextService.java b/src/org/chorem/android/saymytexts/SayMyTextService.java index 0d701a6..f8abad0 100644 --- a/src/org/chorem/android/saymytexts/SayMyTextService.java +++ b/src/org/chorem/android/saymytexts/SayMyTextService.java @@ -77,7 +77,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList public static final String INTENT_EXTRA_ATTEMPT_NUMBER = "attemptNumber"; /** utterance id when the bluetooth device is connected */ - protected static final String BT_UTTERANCE_ID = "btUtteranceId"; +// protected static final String BT_UTTERANCE_ID = "btUtteranceId"; protected static final String BT_ASK_NEXT_ACTION_UTTERANCE_ID = "btAskNextActionUtteranceId"; protected static final String ASK_NEXT_ACTION_UTTERANCE_ID = "askNextActionUtteranceId"; protected static final String OTHER_UTTERANCE_ID = "oherUtteranceId"; @@ -122,7 +122,7 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList } }; - BluetoothHeadset mBluetoothHeadset; +// BluetoothHeadset mBluetoothHeadset; @Override public void onCreate() { @@ -197,6 +197,9 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); tm.listen(callStateListener, PhoneStateListener.LISTEN_NONE); textToSpeech.shutdown(); + + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + sharedPref.unregisterOnSharedPreferenceChangeListener(this); } @Override @@ -208,6 +211,11 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList public int onStartCommand(Intent intent, int flags, int startId) { int result = super.onStartCommand(intent, flags, startId); + if (!SayMyTextsUtils.checkVoiceRecognition(this)) { + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + sharedPref.edit().putBoolean(getString(R.string.preference_enable_interaction_key), false).commit(); + } + if (intent != null) { String action = intent.getAction(); Log.d(TAG, "action " + action); diff --git a/src/org/chorem/android/saymytexts/SayMyTextsUtils.java b/src/org/chorem/android/saymytexts/SayMyTextsUtils.java new file mode 100644 index 0000000..d6adba7 --- /dev/null +++ b/src/org/chorem/android/saymytexts/SayMyTextsUtils.java @@ -0,0 +1,24 @@ +package org.chorem.android.saymytexts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.speech.RecognizerIntent; + +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class SayMyTextsUtils { + + public static boolean checkVoiceRecognition(Context context) { + // Check if voice recognition is present + PackageManager pm = context.getPackageManager(); + List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); + return activities.size() > 0; + } + +} diff --git a/src/org/chorem/android/saymytexts/SettingsActivity.java b/src/org/chorem/android/saymytexts/SettingsActivity.java index 4908995..d738a9d 100644 --- a/src/org/chorem/android/saymytexts/SettingsActivity.java +++ b/src/org/chorem/android/saymytexts/SettingsActivity.java @@ -30,8 +30,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.database.Cursor; -import android.media.AudioManager; import android.net.Uri; import android.os.Bundle; import android.preference.ListPreference; @@ -39,17 +37,10 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.SwitchPreference; -import android.speech.RecognitionListener; -import android.speech.RecognizerIntent; -import android.speech.SpeechRecognizer; import android.speech.tts.TextToSpeech; import android.telephony.SmsManager; import android.telephony.TelephonyManager; import android.util.Log; -import android.widget.Toast; - -import java.util.ArrayList; -import java.util.Locale; /** * Activity to set settings @@ -109,8 +100,8 @@ public class SettingsActivity extends Activity { } }); + Context context = getActivity(); try { - Context context = getActivity(); String currentVersion = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName; Preference versionPreference = findPreference(getString(R.string.preference_version_key)); versionPreference.setSummary(currentVersion); @@ -131,8 +122,10 @@ public class SettingsActivity extends Activity { key = getString(R.string.preference_enable_interaction_key); SwitchPreference switchPreference = (SwitchPreference) findPreference(key); - boolean enabled = sharedPref.getBoolean(key, switchPreference.isChecked()); - switchPreference.setChecked(enabled); + boolean enabled = SayMyTextsUtils.checkVoiceRecognition(context); + switchPreference.setEnabled(enabled); + boolean interactionEnabled = enabled && sharedPref.getBoolean(key, switchPreference.isChecked()); + switchPreference.setChecked(interactionEnabled); key = getString(R.string.preference_voice_recognizer_max_attempt_number_key); String maxAttemptValue = sharedPref.getString(key, null); @@ -144,17 +137,24 @@ public class SettingsActivity extends Activity { } Preference preference = findPreference(key); preference.setSummary(String.valueOf(maxAttemptNumber)); - preference.setEnabled(enabled); + preference.setEnabled(interactionEnabled); key = getString(R.string.preference_enable_heisendroid_mode_key); switchPreference = (SwitchPreference) findPreference(key); - enabled = sharedPref.getBoolean(key, switchPreference.isChecked()); - switchPreference.setChecked(enabled); + interactionEnabled = sharedPref.getBoolean(key, switchPreference.isChecked()); + switchPreference.setChecked(interactionEnabled); sharedPref.registerOnSharedPreferenceChangeListener(this); } @Override + public void onDestroy() { + super.onDestroy(); + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); + sharedPref.unregisterOnSharedPreferenceChangeListener(this); + } + + @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (getString(R.string.preference_reading_profile_key).equals(key)) { -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm