This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository say-my-texts. See http://git.chorem.org/say-my-texts.git commit 52863d224abdc97a355650cf1a63e8c58d8b7345 Author: Kevin Morin <morin@codelutin.com> Date: Wed Aug 27 23:38:18 2014 +0200 refs #1055 Add a notification when SayMyTexts is active --- res/drawable-hdpi/ic_stat_heisendroid.png | Bin 0 -> 1099 bytes res/drawable-mdpi/ic_stat_heisendroid.png | Bin 0 -> 702 bytes res/drawable-xhdpi/ic_stat_heisendroid.png | Bin 0 -> 1481 bytes res/drawable-xxhdpi/ic_stat_heisendroid.png | Bin 0 -> 2323 bytes res/drawable/ic_stat_heisendroid.png | Bin 0 -> 702 bytes res/values-fr/arrays.xml | 6 +++ res/values-fr/strings.xml | 1 + res/values/arrays.xml | 12 ++++++ res/values/preference_keys.xml | 1 + res/values/strings.xml | 1 + res/xml/preferences.xml | 6 +++ .../android/saymytexts/SayMyTextService.java | 42 ++++++++++++--------- .../android/saymytexts/SettingsActivity.java | 10 +++++ 13 files changed, 62 insertions(+), 17 deletions(-) diff --git a/res/drawable-hdpi/ic_stat_heisendroid.png b/res/drawable-hdpi/ic_stat_heisendroid.png new file mode 100644 index 0000000..ccd5b64 Binary files /dev/null and b/res/drawable-hdpi/ic_stat_heisendroid.png differ diff --git a/res/drawable-mdpi/ic_stat_heisendroid.png b/res/drawable-mdpi/ic_stat_heisendroid.png new file mode 100644 index 0000000..980972b Binary files /dev/null and b/res/drawable-mdpi/ic_stat_heisendroid.png differ diff --git a/res/drawable-xhdpi/ic_stat_heisendroid.png b/res/drawable-xhdpi/ic_stat_heisendroid.png new file mode 100644 index 0000000..b373743 Binary files /dev/null and b/res/drawable-xhdpi/ic_stat_heisendroid.png differ diff --git a/res/drawable-xxhdpi/ic_stat_heisendroid.png b/res/drawable-xxhdpi/ic_stat_heisendroid.png new file mode 100644 index 0000000..2739dda Binary files /dev/null and b/res/drawable-xxhdpi/ic_stat_heisendroid.png differ diff --git a/res/drawable/ic_stat_heisendroid.png b/res/drawable/ic_stat_heisendroid.png new file mode 100644 index 0000000..980972b Binary files /dev/null and b/res/drawable/ic_stat_heisendroid.png differ diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml index da4a5db..53c1f2f 100644 --- a/res/values-fr/arrays.xml +++ b/res/values-fr/arrays.xml @@ -8,4 +8,10 @@ <item>Jamais</item> </string-array> + <string-array name="preferences_notifications_entries"> + <item>Désactivées</item> + <item>Annulables</item> + <item>Non annulables</item> + </string-array> + </resources> \ No newline at end of file diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 91a87a9..f0062ce 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -15,6 +15,7 @@ <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_block_equals_sms_label">Bloque les SMS \"=\"</string> + <string name="preference_notifications_label">Notifications</string> <string name="preference_test_sms_label">Tester en m\'envoyant un SMS</string> <string name="test_sms_content">Heisendroïd</string> diff --git a/res/values/arrays.xml b/res/values/arrays.xml index d851bcc..9685a26 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -15,4 +15,16 @@ <item>Never</item> </string-array> + <string-array name="preferences_notifications_values"> + <item>disabled</item> + <item>cancelable</item> + <item>not_cancelable</item> + </string-array> + + <string-array name="preferences_notifications_entries"> + <item>Disabled</item> + <item>Cancelable</item> + <item>Not cancelable</item> + </string-array> + </resources> \ No newline at end of file diff --git a/res/values/preference_keys.xml b/res/values/preference_keys.xml index 93f7ac6..8d1d145 100644 --- a/res/values/preference_keys.xml +++ b/res/values/preference_keys.xml @@ -5,6 +5,7 @@ <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_block_equals_sms_key">preference_block_equals_sms_key</string> + <string name="preference_notifications_key">preference_notifications_key</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 0866b66..ee60071 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -15,6 +15,7 @@ <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_block_equals_sms_label">Block the \"=\" SMS</string> + <string name="preference_notifications_label">Notifications</string> <string name="preference_test_sms_label">Test by sending an SMS to myself</string> <string name="test_sms_content">Heisendroïd</string> diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 79c24cb..2b6b03e 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -28,6 +28,12 @@ android:title="@string/preference_block_equals_sms_label" android:defaultValue="false"/> + <ListPreference android:key="@string/preference_notifications_key" + android:title="@string/preference_notifications_label" + android:entries="@array/preferences_notifications_entries" + android:entryValues="@array/preferences_notifications_values" + android:defaultValue="cancelable"/> + <Preference android:key="@string/preference_test_sms_key" android:title="@string/preference_test_sms_label" android:persistent="false"/> diff --git a/src/org/chorem/android/saymytexts/SayMyTextService.java b/src/org/chorem/android/saymytexts/SayMyTextService.java index 661a9f9..b460171 100644 --- a/src/org/chorem/android/saymytexts/SayMyTextService.java +++ b/src/org/chorem/android/saymytexts/SayMyTextService.java @@ -49,7 +49,6 @@ import org.chorem.android.saymytexts.broadcastreceiver.DeviceConnectionBroadcast import org.chorem.android.saymytexts.broadcastreceiver.DictateSmsBroadcastReceiver; import org.chorem.android.saymytexts.broadcastreceiver.SayNextActionBroadcastReceiver; -import java.awt.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -108,9 +107,9 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList protected boolean interactionEnabled; - protected boolean notificationsEnabled = true; + protected boolean notificationsEnabled; - protected boolean notificationCancelable; + protected boolean notificationsCancelable; protected AudioManager audioManager; @@ -177,7 +176,6 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList 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]); - updateReadingEnabled(); String heisendroidModeEnabledKey = getString(R.string.preference_enable_heisendroid_mode_key); heisendroidModeEnabled = sharedPref.getBoolean(heisendroidModeEnabledKey, true); @@ -185,6 +183,14 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList String interactionPrefKey = getString(R.string.preference_enable_interaction_key); interactionEnabled = sharedPref.getBoolean(interactionPrefKey, true); + String[] notificationsValues = + getResources().getStringArray(R.array.preferences_notifications_values); + String notificationMode = sharedPref.getString(key, notificationsValues[1]); + notificationsEnabled = !notificationMode.equals(notificationsValues[0]); + notificationsCancelable = !notificationMode.equals(notificationsValues[2]); + + updateReadingEnabled(); + sharedPref.registerOnSharedPreferenceChangeListener(this); deviceConnectionBroadcastReceiver = new DeviceConnectionBroadcastReceiver(); @@ -603,6 +609,14 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList } else if (key.equals(getString(R.string.preference_enable_interaction_key))) { interactionEnabled = sharedPreferences.getBoolean(key, true); + + } else if (key.equals(getString(R.string.preference_notifications_key))) { + String[] notificationsValues = + getResources().getStringArray(R.array.preferences_notifications_values); + String notificationMode = sharedPreferences.getString(key, notificationsValues[1]); + notificationsEnabled = !notificationMode.equals(notificationsValues[0]); + notificationsCancelable = !notificationMode.equals(notificationsValues[2]); + updateReadingEnabled(); } } @@ -648,31 +662,25 @@ public class SayMyTextService extends Service implements TextToSpeech.OnInitList } protected void updateNotification(String content) { - //TODO kmorin 20140821 add a setting to show notifsor not, cancelable or not NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - if (notificationsEnabled) { + if (notificationsEnabled && readingActive) { BitmapDrawable logo = (BitmapDrawable) getResources().getDrawable(R.drawable.logo_small); Notification.Builder builder = new Notification.Builder(this) .setLargeIcon(logo.getBitmap()) .setContentText(content); - - //TODO kmorin 20140821 find other small icons - if (readingActive) { - builder.setSmallIcon(android.R.drawable.presence_audio_online) - .setContentTitle(getString(R.string.notification_reading_active_title)); - - } else { - builder.setSmallIcon(android.R.drawable.presence_audio_busy) - .setContentTitle(getString(R.string.notification_reading_unactive_title)); - } + builder.setSmallIcon(R.drawable.ic_stat_heisendroid) + .setContentTitle(getString(R.string.notification_reading_active_title)); Intent settingsIntent = new Intent(this, SettingsActivity.class); PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, settingsIntent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(resultPendingIntent); Notification notification = builder.build(); - notification.flags = Notification.FLAG_NO_CLEAR; + if (!notificationsCancelable) { + notification.flags = Notification.FLAG_NO_CLEAR; + } + notificationManager.notify(NOTIFICATION_ID, notification); } else { diff --git a/src/org/chorem/android/saymytexts/SettingsActivity.java b/src/org/chorem/android/saymytexts/SettingsActivity.java index 8b4fc8c..57684a8 100644 --- a/src/org/chorem/android/saymytexts/SettingsActivity.java +++ b/src/org/chorem/android/saymytexts/SettingsActivity.java @@ -170,6 +170,11 @@ public class SettingsActivity extends Activity { enabled = sharedPref.getBoolean(key, switchPreference.isChecked()); switchPreference.setChecked(enabled); + key = getString(R.string.preference_notifications_key); + listPreference = (ListPreference) findPreference(key); + summary = listPreference.getEntry(); + listPreference.setSummary(summary); + sharedPref.registerOnSharedPreferenceChangeListener(this); } @@ -208,6 +213,11 @@ public class SettingsActivity extends Activity { SwitchPreference switchPreference = (SwitchPreference) findPreference(key); boolean enabled = sharedPreferences.getBoolean(key, switchPreference.isChecked()); switchPreference.setChecked(enabled); + + } else if (getString(R.string.preference_notifications_key).equals(key)) { + ListPreference preference = (ListPreference) findPreference(key); + CharSequence summary = preference.getEntry(); + preference.setSummary(summary); } } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.