Я разрабатываю Voip-приложение, и у меня есть крайний случай, когда я хочу воспроизвести два необработанных файла одновременно.
Когда мне поступает входящий звонок из моего приложения, я создаю новыйМедиаплеер и проигрывайте пользовательскую мелодию звонка.Когда я получаю вскоре после входящего GSM-вызова, я создаю новый медиаплеер и играю стук, чтобы дать пользователю обратную связь, что также есть входящий GSM-вызов.В то же время я хочу, чтобы пользовательская мелодия продолжала воспроизводиться.
private fun setAudioAttributesForFile(audioUsage: Int): AudioAttributes {
return AudioAttributes.Builder()
.setUsage(audioUsage)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
}
private fun startRingtone(fileToPlay: Int): MediaPlayer {
return MediaPlayer().apply {
reset()
if (fileToPlay == R.raw.ring {
setAudioAttributes(setAudioAttributesForFile(AudioAttributes.USAGE_NOTIFICATION_RINGTONE))
} else {
setAudioAttributes(setAudioAttributesForFile(AudioAttributes.USAGE_MEDIA))
}
isLooping = true
Main.get().resources.openRawResourceFd(fileToPlay).use {
setDataSource(
it.fileDescriptor,
it.startOffset,
it.length
)
}
setOnPreparedListener { start() }
prepareAsync()
}
}
Проблема, с которой я столкнулся с этим кодом, состоит в том, что, как только воспроизводится стук, мелодия отключается системой, и как толькокогда звук стука останавливается, рингтон продолжается.
Что я тоже пробовал:
Использование только AudioAttributes.USAGE_NOTIFICATION_RINGTONE
.Как только начинает звучать стук, оба медиаплеера отключаются.
Если я оставлю вызов setAudioAttributes()
и заменим эти четыре строки на
if (fileToPlay == R.raw.ring) {
setAudioAttributesForFile(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
} else {
setAudioAttributesForFile(AudioAttributes.USAGE_MEDIA)
}
тогда я могу воспроизвести эти два файла одновременно.Проблема заключается в том, что файл мелодии звонка не отображается как мелодия звонка, а отображается только как файл мультимедиа.Поэтому, когда я увеличиваю и уменьшаю громкость мелодии звонка, флаг не показывает, что это мелодия звонка.
Можно ли воспроизвести один звук в качестве мелодии звонка, а другой - поверх обычного звука мультимедиа?
Заранее спасибо.Любая помощь приветствуется.