繁体   English   中英

如何确保我的通知声音在所有设备上都能可靠地播放?

[英]How do I make sure my notification sounds play reliably on all devices?

我的应用程序设置了两个通知通道,每个通道都有自己的音效。 但用户表示声音在某些设备上无法正常工作,例如 Pixel。 这是我的设置。 我能做些什么来改进频道设置以确保声音(保存在 res/raw/ 中的两个 .mp3 文件)尽可能可靠地播放(作为背景通知,而不是前景)? 是否有我缺少的更好的音频设置或格式或配置?

我正在使用 Firebase 云消息传递。 这是创建频道的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val importance = NotificationManager.IMPORTANCE_HIGH

            val audioAttributes = AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_ALARM)
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .setFlags(FLAG_AUDIBILITY_ENFORCED)
                .build()

            val newChannel = NotificationChannel(channelId, name, importance)
            newChannel.description = description
            newChannel.importance = IMPORTANCE_HIGH

            newChannel.setSound(sound, audioAttributes)
            return newChannel
}

这是获取声音 URI 的代码:

private fun createSoundUri(soundNum: Int, context: Context):Uri? {
val scheme = ContentResolver.SCHEME_ANDROID_RESOURCE
val packageName = context.packageName
val root = "$scheme://$packageName/"

return when(soundNum) {
    0 -> Uri.parse(root + R.raw.sound1)
    1 -> Uri.parse(root + R.raw.sound2)
    2 -> Settings.System.DEFAULT_NOTIFICATION_URI
    else -> null
    }
}

我使用 FCM 接收数据,然后开始在我的应用程序中启动媒体播放器的活动。

MediaPlayer mediaPlayer = MediaPlayer.create(this,R.raw.ringtone); mediaPlayer.setLooping(true); mediaPlayer.start();

也许你可以使用这个想法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM