java - Mediaplayer gets stucked after too many replays -


i programmed quiz 1 question, 3 choices , 1 correct answer. questions shuffling , on click on correct choices mediaplayer plays sound, on false choice plays other sound , switches activity menu2. there button (replay quiz) restarts activity one. when user sequence: (false choice redirected menu2 , clicks on button restart quiz) fast , several times sound not play anymore, user must close application , wait several minutes till sound works again.

quiz activity (activity1)

public class quizactivity extends appcompatactivity {  private actionbardrawertoggle mtoggle;  private questionlibrary mquestionlibrary = new questionlibrary();  private textview mscoreview; private textview mquestionview; private button mbuttonchoice1; private button mbuttonchoice2; private button mbuttonchoice3; private string manswer; private int mscore = 0; private int mquestionnumber = 0; dialog dialog; dialog dialog2; textview closebutton; textview closebutton2; checkbox checkboxmp;   sharedpreferences mypref; sharedpreferences.editor editor;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_quiz);      final mediaplayer mp = new mediaplayer();     final mediaplayer mp2 = mediaplayer.create(this,r.raw.wrong);            //dialog 1     createdialog();     button dialogbutton = (button) findviewbyid(r.id.dialogbtn);     dialogbutton.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             dialog.show();          }     });      closebutton.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             dialog.dismiss();         }     });     //end dialog 1      //dialog 2     createdialog2();     button dialogbutton2 = (button) findviewbyid(r.id.dialogbtn2);     dialogbutton2.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             dialog2.show();          }     });       closebutton2.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             dialog2.dismiss();         }     });     //end dialog 2      sharedpreferences mypref = getpreferences(mode_private);      final sharedpreferences.editor editor = mypref.edit();      checkboxmp.setoncheckedchangelistener(new compoundbutton.oncheckedchangelistener() {                                                 @override                                                 public void oncheckedchanged(compoundbutton buttonview,boolean ischecked) {                                                     editor.putboolean("playsounds", !ischecked);                                                     editor.commit();                                                     if (!ischecked){                                                         mp.setvolume(1,1);                                                         mp2.setvolume(1,1);                                                     }else{                                                         mp.setvolume(0,0);                                                         mp2.setvolume(0,0);                                                     }                                                 }                                             })     ;       boolean playsounds = mypref.getboolean("playsounds", false);     checkboxmp.setchecked(!playsounds);     if(playsounds){          mp.setvolume(1,1);         mp2.setvolume(1,1);     }     else{          mp.setvolume(0,0);         mp2.setvolume(0,0);     }          textview sharetextview = (textview) findviewbyid(r.id.share);     sharetextview.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             intent myintent = new intent(intent.action_send);             myintent.settype("text/plain");             myintent.putextra(intent.extra_subject, "hello!");             myintent.putextra(intent.extra_text, "my highscore in quizzi high! bet can't beat me except cleverer me. download app now! https://play.google.com/store/apps/details?id=amapps.impossiblequiz");             startactivity(intent.createchooser(myintent, "share with:"));         }     });      mquestionlibrary.shuffle();       setsupportactionbar((toolbar) findviewbyid(r.id.nav_action));     drawerlayout mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawerlayout);     mtoggle = new actionbardrawertoggle(this, mdrawerlayout, r.string.open, r.string.close);     mdrawerlayout.adddrawerlistener(mtoggle);     mtoggle.syncstate();     getsupportactionbar().setdisplayhomeasupenabled(true); // able see navigation burger "button"      ((navigationview) findviewbyid(r.id.nv1)).setnavigationitemselectedlistener(new navigationview.onnavigationitemselectedlistener() {         @override         public boolean onnavigationitemselected(menuitem menuitem) {             switch (menuitem.getitemid()) {                 case r.id.nav_stats:                     startactivity(new intent(quizactivity.this, menu2.class));                     break;                 case r.id.nav_about:                     startactivity(new intent(quizactivity.this, menu3.class));                     break;             }              return true;         }     });      mscoreview = (textview) findviewbyid(r.id.score_score);     mquestionview = (textview) findviewbyid(r.id.question);     mbuttonchoice1 = (button) findviewbyid(r.id.choice1);     mbuttonchoice2 = (button) findviewbyid(r.id.choice2);     mbuttonchoice3 = (button) findviewbyid(r.id.choice3);      final list<button> choices = new arraylist<>();     choices.add(mbuttonchoice1);     choices.add(mbuttonchoice2);     choices.add(mbuttonchoice3);      updatequestion();        (final button choice : choices) {         choice.setonclicklistener(new view.onclicklistener() {              @override             public void onclick(view view) {                 if (choice.gettext().equals(manswer)) {                       try {                         mp.reset();                         assetfiledescriptor afd;                         afd = getassets().openfd("sample.mp3");                         mp.setdatasource(afd.getfiledescriptor(),afd.getstartoffset(),afd.getlength());                         mp.prepare();                         mp.start();                     } catch (illegalstateexception e) {                         e.printstacktrace();                     } catch (ioexception e) {                         e.printstacktrace();                     }                     updatescore();                     updatequestion();                     toast.maketext(quizactivity.this, "correct", toast.length_short).show();                    } else {                     mp2.start();                     toast.maketext(quizactivity.this, "wrong... try again!", toast.length_short).show();                     intent intent = new intent(quizactivity.this, menu2.class);                     intent.putextra("score", mscore); // pass score menu2                     startactivity(intent);                 }             }         });     }  }  private void updatequestion() {     if (mquestionnumber < mquestionlibrary.getlength()) {         mquestionview.settext(mquestionlibrary.getquestion(mquestionnumber));         mbuttonchoice1.settext(mquestionlibrary.getchoice1(mquestionnumber));         mbuttonchoice2.settext(mquestionlibrary.getchoice2(mquestionnumber));         mbuttonchoice3.settext(mquestionlibrary.getchoice3(mquestionnumber));         manswer = mquestionlibrary.getcorrectanswer(mquestionnumber++);     } else {         toast.maketext(quizactivity.this, "last question! intelligent!", toast.length_short).show();         intent intent = new intent(quizactivity.this, menu2.class);         intent.putextra("score", mscore);         startactivity(intent);     } }  private void updatescore() {     mscoreview.settext(string.valueof(++mscore));      sharedpreferences mypref = getpreferences(mode_private);     int highscore = mypref.getint("highscore", 0);      if (mscore > highscore) {         sharedpreferences.editor editor = mypref.edit();         editor.putint("highscore", mscore);         editor.apply();     } }  @override public boolean onoptionsitemselected(menuitem item) {     return mtoggle.onoptionsitemselected(item) || super.onoptionsitemselected(item); }  private void createdialog() {     dialog = new dialog(this);     dialog.settitle("tutorial");     dialog.setcontentview(r.layout.popup_menu1_1);     closebutton = (textview) dialog.findviewbyid(r.id.closetxt); }   private void createdialog2() {     dialog2 = new dialog(this);     dialog2.settitle("settings");     dialog2.setcontentview(r.layout.popup_menu1_2);     closebutton2 = (textview) dialog2.findviewbyid(r.id.closetxt2);     checkboxmp = (checkbox) dialog2.findviewbyid(r.id.ckeckbox);   } } 

