From 1d7bfed1c3172020e726209801294f52cc280d17 Mon Sep 17 00:00:00 2001 From: stom79 Date: Sun, 16 Sep 2018 19:05:54 +0200 Subject: [PATCH] Custom sound --- .../mastodon/fragments/SettingsFragment.java | 50 ++++++++++++++++--- .../gouv/etalab/mastodon/helper/Helper.java | 16 ++++-- .../res/layout-sw600dp/fragment_settings.xml | 9 ++++ app/src/main/res/layout/fragment_settings.xml | 9 ++++ app/src/main/res/values-af/strings.xml | 2 + app/src/main/res/values-ar/strings.xml | 2 + app/src/main/res/values-ca/strings.xml | 2 + app/src/main/res/values-cs/strings.xml | 2 + app/src/main/res/values-da/strings.xml | 2 + app/src/main/res/values-de/strings.xml | 4 +- app/src/main/res/values-el/strings.xml | 2 + app/src/main/res/values-es/strings.xml | 2 + app/src/main/res/values-eu/strings.xml | 2 + app/src/main/res/values-fa/strings.xml | 2 + app/src/main/res/values-fi/strings.xml | 2 + app/src/main/res/values-fr/strings.xml | 2 + app/src/main/res/values-he/strings.xml | 2 + app/src/main/res/values-hu/strings.xml | 2 + app/src/main/res/values-hy/strings.xml | 2 + app/src/main/res/values-id/strings.xml | 2 + app/src/main/res/values-it/strings.xml | 2 + app/src/main/res/values-ja/strings.xml | 2 + app/src/main/res/values-ko/strings.xml | 2 + app/src/main/res/values-nl/strings.xml | 2 + app/src/main/res/values-no/strings.xml | 2 + app/src/main/res/values-pl/strings.xml | 2 + app/src/main/res/values-pt/strings.xml | 2 + app/src/main/res/values-ro/strings.xml | 2 + app/src/main/res/values-ru/strings.xml | 2 + app/src/main/res/values-sr/strings.xml | 2 + app/src/main/res/values-sv/strings.xml | 2 + app/src/main/res/values-tr/strings.xml | 2 + app/src/main/res/values-uk/strings.xml | 2 + app/src/main/res/values-vi/strings.xml | 2 + app/src/main/res/values-zh-rCN/strings.xml | 2 + app/src/main/res/values-zh-rTW/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 37 files changed, 139 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java index 367299169..63878ae6b 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java @@ -16,6 +16,9 @@ package fr.gouv.etalab.mastodon.fragments; import android.annotation.SuppressLint; import android.annotation.TargetApi; +import android.app.Activity; +import android.media.RingtoneManager; +import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; import android.content.ContentUris; @@ -40,6 +43,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; @@ -75,6 +79,7 @@ public class SettingsFragment extends Fragment { private Context context; private static final int ACTIVITY_CHOOSE_FILE = 411; + private static final int ACTIVITY_CHOOSE_SOUND = 412; private TextView set_folder; int count1, count2, count3 = 0; private EditText your_api_key; @@ -539,6 +544,18 @@ public class SettingsFragment extends Fragment { }); + Button set_notif_sound = rootView.findViewById(R.id.set_notif_sound); + set_notif_sound.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, context.getString(R.string.select_sound)); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null); + startActivityForResult(intent, ACTIVITY_CHOOSE_SOUND); + } + }); + LinearLayout toot_visibility_container = rootView.findViewById(R.id.toot_visibility_container); String prefKeyOauthTokenT = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null); @@ -751,18 +768,35 @@ public class SettingsFragment extends Fragment { @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) return; + + if(requestCode == ACTIVITY_CHOOSE_FILE) { Uri treeUri = data.getData(); Uri docUri = DocumentsContract.buildDocumentUriUsingTree(treeUri, DocumentsContract.getTreeDocumentId(treeUri)); - String path = getPath(context, docUri); - if( path == null ) - path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath(); - final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putString(Helper.SET_FOLDER_RECORD, path); - editor.apply(); - set_folder.setText(path); + try{ + String path = getPath(context, docUri); + if( path == null ) + path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath(); + final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putString(Helper.SET_FOLDER_RECORD, path); + editor.apply(); + set_folder.setText(path); + }catch (Exception e){ + Toast.makeText(context, R.string.toast_error, Toast.LENGTH_LONG).show(); + } + + }else if (requestCode == ACTIVITY_CHOOSE_SOUND){ + try{ + Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); + final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putString(Helper.SET_NOTIF_SOUND, uri.toString()); + editor.apply(); + }catch (Exception e){ + Toast.makeText(context, R.string.toast_error, Toast.LENGTH_LONG).show(); + } } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 778a67b41..a769721f9 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -28,6 +28,7 @@ import android.graphics.Matrix; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; +import android.media.AudioAttributes; import android.os.CountDownTimer; import android.provider.MediaStore; import android.provider.OpenableColumns; @@ -260,6 +261,7 @@ public class Helper { public static final String SET_FULL_PREVIEW = "set_full_preview"; public static final String SET_COMPACT_MODE = "set_compact_mode"; public static final String SET_SHARE_DETAILS = "set_share_details"; + public static final String SET_NOTIF_SOUND = "set_notif_sound"; public static final int S_512KO = 1; public static final int S_1MO = 2; public static final int S_2MO = 3; @@ -837,9 +839,15 @@ public class Helper { channelTitle = context.getString(R.string.channel_notif_boost); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationChannel channel = new NotificationChannel(channelId, channelTitle, NotificationManager.IMPORTANCE_DEFAULT); + NotificationChannel channel = new NotificationChannel(channelId, channelTitle, NotificationManager.IMPORTANCE_HIGH); NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + AudioAttributes audioAttributes = new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ALARM) + .build(); assert mNotificationManager != null; + String soundUri =sharedpreferences.getString(Helper.SET_NOTIF_SOUND, ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.getPackageName() +"/"+ R.raw.boop); + channel.setSound(Uri.parse(soundUri), audioAttributes); mNotificationManager.createNotificationChannel(channel); } @@ -852,9 +860,9 @@ public class Helper { .setContentText(message); if( sharedpreferences.getBoolean(Helper.SET_NOTIF_SILENT,false) ) { notificationBuilder.setVibrate(new long[] { 500, 500, 500}); - }else { - String soundUri = ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.getPackageName() +"/"; - notificationBuilder.setSound(Uri.parse(soundUri + R.raw.boop)); + }else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O){ + String soundUri =sharedpreferences.getString(Helper.SET_NOTIF_SOUND, ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.getPackageName() +"/"+ R.raw.boop); + notificationBuilder.setSound(Uri.parse(soundUri)); } int ledColour = Color.BLUE; diff --git a/app/src/main/res/layout-sw600dp/fragment_settings.xml b/app/src/main/res/layout-sw600dp/fragment_settings.xml index 70e691adb..cb0d518ab 100644 --- a/app/src/main/res/layout-sw600dp/fragment_settings.xml +++ b/app/src/main/res/layout-sw600dp/fragment_settings.xml @@ -156,6 +156,15 @@ android:layout_height="wrap_content" android:text="@string/send_crash_report" /> + +