android - how to get seekbar to automatically move on song play? -


i have looked everywhere fix problem cant seem going.

how make seekbar automatically slide song play ?

this have far.

arraylist<string> arrlist = new arraylist<string>(20); private handler seekhandler = new handler(); imagebutton next, playpause, previous; seekbar seekbar;      protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.layout);         getsupportactionbar().hide();          getinit();     }      public void getinit() {          songcurrentdurationlabel = (textview) findviewbyid(r.id.starttime);         songtotaldurationlabel = (textview) findviewbyid(r.id.endtime);          mediaplayer = new mediaplayer();         mediaplayer = mediaplayer.create(this, r.raw.firstsong);          seekbar = (seekbar) findviewbyid(r.id.seekbar1);         seekbar.setmax(mediaplayer.getduration());         seekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() {              @override             public void onstoptrackingtouch(seekbar seekbar) {                 // remove message handler updating progress bar                 seekhandler.removecallbacks(mupdatetimetask);                 int totalduration = mediaplayer.getduration();                 int currentposition = progresstotimer(seekbar.getprogress(), totalduration);                  // forward or backward seconds                 mediaplayer.seekto(currentposition);                  // update timer progress again                 updateprogressbar();             }              @override             public void onstarttrackingtouch(seekbar seekbar) {                 // remove message handler updating progress bar                 seekhandler.removecallbacks(mupdatetimetask);             }              @override             public void onprogresschanged(seekbar seekbar, int progress, boolean fromuser) {                 if (mediaplayer != null && fromuser) {                     mediaplayer.seekto(progress); //                   mediaplayer.seekto(progress * 1000);                 }             }         });          spinner = ((spinner) findviewbyid(r.id.spinner1));         spinner.setadapter(songadapter);          previous = ((imagebutton) findviewbyid(r.id.previous));         playpause = ((imagebutton) findviewbyid(r.id.play));         next = ((imagebutton) findviewbyid(r.id.next));          spinner.setonitemselectedlistener(this);         previous.setonclicklistener(this);         playpause.setonclicklistener(this);         next.setonclicklistener(this);          totalduration = mediaplayer.getduration();         currentduration = mediaplayer.getcurrentposition() / 1000;          // displaying total duration time         songtotaldurationlabel.settext("" + millisecondstotimer(totalduration));          // displaying time completed playing         songcurrentdurationlabel.settext("" + millisecondstotimer(currentduration));     }      public void updateprogressbar() {         seekhandler.postdelayed(mupdatetimetask, 100);     }      private runnable mupdatetimetask = new runnable() {         @override         public void run() {             long totalduration = mediaplayer.getduration();             long currentduration = mediaplayer.getcurrentposition() / 1000;             int progress = (int) getprogresspercentage(currentduration, totalduration);              // updating progress bar             seekbar.setprogress(progress);              // running thread after 100 milliseconds             seekhandler.postdelayed(this, 100);         }     };      public int progresstotimer(int progress, int totalduration) {         int currentduration = 0;         totalduration = (int) (totalduration / 1000);         currentduration = (int) ((((double) progress) / 100) * totalduration);          // return current duration in milliseconds         return currentduration * 1000;     }      public int getprogresspercentage(long currentduration1, long totalduration1) {         double percentage = (double) 0;          long currentseconds = (int) (currentduration1 / 1000);         long totalseconds = (int) (totalduration1 / 1000);          // calculating percentage         percentage = (((double) currentseconds) / totalseconds) * 100;          // return percentage         return percentage.intvalue();     }      public string millisecondstotimer(long milliseconds) {         string finaltimerstring = "";         string secondsstring = "";          // convert total duration time         int hours = (int) (milliseconds / (1000 * 60 * 60));         int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);         int seconds = (int) ((milliseconds % (1000 * 60 * 60)) % (1000 * 60) / 1000);         // add hours if there         if (hours > 0) {             finaltimerstring = hours + ":";         }          // prepending 0 seconds if 1 digit         if (seconds < 10) {             secondsstring = "0" + seconds;         } else {             secondsstring = "" + seconds;         }          finaltimerstring = finaltimerstring + minutes + ":" + secondsstring;          // return timer string         return finaltimerstring;     }  } 

i didnt include song list , other stuff dont see why necesary put here. anyways, when have here dont no error or anything, seekbar doesnt automatically move , when try move manually position goes right 0.

first of should define runnable object triggered each second. situation, in everysecond class triggered.

i paste example code. here runnable class.

runnable timerrunnable = new runnable() {     public void run() {     // mediaplayer time , set value                                 // trigger every 1 second.     updatehandler.postdelayed(this, 1000);    } }; 

and should have handler trigger runnable instance.

handler updatehandler = new handler();  updatehandler.postdelayed(timerrunnable, 1000); 

i hope sample you.


Comments

Popular posts from this blog

user interface - How to replace the Python logo in a Tkinter-based Python GUI app? -

objective c - Greedy NSProgressIndicator Allocation -

how to set an OCR language in Google Drive -