Как я могу зациклить звук на Android с помощью android.media.MediaPlayer?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу зациклить звук на Android с помощью android.media.MediaPlayer?

Сообщение Anonymous »

Уже около двух недель я пытаюсь заставить зацикливание звука работать, но, похоже, во всех методах, которые мне удалось найти, есть проблемы. Это то, что я пробовал до сих пор, а также проблемы, с которыми я столкнулся.
  • Использование обычной функции setLooping .

Код: Выделить всё

val mediaPlayer = MediaPlayer().apply {
setDataSource(file.inputStream().fd)
isLooping = true
setOnPreparedListener {
it.seekTo(0)
it.start()
}
setOnErrorListener { ... }
prepareAsync()
}
У меня это не работает, потому что между циклами часто возникает задержка, из-за которой он не синхронизируется с тактильными ощущениями и анимацией, которые воспроизводятся одновременно.
  • Совмещение медиаплееров и использование функции setNextMediaPlayer().

Код: Выделить всё

val current: MediaPlayer? = null
val next: MediaPlayer? = null

init {
current = MediaPlayer().apply {
setDataSource(file.inputStream().fd)
setOnPreparedListener {
it.seek(0)
it.start()
}
setOnErrorListener { ... }
prepareAsync()
}

createNextPlayer()
}

fun createNextPlayer() {
next = MediaPlayer.apply() {
setDataSource(file.inputStream().fd)
setOnPreparedListener {
it.seek(0)
current?.let {
it.setNextMediaPlayer(next)
it.setOnCompletionListener {
it?.release()
current = next
createNextPlayer()
}
}
}
}
}
У меня это не работает, потому что на некоторых телефонах (Pixel 6a, Galaxy S22) onCompletionListener, кажется, вызывается перед звуковым файлом фактически завершен, что приводит к рассинхронизации с тактильными ощущениями и анимацией. Однако этот метод работает на Note 9 и Galaxy S7.
  • Использование android.media.SoundPool< /code>
У меня это не работает, потому что аудиофайлы слишком большие (я не могу уменьшить их, они сжимаются как как можно больше).
  • Использование java.util.Timer для управления моментом начала воспроизведения MediaPlayer< /li>
Кажется, какое-то время это работает, но постепенно все больше и больше рассинхронизируется с анимацией и тактильными ощущениями. Насколько я могу судить, также нет возможности сделать паузу, так что это не лучшее решение для моего варианта использования.
Я знаю, что эта проблема существует уже ДОЛГОЕ time (в 2011 году впервые было сообщено, что .isLooping = true не выполняет плавный цикл), но я надеюсь, что у кого-нибудь есть секретный метод, который я могу использовать. Все отлично работает на iOS, а тактильные ощущения отлично работают на Android, так что это последнее, над чем мне нужно работать для этой конкретной функции.
Любая помощь приветствуется. п>

Подробнее здесь: https://stackoverflow.com/questions/788 ... ediaplayer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу зациклить звук на Android с помощью android.media.MediaPlayer?
    Anonymous » » в форуме Android
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Случайное исключение IllegalStateException в Android mediaPlayer.prepare или mediaPlayer.setDataSource
    Anonymous » » в форуме Android
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Как я могу воспроизвести аудиофайл из ZipFile с помощью JavaFX Media и Mediaplayer?
    Anonymous » » в форуме JAVA
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Read_external_storage разрешение, необходимое для открытия Content: // media/external/[...] в MediaPlayer?
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Qt MediaPlayer не воспроизводит звук [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    60 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»