2016-01-15 2 views
1

Я занимаюсь разработкой интернет-радио с использованием android MediaPlayer. Мне нужно обновить интерфейс, когда песня закончится, и начнется новая песня. Как найти, что песня закончилась? Это мой текущий код. mMediaPlayer.start(); когда пользователь нажимает кнопку.Потоковое радио на Android

mMediaPlayer = new MediaPlayer(); 
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mMediaPlayer.setDataSource(streamURL); 
     mMediaPlayer.prepareAsync(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

ответ

3

Радио потокового бесконечен поэтому потоковое никогда не будет конца, но если то, что вы можете сделать, это отслеживать метаданные в радио потокового для воспроизводимой композиции, и если вы обнаружили, что-то изменилось, то сделай что-нибудь. Что-то более важное, что я хочу указать, заключается в том, что MediaPlayer ужасно медленный для радиопотока, я сам разработал radio streaming app, поэтому я настоятельно рекомендую вам использовать этот library для этого по двум причинам: один быстрее и имеет больший буфер, чем MediaPlayer (MediaPlayer класс в какой-то момент имеет жестко закодированный буфер byte[] buffer = new byte[4096];, который принесет вам некоторые проблемы), а во-вторых, потому что эта библиотека позволяет обрабатывать метаданные более комфортно.

+0

Спасибо. FFMpeg был моим вторым вариантом, если я не смог найти решение с MediaPlayer. – Ossir

+0

Можете ли вы помочь мне с FFMpeg? Я использую precompiled libs и fmp.jar для создания MediaPlayer. Я добавил .jar как библиотеку и скопировал файлы .so в папку libs. Все компилируется, но приложение падает на 'FFmpegMediaPlayer mp = new FFmpegMediaPlayer();'. Приложение не может найти файлы .so, но они находятся в папке libs. – Ossir

Смежные вопросы