我的应用设置了两个通知通道,每个通道都有自己的声音效果。但用户表示,这些声音在某些设备上无法正常工作,例如Pixel。这是我的设置。我能做些什么来改进通道设置,以确保声音(保存在res/raw/中的两个.mp3文件(尽可能可靠地播放(作为后台通知,而不是前景(?我缺少更好的音频设置、格式或配置吗?
我使用的是 Firebase Cloud Messaging。下面是创建通道的代码:
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();
也许你可以用这个想法