i trying handle media player error, when error occur, want toast message , play next song , whenever error occurs crash.
here code trying
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 = 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(); } } how can manage handle these errors without forcing media player close?
rather putting band aid on code may wiser find actual problem is. if can find line(s) you're receiving error can wrap code in
try{ //code crashes here } catch(exception e){ toast.maketext(context, "media error", length_short).show(); } edit: aware preventing crash via try/catch can cause bugs itself. if can post logcat may able figure out actual error is.
Comments
Post a Comment