From dcae1c198398730a67c363d3cc781ee545fe547b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sylwester=20Zieli=C5=84ski?= Date: Fri, 13 May 2022 10:57:09 +0200 Subject: [PATCH] Fix crash. Disable ringtone if not available. Information on UI will be displayed about the alarm. Attempt to invoke virtual method 'void android.media.Ringtone.setVolume(float)' on a null object reference --- .../android/prx/repository/AlarmHandler.kt | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/AlarmHandler.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/AlarmHandler.kt index bf54fb27..420af5be 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/AlarmHandler.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/AlarmHandler.kt @@ -12,17 +12,21 @@ internal class AlarmHandler @Inject constructor( private val context: Context ) { - private val highLevelRingtone = RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)).apply { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - volume = 1f + private val highLevelRingtone = RingtoneManager + .getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)) + ?.apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + volume = 1f + } } - } - private val mediumLevelRingtone = RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)).apply { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - volume = 0.5f + private val mediumLevelRingtone = RingtoneManager + .getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)) + ?.apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + volume = 0.5f + } } - } fun playAlarm(alarmLevel: AlarmLevel) { val ringtone = when (alarmLevel) { @@ -34,7 +38,7 @@ internal class AlarmHandler @Inject constructor( } fun pauseAlarm() { - highLevelRingtone.takeIf { it.isPlaying }?.stop() - mediumLevelRingtone.takeIf { it.isPlaying }?.stop() + highLevelRingtone?.takeIf { it.isPlaying }?.stop() + mediumLevelRingtone?.takeIf { it.isPlaying }?.stop() } }