menu2(second activity)

            public class menu2 extends appcompatactivity {  private int mscore; private actionbardrawertoggle mtoggle;   @override public void onbackpressed() {     intent intent =new intent(menu2.this,quizactivity.class);     startactivity(intent); }  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_menu2);         textview txtscore = (textview) findviewbyid(r.id.textscore2);     textview txthighscore = (textview) findviewbyid(r.id.texthighscore);      imageview trophy1 = (imageview) findviewbyid(r.id.trophy1);     imageview trophy2 = (imageview) findviewbyid(r.id.trophy2);     imageview trophy3 = (imageview) findviewbyid(r.id.trophy3);     imageview trophy4 = (imageview) findviewbyid(r.id.trophy4);     imageview trophy5 = (imageview) findviewbyid(r.id.trophy5);     imageview trophy6 = (imageview) findviewbyid(r.id.trophy6);     imageview genius60score = (imageview)findviewbyid(r.id.genius60img);     imageview trophyimgbefore60 = (imageview)findviewbyid(r.id.statstrophy);         intent intent = getintent();     mscore = intent.getintextra("score", 0);     txtscore.settext(string.format("your score: %d", mscore));      sharedpreferences mypref = getpreferences(mode_private);     int highscore = mypref.getint("highscore", 0);        if (mscore > highscore) {         highscore = mscore;          txthighscore.settext(string.format("high score: %d", mscore));          sharedpreferences.editor editor = mypref.edit();         editor.putint("highscore", mscore);         editor.apply();     } else {         txthighscore.settext(string.format("high score: %d", highscore));     }      if (highscore >= 10) {         trophy1.setvisibility(view.visible);     }      if (highscore >= 20) {         trophy2.setvisibility(view.visible);     }      if (highscore >= 30) {         trophy3.setvisibility(view.visible);     }      if (highscore >= 40) {         trophy4.setvisibility(view.visible);     }      if (highscore >=50) {         trophy5.setvisibility(view.visible);     }      if (highscore >= 60) {         trophy6.setvisibility(view.visible);         trophyimgbefore60.setvisibility(view.gone);         genius60score.setvisibility(view.visible);     }      final list<imageview> containers = new arraylist<>();     containers.add(trophy1);     containers.add(trophy2);     containers.add(trophy3);     containers.add(trophy4);     containers.add(trophy5);     containers.add(trophy6);      final list<integer> dialogs = new arraylist<>();     dialogs.add(r.layout.popup_menu2_1);     dialogs.add(r.layout.popup_menu2_2);     dialogs.add(r.layout.popup_menu2_3);     dialogs.add(r.layout.popup_menu2_4);     dialogs.add(r.layout.popup_menu2_5);     dialogs.add(r.layout.popup_menu2_6);      (int = 0; < containers.size(); i++) {         final int j = i;          containers.get(j).setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 final dialog dialog = new dialog(menu2.this);                 dialog.settitle("trophies");                 dialog.setcontentview(dialogs.get(j));                 dialog.show();             }         });     }      setsupportactionbar((toolbar) findviewbyid(r.id.nav_action));     drawerlayout drawerlayout = (drawerlayout) findviewbyid(r.id.drawerlayout2);      mtoggle = new actionbardrawertoggle(this, drawerlayout, r.string.open, r.string.close);     drawerlayout.adddrawerlistener(mtoggle);     mtoggle.syncstate();     getsupportactionbar().setdisplayhomeasupenabled(true);      navigationview mnavigationview = (navigationview) findviewbyid(nv2);     mnavigationview.setnavigationitemselectedlistener(new navigationview.onnavigationitemselectedlistener() {          @override         public boolean onnavigationitemselected(@nonnull menuitem menuitem) {             switch (menuitem.getitemid()) {                 case r.id.nav_home2:                     startactivity(new intent(menu2.this, quizactivity.class));                     break;                 case r.id.nav_about2:                     startactivity(new intent(menu2.this, menu3.class));                     break;             }              return true;         }     }); }  @override public boolean onoptionsitemselected(menuitem item) {     return mtoggle.onoptionsitemselected(item) || super.onoptionsitemselected(item); }  public void onclick(view view) {     intent intent = new intent(menu2.this, quizactivity.class);     intent.putextra("score", mscore);     startactivity(intent); } } 


Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -