From 99389390b8c784a3af7f7f0ef1a121b35134bb60 Mon Sep 17 00:00:00 2001 From: Artur Dryomov Date: Thu, 3 Oct 2013 21:35:44 +0300 Subject: Add support for setting vibrate mode while showing a slide show. Change-Id: I8f407fbce3b90b56a0fb24b1143bcd7f2a243020 --- android/sdremote/res/values/strings.xml | 2 + android/sdremote/res/xml/preferences.xml | 6 +++ .../impressremote/activity/SlideShowActivity.java | 47 ++++++++++++++++++++++ .../impressremote/util/Preferences.java | 3 +- .../impressremote/util/SavedStates.java | 1 + 5 files changed, 58 insertions(+), 1 deletion(-) (limited to 'android/sdremote') 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 @@ Switch slides and activate animations using volume keys Keep screen on Prevent phone from sleeping while presenting + Quiet mode + Set up vibrate ringer mode while presenting LibreOffice version 4.0.3 or higher running on a computer. Impress Remote enabled at “Tools → Options → LibreOffice Impress → General” in LibreOffice Impress. 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"/> + + \ 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"; } } -- cgit