diff options
author | Artur Dryomov <artur.dryomov@gmail.com> | 2013-10-03 21:35:44 +0300 |
---|---|---|
committer | Artur Dryomov <artur.dryomov@gmail.com> | 2013-10-04 01:26:20 +0300 |
commit | 99389390b8c784a3af7f7f0ef1a121b35134bb60 (patch) | |
tree | db8b9c3ee0edfc4dd8363ffbba072e48848a0c2e /android | |
parent | e5961c6a09b0d1747c36088d1258ad192fa944f9 (diff) |
Add support for setting vibrate mode while showing a slide show.
Change-Id: I8f407fbce3b90b56a0fb24b1143bcd7f2a243020
Diffstat (limited to 'android')
5 files changed, 58 insertions, 1 deletions
diff --git a/android/sdremote/res/values/strings.xml b/android/sdremote/res/values/strings.xml index cf84a3a48876..d5658d6b83de 100644 --- a/android/sdremote/res/values/strings.xml +++ b/android/sdremote/res/values/strings.xml @@ -64,6 +64,8 @@ <string name="preferences_volume_keys_actions_summary">Switch slides and activate animations using volume keys</string> <string name="preferences_keep_screen_on_title">Keep screen on</string> <string name="preferences_keep_screen_on_summary">Prevent phone from sleeping while presenting</string> + <string name="preferences_quiet_mode_title">Quiet mode</string> + <string name="preferences_quiet_mode_summary">Set up vibrate ringer mode while presenting</string> <string name="requirements_libreoffice_version">LibreOffice version 4.0.3 or higher running on a computer.</string> <string name="requirements_libreoffice_general_enabled">Impress Remote enabled at “Tools → Options → LibreOffice Impress → General” in LibreOffice Impress.</string> diff --git a/android/sdremote/res/xml/preferences.xml b/android/sdremote/res/xml/preferences.xml index 104c52847a73..1318aafd510b 100644 --- a/android/sdremote/res/xml/preferences.xml +++ b/android/sdremote/res/xml/preferences.xml @@ -13,4 +13,10 @@ android:title="@string/preferences_keep_screen_on_title" android:summary="@string/preferences_keep_screen_on_summary"/> + <CheckBoxPreference + android:key="quiet_mode" + android:defaultValue="false" + android:title="@string/preferences_quiet_mode_title" + android:summary="@string/preferences_quiet_mode_summary"/> + </PreferenceScreen>
\ No newline at end of file diff --git a/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java b/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java index 3c41eccbd20d..1dbc22f4f17a 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java +++ b/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java @@ -14,6 +14,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; +import android.media.AudioManager; import android.os.Bundle; import android.os.IBinder; import android.support.v4.app.DialogFragment; @@ -46,6 +47,8 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi private Mode mMode; + private int mRingerMode; + private CommunicationService mCommunicationService; private IntentsReceiver mIntentsReceiver; @@ -59,6 +62,9 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi setUpFragment(); setUpKeepingScreenOn(); + saveRingerMode(aSavedInstanceState); + enableQuietMode(); + bindService(); } @@ -104,6 +110,32 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi return aPreferences.getBoolean(Preferences.Keys.KEEP_SCREEN_ON); } + private void saveRingerMode(Bundle aSavedInstanceState) { + if (aSavedInstanceState == null) { + mRingerMode = getAudioManager().getRingerMode(); + } else { + mRingerMode = aSavedInstanceState.getInt(SavedStates.Keys.RINGER_MODE); + } + } + + private AudioManager getAudioManager() { + return (AudioManager) getSystemService(AUDIO_SERVICE); + } + + private void enableQuietMode() { + if (!isQuietModeRequired()) { + return; + } + + getAudioManager().setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + } + + private boolean isQuietModeRequired() { + Preferences aPreferences = Preferences.getSettingsInstance(this); + + return aPreferences.getBoolean(Preferences.Keys.QUIET_MODE); + } + private void bindService() { Intent aIntent = Intents.buildCommunicationServiceIntent(this); bindService(aIntent, this, Context.BIND_AUTO_CREATE); @@ -509,16 +541,23 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi super.onSaveInstanceState(aOutState); saveMode(aOutState); + rememberRingerMode(aOutState); } private void saveMode(Bundle aOutState) { aOutState.putSerializable(SavedStates.Keys.MODE, mMode); } + private void rememberRingerMode(Bundle aOutState) { + aOutState.putInt(SavedStates.Keys.RINGER_MODE, mRingerMode); + } + @Override protected void onDestroy() { super.onDestroy(); + disableQuietMode(); + if (!isServiceBound()) { return; } @@ -526,6 +565,14 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi unbindService(); } + private void disableQuietMode() { + if (!isQuietModeRequired()) { + return; + } + + getAudioManager().setRingerMode(mRingerMode); + } + private void unbindService() { unbindService(this); } diff --git a/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java b/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java index 5a9b0c783288..ca5fbaee8a62 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java +++ b/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java @@ -30,8 +30,9 @@ public final class Preferences { public static final String SELECTED_COMPUTERS_TAB_INDEX = "selected_computers_tab_index"; - public static final String VOLUME_KEYS_ACTIONS = "volume_keys_actions"; public static final String KEEP_SCREEN_ON = "keep_screen_on"; + public static final String VOLUME_KEYS_ACTIONS = "volume_keys_actions"; + public static final String QUIET_MODE = "quiet_mode"; } private static final class Defaults { diff --git a/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java b/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java index 7bc5dad6a9b0..062462e757af 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java +++ b/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java @@ -22,6 +22,7 @@ public final class SavedStates { public static final String MODE = "MODE"; public static final String PIN = "PIN"; public static final String PROGRESS_MESSAGE = "PROGRESS_MESSAGE"; + public static final String RINGER_MODE = "RINGER_MODE"; } } |