音乐播放器
一.效果
二.思路
1.创建MusicService,在Service中提供播放音乐、暂停音乐、停止播放、播放上一首、播放下一首、滚动条滚动
2.创建Activity:绑定服务,绑定成功直接调用服务中的方法
三.代码
(1)MusicService的代码:
public class MusicService extends Service {
private MediaPlayer mediaPlayer;
private ArrayList<Integer> list=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)注册服务:
<service android:name=".MusicService"></service>
(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();
}
}