0
我想處理媒體播放器錯誤,當錯誤發生時,我想烤麪包消息,然後播放下一首歌曲,但每當發生錯誤時它就會崩潰。優雅地處理媒體播放器錯誤
這裏是代碼我想
public class player1 extends ActionBarActivity implements View.OnClickListener,OnErrorListener{
MediaPlayer mp;
ArrayList<File> mySongs;
int position;
Uri u;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
Intent i = getIntent();
Bundle b = i.getExtras();
mySongs = (ArrayList) b.getParcelableArrayList("songlist");
position = b.getInt("pos", 0);
u = Uri.parse(Uri.encode(mySongs.get(position).toString()));
mp = MediaPlayer.create(getApplicationContext(), u);
mp.start();
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
String errorWhat;
switch(what){
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
errorWhat = "MEDIA_ERROR_UNKNOWN";
break;
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
errorWhat = "MEDIA_ERROR_SERVER_DIED";
break;
default:
errorWhat = "!";
}
String errorExtra;
switch(extra){
case MediaPlayer.MEDIA_ERROR_IO:
errorExtra = "MEDIA_ERROR_IO";
break;
case MediaPlayer.MEDIA_ERROR_MALFORMED:
errorExtra = "MEDIA_ERROR_MALFORMED";
break;
case MediaPlayer.MEDIA_ERROR_UNSUPPORTED:
errorExtra = "MEDIA_ERROR_UNSUPPORTED";
break;
case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
errorExtra = "MEDIA_ERROR_TIMED_OUT";
break;
default:
errorExtra = "!";
}
Toast.makeText(player1.this,
"Error" + "\n"
+ errorWhat + "\n"
+ errorExtra,
Toast.LENGTH_LONG).show();
//release
mp.stop();
mp.release();
initMediaPlayer();
return true;
};
private void initMediaPlayer() {
Toast.makeText(player1.this,
"playomng next song",
Toast.LENGTH_LONG).show();
position = (position + 1)%mySongs.size();
u = Uri.parse(Uri.encode(mySongs.get(position).toString()));
mp = MediaPlayer.create(getApplicationContext(), u);
mp.start();
}
}
如何管理而不強制媒體播放器來關閉處理這些錯誤?
由於您的代碼崩潰,請發佈crashtraptrace以幫助查找問題。 – Aster