У меня есть служба, которая использует MediaPlayer
для потокового интернет-радио:Android MediaPlayer.OnBufferingUpdateListener - Процент забуференном содержания отрицательно
public class MediaPlayerService extends Service implements
MediaPlayer.OnPreparedListener,
MediaPlayer.OnBufferingUpdateListener {
private MediaPlayer mMediaPlayer;
private WifiLock mWifiLock;
public int onStartCommand(Intent intent, int flags, int startId) {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(MY_URL);
// Acquire CPU lock and wi-fi lock
mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
mWifiLock = ((WifiManager) getSystemService(Context.WIFI_SERVICE))
.createWifiLock(WifiManager.WIFI_MODE_FULL, "Media Player Wi-Fi Lock");
mWifiLock.acquire();
mMediaPlayer.prepareAsync();
return START_STICKY;
}
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mMediaPlayer.start();
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
Log.d("Buffered " + percent);
}
}
Все великие произведения, кроме onBufferingUpdate(...)
метода. Он печатает это в журнале:
Buffered -819200000
Buffered -819200000
Buffered -1228800000
Buffered -1228800000
Buffered -1228800000
Buffered -1228800000
Buffered -1638400000
Buffered -1638400000
Buffered -1638400000
Buffered -1638400000
Buffered -2048000000
Buffered -2048000000
Buffered -2048000000
Buffered -2048000000
Buffered -2147483648 (repeated further on)
Примечание: -2147483648 является Integer MIN_VALUE
Хотя percent
должно быть:
процент (0-100) из содержимое, которое было забуферировано или воспроизведено пока
Вопросы:
- Почему неправильно значения передаются в
onBufferingUpdate()
percent
параметра? - Как это исправить?
- Есть ли другой способ получить, сколько данных было буферизировано? Моя цель - показать индикатор выполнения, чтобы дать пользователю представление о том, когда будет буферизован достаточный объем данных и начнется воспроизведение радио.
Спасибо!
Спасибо за ваш ответ. Я попробую это на этой неделе. Однако я не уверен, как это решит проблему с «процентом», имеющим ценности, о которых я упоминал в вопросе. –
Вы проверили URL-адрес музыки? –
Что вы предлагаете искать? URL-адрес работает как воспроизведение звука. –