Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android media player seekbar

I have a service that creates, plays and handles a mediaplayer (just audio), yet I have a seekbar in the main activity that I want to, naturally, show the progress of the audio file and allow the user to seek to various positions.

What I'm having a hell of a time figuring out is: what would be the best or proper way to connect the seekbar in the UI to the mediaplayer in the service?

like image 271
SkilledCoder Avatar asked Oct 10 '22 20:10

SkilledCoder


1 Answers

Here is how I would do this:

  1. Bind to service that plays audio. The interface that server returns in onBind should have getCurrentPos() and getDuration() functions.

  2. In your Activity's onCreate bind to service

  3. In your Activity's onResume use Handler's postDelayed function to start updates.
  4. In your Activity's onPause stop all callbacks posted via postDelayed function.
  5. In runnable that is passed to postDelayed run boundService.getCurrentPos() and boundService.getDuration() and update the seekbar appropriately.

To summarize, you should use service binding and handler for recurring updates.

  1. For bound services read "Bound services" documentation (local bounded service should be sufficient in your scenario).
  2. How to user Handler for periodic updates read this question: Repeat a task with a time delay?
like image 108
inazaruk Avatar answered Oct 13 '22 09:10

inazaruk