首页 > 代码库 > 百度音乐盒框架

百度音乐盒框架

需求:我既想让服务在后台长期运行  又想调用服务里面的方法  
  混合方式开启服务 
  (1)先调用startService()方法 保证服务在后台长期运行
  (2)调用bindservice()目的获取我们定义的中间人对象 调用服务里面的方法
  (3)unbindservice() 看这时候服务会不会销毁
  (4)最后调用stopservice() 停止服务 
//音乐播放服务public class MusicService extends Service {    //[2]把我们定义的中间人对象 返回    @Override    public IBinder onBind(Intent intent) {        return new MyBinder();    }    //服务第一次开启的是调用    @Override    public void onCreate() {        super.onCreate();    }            //当服务销毁的时候调用    @Override    public void onDestroy() {        super.onDestroy();    }    //专门用来播放音乐的     public void playMusic(){        System.out.println("音乐播放了");        //TODO 等讲完多媒体 把该功能完善            }        //音乐暂停了    public void pauseMusic(){        System.out.println("音乐暂停了");    }        //音乐继续播放的方法    public void  rePlayMusic(){        System.out.println("音乐继续播放了");    }        //[1]定义一个中间人对象(IBinder)     private class MyBinder extends Binder implements Iservice{        //调用播放音乐的方法        @Override        public void callPlayMusic() {                        playMusic();        }        //调用暂停音乐的方法        @Override        public void callPauseMusic() {                        pauseMusic();        }        //调用继续播放的方法         @Override        public void callrePlayMusic() {                        rePlayMusic();        }            }            }

 

public interface Iservice {    //把我们想暴露的方法放到接口中    public void callPlayMusic();    public void callPauseMusic();    public void callrePlayMusic();    }

 

public class MainActivity extends Activity {    private Iservice iservice; // 这个就是我们定义的中间人对象    private MyConn conn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //[0]先调用startservice 方法开启服务 保证服务在后台长期运行        Intent intent = new Intent(this, MusicService.class);        startService(intent);                // [1]调用bindservice 目的是为了获取我们定义的中间人对象        conn = new MyConn();        // 连接MusicService 服务 获取我们定义的中间人对象        bindService(intent, conn, BIND_AUTO_CREATE);    }    // 点击按钮 进行 音乐播放    public void click1(View v) {        // 调用播放音乐的方法        iservice.callPlayMusic();    }    // 暂停音乐    public void click2(View v) {        // 调用暂停音乐的方法        iservice.callPauseMusic();    }    // 继续播放    public void click3(View v) {        // 调用继续播放        iservice.callrePlayMusic();    }    // 当Activity销毁的时候调用    @Override    protected void onDestroy() {        // 在Activity销毁的时候 取消绑定服务        unbindService(conn);        super.onDestroy();    }    private class MyConn implements ServiceConnection {        // 当连接成功时候调用        @Override        public void onServiceConnected(ComponentName name, IBinder service) {            // 获取我们定义的中间人对象            iservice = (Iservice) service;        }        @Override        public void onServiceDisconnected(ComponentName name) {        }    }}

 

百度音乐盒框架