Почему метод getPuration () MediaPlayer возвращает -1 при низком качестве звука? - PullRequest
0 голосов
/ 19 мая 2019

Я обновил свое приложение для Android API-23 до API-28 сейчас MediaPlayer getDuration() метод return -1 , в api-23 метод getDuration работает нормально, но в последних API есть проблема,при использовании низкого качества (т.е. 16 Кбит / с) аудио.но в то же время, когда я использую высокое качество (от 64 КБ до 192 КБ) работает нормально.

MediaPlayer mp;
// 128kbs working fine in my app 
mp.setDataSource(http://www.villopim.com.br/android/Music_02.mp3);
// return actual time    
mp.getDuration();

// 16kbs working fine in my app 
mp.setDataSource(http://topappstopgames.com/appsdata/islamic/sn002.mp3);
// return -1    
mp.getDuration();

Итак, как решить эту проблему в последних API.

Ответы [ 2 ]

1 голос
/ 19 мая 2019

из документации

длительность в миллисекундах, если длительность недоступна (например, при потоковой передаче живого контента), возвращается -1.

но вы не должны использовать это

mp.getDuration();

вместо этого:

mediaPlayer.getDuration();

0 голосов
/ 28 мая 2019

Я переключаюсь на ExoPlayer , теперь он работает.

...