本文共 3290 字,大约阅读时间需要 10 分钟。
1.创建MusicService,在Service中提供播放音乐、暂停音乐、停止播放、播放上一首、播放下一首、滚动条滚动
2.创建Activity:绑定服务,绑定成功直接调用服务中的方法(1)MusicService的代码:
public class MusicService extends Service { private MediaPlayer mediaPlayer; private ArrayListlist=new ArrayList<>(); private int current; @Override public void onCreate() { super.onCreate(); list.add(R.raw.aa); list.add(R.raw.bb); list.add(R.raw.cc); } @Nullable @Override public IBinder onBind(Intent intent) { return new MusicBinder(); } //TODO 播放音乐 public void play() { if(mediaPlayer==null){ mediaPlayer=MediaPlayer.create(this,list.get(0)); } mediaPlayer.start();//播放音乐 } //TODO 暂停 public void pause() { if(mediaPlayer!=null){ mediaPlayer.pause();//暂停音乐 } } //TODO 停止 public void stop() { if(mediaPlayer!=null){ mediaPlayer.stop();//暂停音乐 mediaPlayer.release();//资源释放 mediaPlayer=null;//设置为null } } //TODO 播放下一收 public void next(){ //停止当前的歌 stop(); //新的歌曲 int num=(Math.abs(++current))%list.size(); mediaPlayer=MediaPlayer.create(this,(list.get(num))); mediaPlayer.start(); } //TODO 播放上 一收 public void pre(){ //停止当前的歌 stop(); //新的歌曲 int num=(Math.abs(--current))%list.size(); mediaPlayer=MediaPlayer.create(this,(list.get(num))); mediaPlayer.start(); } //TODO 返回当前进度 public int getCurrent(){ if(mediaPlayer!=null){ int positon = mediaPlayer.getCurrentPosition();//当前播放的时长 int duration = mediaPlayer.getDuration();//总时长 return positon*100/duration; } return 0; } //TODO 设置进度 public void setPositon(int progress){ //50 if(mediaPlayer!=null) mediaPlayer.seekTo(mediaPlayer.getDuration()*progress/100); } class MusicBinder extends Binder { public MusicService getService() { return MusicService.this; } }}
(2)注册服务:
(3)Java代码:MainActivity.java
public class MainActivity extends AppCompatActivity { Intent intent; MyService myService; private ServiceConnection connection=new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { myService=((MyService.MyBinder)service).getService(); } @Override public void onServiceDisconnected(ComponentName name) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //绑定服务 intent=new Intent(this,MyService.class); bindService(intent,connection, Service.BIND_AUTO_CREATE); } //解除绑定服务 @Override protected void onDestroy() { super.onDestroy(); unbindService(connection); } //播放音乐按钮 public void play(View view) { myService.play(); } //暂停按钮 public void pause(View view) { myService.pause(); } //停止音乐按钮 public void stop(View view) { myService.stop(); }}
转载地址:http://xwktn.baihongyu.com/