我目前正在尝试编写一个简单的音频播放器,用于流式传输URL,直到用户退出。没什么好看的,但我正在尝试使用MediaPlayer的onInfo方法来等待元数据更新标志。我有以下用于创建媒体播放器对象的代码。
/**
* Creates a new media player and attempts to prepare it.
*/
private void createPlayer(){
Log.v(TAG, "Now in createPlayer()");
if(mPlayer==null){
Log.i(TAG, "No existing media player found, creating.");
mPlayer=new MediaPlayer();
mPlayer.setOnErrorListener(this);
mPlayer.setOnInfoListener(new OnInfoListener() {
public boolean onInfo(MediaPlayer mp, int what, int extra) {
Log.w(TAG,"---Got some info!---");
return false;
}
});
mPlayer.setOnPreparedListener(this);
mPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} else {
Log.i(TAG, "Found an existing media player. Doing nothing.");
}
try{
mPlayer.setDataSource(mStreamUri);
mPlayer.prepareAsync();
Log.i(TAG, "Just sent the media player a prepareAsync()");
}catch(Exception e){
Log.e(TAG,"Caught exception while trying to set up media player.");
}
}
我还没有看到onError fire,但由于我的应用程序简单,我还没有真正得到任何错误,但当然onPrepare工作正常。我已经尝试用类实现它,以及像上面的代码一样的内联方法,但没有任何反应。
答案 0 :(得分:-1)
使用此更改您的代码,然后重试 -
mPlayer.prepare();
答案 1 :(得分:-1)
您不能在onInfoListener中返回false。 android开发人员说,如果它返回false,则infoListener看起来好像没有设置。