安卓多个通知声音

3

我尝试通过在raw文件夹中添加.wav文件来制作两种类型的自定义通知声音,当类似工作的通知到来时,它会产生与工作相关的通知声音,在其他情况下,如果类似消息的通知到来,则会产生与消息相关的通知声音。

我设置了不同的渠道ID,以在高端设备中获取通知,但是在创建渠道ID后,当通知首次到达时,无论是哪种类型的通知都会产生相同的通知声音。

onMessageReceived

    String sound = data.get("sound");
    Uri soundUri = Uri.parse("android.resource://" + getPackageName() + "/raw/" + sound);

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, getString(R.string.default_notification_channel_id))
            .setSmallIcon(getNotificationIconId())
            .setContentTitle(title)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setOnlyAlertOnce(true)
            .setSound(soundUri)
            .setContentIntent(pendingIntent)
            .setStyle(new NotificationCompat.BigTextStyle()
                    .bigText(messageBody));

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O && notificationManager != null) {
        int importance = android.app.NotificationManager.IMPORTANCE_HIGH;
        AudioAttributes audioAttributes = new AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                .build();
        NotificationChannel mChannel = new NotificationChannel(
                getString(R.string.default_notification_channel_id), Constants.NOTIFICATION_CHANNEL_NAME_MESSAGE, importance);
        mChannel.setSound(soundUri,audioAttributes);
        notificationManager.createNotificationChannel(mChannel);
    }
    if (notificationManager != null) {
        notificationManager.notify(messageId, notificationBuilder.build());
    }

清单文件

<meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id"/>`enter code here`
1个回答

3
你需要创建两个通知渠道,每个通道对应一个声音,并根据你想要播放的声音分配通道ID。 在文档中解释了一旦创建通道就无法修改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接