public class MainActivity extends Activity {
private MyConnection conn;
private MyPlayMusicService playMusicService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
conn = new MyConnection();
}
// 点击button播放音乐
public void startMusic(View view) {
if (playMusicService == null) {
Intent intent = new Intent(MainActivity.this, MyPlayMusicService.class);
// 以绑定的形式开启服务
bindService(intent, conn, Context.BIND_AUTO_CREATE);
} else {
// 播放音乐
playMusicService.startMusic();
}
}
// 点击button暂停播放
public void pauseMusic(View view) {
if (playMusicService != null) {
playMusicService.pauseMusic();
}
}
// 点击button停止播放音乐
public void stopMusic(View view) {
if(playMusicService != null){
playMusicService.stopMusic();
unbindService(conn);
}
}
public class MyConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MyBinder myBinder = (MyBinder) service;
playMusicService = myBinder.getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
}
public class MyPlayMusicService extends Service {
//操作音频的媒体对象
private MediaPlayer mediaPlayer;
private int position = 0;//当前播放的位置
@Override
public void onCreate() {
super.onCreate();
//初始化Mediaplayer
if(mediaPlayer == null){
//根据特定的资源创建MediaPlayer对象
mediaPlayer = MediaPlayer.create(MyPlayMusicService.this, R.raw.heavencity);
}
}
@Override
public IBinder onBind(Intent intent) {
//绑定之后直接播放
startMusic();
return new MyBinder();
}
//开始播放音频
public void startMusic(){
if(mediaPlayer != null && !mediaPlayer.isPlaying()){
try {
if(position == 0){
mediaPlayer.stop();
//在播放之前调用
mediaPlayer.prepare();
mediaPlayer.start();
}else{
//根据指定的位置播放
mediaPlayer.seekTo(position);
mediaPlayer.start();
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
//暂停播放
public void pauseMusic(){
if(mediaPlayer != null && mediaPlayer.isPlaying()){
//暂停播放
mediaPlayer.pause();
//记录当前播放的位置
position = mediaPlayer.getCurrentPosition();
}
}
//停止播放
public void stopMusic(){
if(mediaPlayer != null){
//停止播放
mediaPlayer.stop();
//释放资源
mediaPlayer.release();
}
}
public class MyBinder extends Binder{
public MyPlayMusicService getService(){
return MyPlayMusicService.this;
}
}
}