diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java index e3d1578714dbef1d18fc3b99aa22b7184139e9cb..180d3822a1baeb958ddcf9e8b2f4fdd4271a3345 100644 --- a/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java +++ b/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java @@ -22,6 +22,7 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; +import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; @@ -235,6 +236,8 @@ public class PreferencesActivity extends AppCompatActivity { final Preference ringtonePref = findPreference(Constants.PREFERENCE_TONE); final Preference vibrationPref = findPreference(Constants.PREFERENCE_NOTIFICATION_VIBRATION); + final Preference ringtoneVibrationPref = + findPreference(Constants.PREFERENCE_NOTIFICATION_TONE_VIBRATION); final Preference viewLogPref = findPreference(Constants.PREFERENCE_LOG); final SharedPreferences prefs = getPreferenceScreen().getSharedPreferences(); @@ -308,6 +311,14 @@ public class PreferencesActivity extends AppCompatActivity { return true; }); + ringtoneVibrationPref.setOnPreferenceClickListener(preference -> { + Intent i = new Intent(android.provider.Settings.ACTION_SETTINGS); + i.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS); + i.putExtra(Settings.EXTRA_APP_PACKAGE, getContext().getPackageName()); + startActivity(i); + return true; + }); + viewLogPref.setOnPreferenceClickListener(preference -> { Intent logIntent = new Intent(preference.getContext(), LogActivity.class); startActivity(logIntent); @@ -322,11 +333,20 @@ public class PreferencesActivity extends AppCompatActivity { getParent(fullscreenPreference).removePreference(fullscreenPreference); } - if (!CloudMessagingHelper.isSupported() - || Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - Log.d(TAG, "Removing notification prefs"); + if (CloudMessagingHelper.isSupported()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Log.d(TAG, "Removing notification prefs for < 25"); + getParent(ringtonePref).removePreference(ringtonePref); + getParent(vibrationPref).removePreference(vibrationPref); + } else { + Log.d(TAG, "Removing notification prefs for >= 25"); + getParent(ringtoneVibrationPref).removePreference(ringtoneVibrationPref); + } + } else { + Log.d(TAG, "Removing all notification prefs"); getParent(ringtonePref).removePreference(ringtonePref); getParent(vibrationPref).removePreference(vibrationPref); + getParent(ringtoneVibrationPref).removePreference(ringtoneVibrationPref); } final ServerProperties props = diff --git a/mobile/src/main/java/org/openhab/habdroid/util/Constants.java b/mobile/src/main/java/org/openhab/habdroid/util/Constants.java index 44c789d7721a91bad78315c51ad05f53aeb3bfab..ed80044efaf7cdf1d7b4663e57a6d909338c0aa5 100644 --- a/mobile/src/main/java/org/openhab/habdroid/util/Constants.java +++ b/mobile/src/main/java/org/openhab/habdroid/util/Constants.java @@ -26,6 +26,8 @@ public class Constants { public static final String PREFERENCE_TONE = "default_openhab_alertringtone"; public static final String PREFERENCE_NOTIFICATION_VIBRATION = "default_openhab_notification_vibration"; + public static final String PREFERENCE_NOTIFICATION_TONE_VIBRATION = + "default_openhab_alertringtone_vibration"; public static final String PREFERENCE_CLEAR_CACHE = "default_openhab_cleacache"; public static final String PREFERENCE_SSLCLIENTCERT = "default_openhab_sslclientcert"; public static final String PREFERENCE_DEBUG_MESSAGES = "default_openhab_debug_messages"; diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml index ea1aba405964af5a139e04b109b5f45fb77aefb4..df156f1d85c9a1b030101f580877916241c12e26 100644 --- a/mobile/src/main/res/values/strings.xml +++ b/mobile/src/main/res/values/strings.xml @@ -68,6 +68,7 @@ <string name="settings_notification_vibration_value_short" translatable="false">short</string> <string name="settings_notification_vibration_value_long" translatable="false">long</string> <string name="settings_notification_vibration_value_twice" translatable="false">twice</string> + <string name="settings_notification_ringtone_vibration">Notification settings</string> <string name="settings_connection_summary">Connected to %s</string> <string name="settings_insecure_connection_summary">Insecurely connected to %s</string> <string name="beta">Beta</string> diff --git a/mobile/src/main/res/xml/preferences.xml b/mobile/src/main/res/xml/preferences.xml index d17b14a920232cd411f1077508af4a2e5121ed4a..ef6af07adc9d1af3fda88ea0a4eb64700b74bbc8 100644 --- a/mobile/src/main/res/xml/preferences.xml +++ b/mobile/src/main/res/xml/preferences.xml @@ -96,6 +96,11 @@ android:entries="@array/notificationVibration" android:entryValues="@array/notificationVibrationValues" android:icon="@drawable/ic_vibration_grey_24dp" /> + <Preference + android:clickable="true" + android:key="default_openhab_alertringtone_vibration" + android:title="@string/settings_notification_ringtone_vibration" + android:icon="@drawable/ic_notifications_active_grey_24dp" /> <SwitchPreference android:defaultValue="false" android:key="default_openhab_debug_messages"