android - mediaplayer stop song when exit app or phone ring -
my song not stop when hit home button or when answer call? timer not stop when song stopped? there way can stop timer? please me?
public class mainactivity extends activity { private button start, stop; private mediaplayer mp; private textview display, comment; private textview timervalue; private long starttime = 0l; private handler customhandler = new handler(); long timeinmilliseconds = 0l; long timeswapbuff = 0l; long updatedtime = 0l; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); timervalue = (textview) findviewbyid(r.id.timervalue); start = (button) findviewbyid(r.id.bstart); start.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { mp = mediaplayer.create(mainactivity.this, r.raw.splahsound); mp.start(); starttime = systemclock.uptimemillis(); customhandler.postdelayed(updatetimerthread, 0); mp.setoncompletionlistener(new mediaplayer.oncompletionlistener() { @override public void oncompletion(mediaplayer mp) { mp.stop(); mp.reset(); mp.release(); // free memory mp = null; } }); } }); stop = (button) findviewbyid(r.id.bdur); stop.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if (mp != null) { try { mp.stop(); mp.reset(); mp.release(); mp = null; } catch (exception e) { log.d("error", e.tostring()); } } timeswapbuff += timeinmilliseconds; customhandler.removecallbacks(updatetimerthread); } }); } @override protected void onpause() { super.onpause(); } private runnable updatetimerthread = new runnable() { public void run() { timeinmilliseconds = systemclock.uptimemillis() - starttime; updatedtime = timeswapbuff + timeinmilliseconds; int secs = (int) (updatedtime / 1000); int mins = secs / 60; secs = secs % 60; // int milliseconds = (int) (updatedtime % 1000); timervalue.settext("" + mins + ":" + string.format("%02d", secs)); customhandler.postdelayed(this, 0); } }; }
you can stop mediaplayer in onpause method:
@override protected void onpause() { //stop mediaplayer: if (mp != null && mp.isplaying()) { mp.stop(); } super.onpause(); } instead of:
@override protected void onpause() { super.onpause(); } note: check if mediaplayer playing important, because calling stop() method on mediaplayer not playing throw ilegalstateexception.
Comments
Post a Comment