将 DataSource 设置为 URL 后,MediaPlayer 未调用 OnPreparedListener
MediaPlayer not calling OnPreparedListener after setting DataSource as URL
我正在使用媒体播放器播放来自 URL.But 的 mp3,我的媒体播放器在将 URL 设置为数据源后未调用 OnPreparedListener。我调用了 PrepareAsync()。 URL 在浏览器中工作。我没有得到任何 errors.So 请帮助我。
这就是我设置监听器的方式。而我全部实现了。
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnErrorListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnInfoListener(this);
mediaPlayer.setOnBufferingUpdateListener(this);
这是我的 ErrorListener
//Handle errors
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
//Invoked when there has been an error during an asynchronous operation.
switch (what) {
case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
Log.d("MediaPlayer Error", "MEDIA ERROR NOT VALID FOR PROGRESSIVE PLAYBACK " + extra);
break;
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
Log.d("MediaPlayer Error", "MEDIA ERROR SERVER DIED " + extra);
break;
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
Log.d("MediaPlayer Error", "MEDIA ERROR UNKNOWN " + extra);
break;
}
return false;
}
这是我的 OnPreparedListener
@Override
public void onPrepared(MediaPlayer mp) {
//Invoked when the media source is ready for playback.
startMedia();
}
通过使用 ExoAudioPlayer,我解决了问题。
我正在使用媒体播放器播放来自 URL.But 的 mp3,我的媒体播放器在将 URL 设置为数据源后未调用 OnPreparedListener。我调用了 PrepareAsync()。 URL 在浏览器中工作。我没有得到任何 errors.So 请帮助我。
这就是我设置监听器的方式。而我全部实现了。
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnErrorListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnInfoListener(this);
mediaPlayer.setOnBufferingUpdateListener(this);
这是我的 ErrorListener
//Handle errors
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
//Invoked when there has been an error during an asynchronous operation.
switch (what) {
case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
Log.d("MediaPlayer Error", "MEDIA ERROR NOT VALID FOR PROGRESSIVE PLAYBACK " + extra);
break;
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
Log.d("MediaPlayer Error", "MEDIA ERROR SERVER DIED " + extra);
break;
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
Log.d("MediaPlayer Error", "MEDIA ERROR UNKNOWN " + extra);
break;
}
return false;
}
这是我的 OnPreparedListener
@Override
public void onPrepared(MediaPlayer mp) {
//Invoked when the media source is ready for playback.
startMedia();
}
通过使用 ExoAudioPlayer,我解决了问题。