mirror of
				https://github.com/SimpleMobileTools/Simple-Clock.git
				synced 2025-06-05 22:19:17 +02:00 
			
		
		
		
	allow selecting custom sounds as notification sound
This commit is contained in:
		| @@ -22,21 +22,20 @@ import com.simplemobiletools.commons.extensions.showErrorToast | |||||||
| import com.simplemobiletools.commons.helpers.isKitkatPlus | import com.simplemobiletools.commons.helpers.isKitkatPlus | ||||||
| import com.simplemobiletools.commons.views.MyCompatRadioButton | import com.simplemobiletools.commons.views.MyCompatRadioButton | ||||||
| import kotlinx.android.synthetic.main.dialog_select_alarm_sound.view.* | import kotlinx.android.synthetic.main.dialog_select_alarm_sound.view.* | ||||||
| import java.util.LinkedHashSet |  | ||||||
| import kotlin.collections.ArrayList |  | ||||||
|  |  | ||||||
| class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: String, val audioStream: Int, val callback: (alarmSound: AlarmSound?) -> Unit) { | class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: String, val audioStream: Int, val callback: (alarmSound: AlarmSound?) -> Unit) { | ||||||
|     private val ADD_NEW_SOUND_ID = -1 |     private val ADD_NEW_SOUND_ID = -2 | ||||||
|  |  | ||||||
|     private val view = activity.layoutInflater.inflate(R.layout.dialog_select_alarm_sound, null) |     private val view = activity.layoutInflater.inflate(R.layout.dialog_select_alarm_sound, null) | ||||||
|     private var alarmSounds = ArrayList<AlarmSound>() |     private var systemAlarmSounds = ArrayList<AlarmSound>() | ||||||
|  |     private var yourAlarmSounds = ArrayList<AlarmSound>() | ||||||
|     private var mediaPlayer = MediaPlayer() |     private var mediaPlayer = MediaPlayer() | ||||||
|     private val config = activity.config |     private val config = activity.config | ||||||
|     private val dialog: AlertDialog |     private val dialog: AlertDialog | ||||||
|  |  | ||||||
|     init { |     init { | ||||||
|         activity.getAlarmSounds { |         activity.getAlarmSounds { | ||||||
|             alarmSounds = it |             systemAlarmSounds = it | ||||||
|             gotSystemAlarms() |             gotSystemAlarms() | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -56,8 +55,8 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     private fun addYourAlarms() { |     private fun addYourAlarms() { | ||||||
|         val token = object : TypeToken<LinkedHashSet<AlarmSound>>() {}.type |         val token = object : TypeToken<ArrayList<AlarmSound>>() {}.type | ||||||
|         val yourAlarmSounds = Gson().fromJson<LinkedHashSet<AlarmSound>>(config.yourAlarmSounds, token) ?: LinkedHashSet() |         yourAlarmSounds = Gson().fromJson<ArrayList<AlarmSound>>(config.yourAlarmSounds, token) ?: ArrayList() | ||||||
|         yourAlarmSounds.add(AlarmSound(ADD_NEW_SOUND_ID, activity.getString(R.string.add_new_sound), "")) |         yourAlarmSounds.add(AlarmSound(ADD_NEW_SOUND_ID, activity.getString(R.string.add_new_sound), "")) | ||||||
|         yourAlarmSounds.forEach { |         yourAlarmSounds.forEach { | ||||||
|             addAlarmSound(it, view.dialog_select_alarm_your_radio) |             addAlarmSound(it, view.dialog_select_alarm_your_radio) | ||||||
| @@ -65,7 +64,7 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     private fun gotSystemAlarms() { |     private fun gotSystemAlarms() { | ||||||
|         alarmSounds.forEach { |         systemAlarmSounds.forEach { | ||||||
|             addAlarmSound(it, view.dialog_select_alarm_system_radio) |             addAlarmSound(it, view.dialog_select_alarm_system_radio) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -78,6 +77,12 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin | |||||||
|             setColors(config.textColor, activity.getAdjustedPrimaryColor(), config.backgroundColor) |             setColors(config.textColor, activity.getAdjustedPrimaryColor(), config.backgroundColor) | ||||||
|             setOnClickListener { |             setOnClickListener { | ||||||
|                 alarmClicked(alarmSound) |                 alarmClicked(alarmSound) | ||||||
|  |  | ||||||
|  |                 if (holder == view.dialog_select_alarm_system_radio) { | ||||||
|  |                     view.dialog_select_alarm_your_radio.clearCheck() | ||||||
|  |                 } else { | ||||||
|  |                     view.dialog_select_alarm_system_radio.clearCheck() | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -114,11 +119,12 @@ class SelectAlarmSoundDialog(val activity: SimpleActivity, val currentUri: Strin | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     private fun dialogConfirmed() { |     private fun dialogConfirmed() { | ||||||
|         val checkedId = view.dialog_select_alarm_system_radio.checkedRadioButtonId |         if (view.dialog_select_alarm_your_radio.checkedRadioButtonId != -1) { | ||||||
|         if (checkedId == -1) { |             val checkedId = view.dialog_select_alarm_your_radio.checkedRadioButtonId | ||||||
|             callback(null) |             callback(yourAlarmSounds.firstOrNull { it.id == checkedId }) | ||||||
|         } else { |         } else { | ||||||
|             callback(alarmSounds.firstOrNull { it.id == checkedId }) |             val checkedId = view.dialog_select_alarm_system_radio.checkedRadioButtonId | ||||||
|  |             callback(systemAlarmSounds.firstOrNull { it.id == checkedId }) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -296,6 +296,12 @@ fun Context.getAlarmNotification(pendingIntent: PendingIntent, alarm: Alarm, add | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     try { | ||||||
|  |         // ensure custom reminder sounds play well | ||||||
|  |         grantUriPermission("com.android.systemui", Uri.parse(alarm.soundUri), Intent.FLAG_GRANT_READ_URI_PERMISSION) | ||||||
|  |     } catch (ignored: Exception) { | ||||||
|  |     } | ||||||
|  |  | ||||||
|     val reminderActivityIntent = getReminderActivityIntent() |     val reminderActivityIntent = getReminderActivityIntent() | ||||||
|     val builder = NotificationCompat.Builder(this) |     val builder = NotificationCompat.Builder(this) | ||||||
|             .setContentTitle(label) |             .setContentTitle(label) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user