Воспроизведение аудиосообщений в формате CloudKey в формате mp4 с помощью MediaPlayer.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Воспроизведение аудиосообщений в формате CloudKey в формате mp4 с помощью MediaPlayer.

Сообщение Anonymous »

Этот код необходим для реализации функций MediaPlayer. Так как сам проект мультиплатформенный.

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

class AudioPlayerImp(private val client: HttpClient) : AudioPlayer {
private var mediaPlayer: MediaPlayer? = null
private var playerState: PlayerState = PlayerState.IDLE

override suspend fun play(audioUrl: String) {
stop()

val downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
val fileName = audioUrl.split("/").last()
val filePath = "${downloadsDir.absolutePath}/$fileName"
val file = File(filePath)
if (!file.exists()) {
client.downloadAndSave(audioUrl, fileName)
return
}

mediaPlayer = MediaPlayer().apply {
setDataSource(filePath)
setOnPreparedListener {
setPlayerState(PlayerState.PREPARED)
// Начать воспроизведение после подготовки
if (getPlayerState() == PlayerState.PREPARED) {
start()
setPlayerState(PlayerState.PLAYING)
}
}
setOnBufferingUpdateListener { _, percent ->
if (getPlayerState() == PlayerState.COMPLETED || getPlayerState() == PlayerState.PAUSED) {
return@setOnBufferingUpdateListener
}
if (!isPlaying && percent >= 50) { // Порог буферизации в 50%
if (getPlayerState() == PlayerState.PREPARED) {
start()
setPlayerState(PlayerState.PLAYING)
}
}
}
setOnCompletionListener {
setPlayerState(PlayerState.COMPLETED)
}
setOnErrorListener { _, what, extra ->
setPlayerState(PlayerState.ERROR)
true  Ошибка обработана
}
prepareAsync()
}
}
}
Это выдержка из журналов:

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

Expecting binder but got null!
initFromDataSource, cannot create extractor!
Failed to init from data source!
error (1, -2147483648)
Error (1,-2147483648)
На этом рисунке показано, в какой форме приходит мой запрос. Я поместил его в свой класс данных:
Изображение


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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