Android 百度音乐盒

public class MainActivity extends AppCompatActivity {

    private Iservice iservice; // 这个是我们定义的中间人对象
    private MyConn conn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 混合方式开启服务
        //1 先调用startService 目的是可以保证服务在后台长期运行
        Intent intent = new Intent(this, MusicService.class);
        startService(intent);
        //2 调用bingService 目的是为了获取我们定义的中间人对象 就可以间接的调用服务里面的方法了
        conn = new MyConn();
        bindService(intent, conn, BIND_AUTO_CREATE);
    }

    @Override
    protected void onDestroy() {
        //当Activity销毁的时候解绑服务,目的是为了不报红色日志
        unbindService(conn);
        super.onDestroy();
    }
    //点击按钮 播放音乐
    public void click1(View v) {
        //调用播放音乐的方法
        iservice.callPlayMusic();
    }
    //点击按钮 暂停音乐
    public void click2(View v) {
        //调用暂停音乐的方法
        iservice.callPauseMusic();
    }
    //点击按钮 继续播放音乐
    public void click3(View v) {
        //调用继续播放音乐的方法
        iservice.callRePlayMusic();
    }

    //监听服务的状态
    private class MyConn implements ServiceConnection {
        //当服务连接成功时调用
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            // 获取我们的中间人对象
            iservice = (Iservice) service;
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    }
}


public class MusicService extends Service {
    private static final String TAG = "jojo";

    public MusicService() {
    }
    // 把我们定义的中间人对象返回
    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
//        throw new UnsupportedOperationException("Not yet implemented");
        return new MyBinder();
    }
    // 播放音乐的方法
    public void playMusic() {
        // TODO: 2017/4/27 等撸完多媒体 再完善这个案例
        Log.d(TAG, "playMusic: ");
    }
    // 暂停音乐的方法
    public void pauseMusic() {
        Log.d(TAG, "pauseMusic: ");
    }
    //继续播放音乐的方法
    public void rePlayMusic() {
        Log.d(TAG, "rePlayMusic: ");
    }

    //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();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值