Search code examples
androidnotificationsalarm

Set Notification sound as default alarm ringtone


What I've discovered is, that if I set notification sound as devices default alarm ringtone like this:

val alarmTone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)
val builder = NotificationCompat.Builder(
        context,
        CHANNEL_ID
)
builder.setDefaults(Notification.DEFAULT_VIBRATE or Notification.DEFAULT_LIGHTS)
builder.priority = NotificationCompat.PRIORITY_DEFAULT
builder.setSound(alarmTone)

This works on almost all older device versions, but as soon as I test it on Android 8.0 device, it sets sound as default notification sound. How can I get default alarm ringtone for devices 8.0?


Solution

  • After 8.0 Oreo You may have created the channel for play notification sound.

    private static void initChannels(NotificationManager notificationManager) {
        if (Build.VERSION.SDK_INT < 26) {
            return;
        }
    
        NotificationChannel channel = new NotificationChannel("ID",
                "NAME",
                NotificationManager.IMPORTANCE_LOW);
        channel.setDescription("DESC");
        channel.enableVibration(false);
        AudioAttributes audioAttributes = new AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
                .build();
        channel.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notification), audioAttributes);
    
        notificationManager.createNotificationChannel(channel);
    }
    

    Make sure you are using targetSdkVersion 26 or above