gpt4 book ai didi

java - 在通知流上播放声音

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:22 25 4
gpt4 key购买 nike

我检查了“whats app”,当您在聊天中时,发送/接收消息声音仅在 Android 上的“通知”流上播放。

我们在 android 中有四个流 channel :

  • 铃声
  • 媒体
  • 通知
  • 系统

我想在通知流上播放声音。

示例代码似乎不起作用:

try {
with(mediaPlayer) {
reset()
setDataSource(
requireContext(),
Uri.parse("android.resource://${requireContext().packageName}/" + R.raw.sound_all_outgoingmessage)
)
setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
setAudioAttributes(
AudioAttributes
.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build())
prepare()
setOnCompletionListener { play = true }
if (!isPlaying && play) {
play = false
start()
}
}
} catch (e: Exception) {
play = true
e.printStackTrace()
}

最佳答案

添加 setUsage() 方法解决了我的问题。

fun playSound(context: Context, source: Uri) {
if (!mPlay) return
try {
with(mMediaPlayer) {
reset()
setDataSource(context, source)
if (android.os.Build.VERSION.SDK_INT >= 21) {
val audioAttribute = android.media.AudioAttributes.Builder()
.setUsage(android.media.AudioAttributes.USAGE_NOTIFICATION)
.setContentType(android.media.AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build()
setAudioAttributes(audioAttribute)
}
setVolume(0.2f, 0.2f)
prepare()
setOnCompletionListener { mPlay = true }
if (!isPlaying && mPlay) {
mPlay = false
start()
}
}
} catch (e: Exception) {
mPlay = true
e.printStackTrace()
}
}

关于java - 在通知流上播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60413077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com