From d088c3d63f991534282674324c972d6f0824a5f9 Mon Sep 17 00:00:00 2001 From: Anemograph Date: Fri, 3 Sep 2021 11:01:47 -0500 Subject: [PATCH] Added ringtone preference setting. --- .../activities/FindPhoneActivity.java | 5 ++- .../activities/SettingsActivity.java | 33 +++++++++++++++++++ .../gadgetbridge/util/GBPrefs.java | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences.xml | 8 ++++- 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java index 9f23ea606..9a22934dd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java @@ -38,8 +38,11 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import androidx.localbroadcastmanager.content.LocalBroadcastManager; + +import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.util.GB; +import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; public class FindPhoneActivity extends AbstractGBActivity { @@ -112,7 +115,7 @@ public class FindPhoneActivity extends AbstractGBActivity { } mp = new MediaPlayer(); - Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); + Uri ringtoneUri = Uri.parse(GBApplication.getPrefs().getString(GBPrefs.PING_TONE, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE).toString())); try { mp.setDataSource(this, ringtoneUri); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java index 73c47e10f..f0d453834 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -28,6 +28,8 @@ import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; +import android.media.Ringtone; +import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.preference.EditTextPreference; @@ -71,6 +73,8 @@ public class SettingsActivity extends AbstractSettingsActivity { public static final String PREF_MEASUREMENT_SYSTEM = "measurement_system"; private static final int FILE_REQUEST_CODE = 4711; + private static final int RINGTONE_REQUEST_CODE = 4712; + private static final String DEFAULT_RINGTONE_URI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE).toString(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -305,6 +309,21 @@ public class SettingsActivity extends AbstractSettingsActivity { } }); + pref = findPreference(GBPrefs.PING_TONE); + pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Set Ping tone"); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL); + startActivityForResult(intent, RINGTONE_REQUEST_CODE); + return true; + } + }); + pref.setSummary(RingtoneManager.getRingtone(this, Uri.parse(prefs.getString(GBPrefs.PING_TONE, DEFAULT_RINGTONE_URI))).getTitle(this)); + pref = findPreference(GBPrefs.AUTO_EXPORT_LOCATION); pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { @@ -436,6 +455,20 @@ public class SettingsActivity extends AbstractSettingsActivity { .getPrefs().getInt(GBPrefs.AUTO_EXPORT_INTERVAL, 0); PeriodicExporter.sheduleAlarm(getApplicationContext(), autoExportPeriod, autoExportEnabled); } + if (requestCode == RINGTONE_REQUEST_CODE && intent != null) { + if(intent.getExtras().getParcelable(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)!= null){ + Uri uri = intent.getExtras().getParcelable(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); + Ringtone r = RingtoneManager.getRingtone(this ,uri); + findPreference(GBPrefs.PING_TONE).setSummary(r.toString()); + + PreferenceManager + .getDefaultSharedPreferences(this) + .edit() + .putString(GBPrefs.PING_TONE, uri.toString()) + .apply(); + findPreference(GBPrefs.PING_TONE).setSummary(r.getTitle(this)); + } + } } /* diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java index 1d7500e32..ebaecc0c2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java @@ -45,6 +45,7 @@ public class GBPrefs { private static final String AUTO_START = "general_autostartonboot"; public static final String AUTO_EXPORT_ENABLED = "auto_export_enabled"; public static final String AUTO_EXPORT_LOCATION = "auto_export_location"; + public static final String PING_TONE = "ping_tone"; public static final String AUTO_EXPORT_INTERVAL = "auto_export_interval"; private static final boolean AUTO_START_DEFAULT = true; private static final String BG_JS_ENABLED = "pebble_enable_background_javascript"; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4fcb23b87..0ba88df0c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -120,6 +120,7 @@ Repetitions Phone Calls Enable VoIP app calls + Ping tone SMS Minimum time between notifications Pebble Messages diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b25d2a18a..15adeb4ca 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,5 +1,6 @@ - + @@ -129,6 +130,11 @@ android:key="pref_key_notifications" android:title="@string/pref_header_notifications"> +