Question: Please i need help me with this android programme. I Create Service to handle playback of your newly downloaded song that extends Service and running
Please i need help me with this android programme.
I Create Service to handle playback of your newly downloaded song that extends Service and running the MediaPlayer.
so I need it to do:
1. The buttons in your Activity should make requests to the Service to play/stop/pause/etc
2. the state of the MediaPlayer should not change when the user presses the back key or home key that is, if the MediaPlayer is playing music, leaving the Activity should not stop the music
3. Update the seekBar with start and Time.
this My code
public class PlayBack extends Service { public static final String MY_SHARED_PREF="MY_SHARED_PREF"; private final IBinder mBinder = new ServiceBinder(); static MediaPlayer mPlayer; private SeekBar seekBar; Timer timer; TimerTask timerTask; public class ServiceBinder extends Binder { PlayBack getService() { return PlayBack.this; } } @Override public IBinder onBind(Intent arg0){return mBinder;} @Override public void onCreate (){ super.onCreate(); mPlayer=new MediaPlayer(); SharedPreferences sharedPreferences = getSharedPreferences(MY_SHARED_PREF, MODE_PRIVATE); try { mPlayer.setDataSource(this, Uri.parse(sharedPreferences.getString(MY_SHARED_PREF,""))); mPlayer.prepare(); }catch (IOException e){ e.printStackTrace(); } } @Override public int onStartCommand (Intent intent, int flags, int startId) { return START_NOT_STICKY; } public void playMusic() { if(mPlayer!=null) { mPlayer.start(); seekBar.setMax(mPlayer.getDuration()); }else { resetMediaPlayer(); } } public void pauseMusic() { if(mPlayer.isPlaying()) { mPlayer.pause(); int length=mPlayer.getCurrentPosition(); } } public void stopMusic() { if(mPlayer.isPlaying()){ mPlayer.stop(); mPlayer.reset(); } } public void resetMediaPlayer(){ mPlayer.reset(); } public int getDuration(){ if(mPlayer != null){ return mPlayer.getCurrentPosition(); }else{ return 0; } } public void setSeekbar(final SeekBar seekBar){ this.seekBar = seekBar; seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar arg0) { } @Override public void onStartTrackingTouch(SeekBar arg0) { } @Override public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { if(arg2){ mPlayer.seekTo(arg1); if(!mPlayer.isPlaying()){ mPlayer.start(); } } } }); timer = new Timer(); timerTask=new TimerTask() { @Override public void run() { if(mPlayer != null){ if(mPlayer.isPlaying()){ seekBar.setProgress(mPlayer.getCurrentPosition()); } } } }; timer.schedule(timerTask, 0, 1000); } /*@Override public void onDestroy () { if(mPlayer != null) { mPlayer.release(); } timerTask.cancel(); timer.cancel(); super.onDestroy(); }*/ }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
