天天看点

笔记——BindService实现音乐播放

先创建一个moudle,在res文件夹中创建raw文件夹,将音乐文件存放到raw中。 1.在布局文件中添加三个按钮,播放,暂停,停止。

笔记——BindService实现音乐播放
笔记——BindService实现音乐播放
笔记——BindService实现音乐播放

2.在java文件中实例化,并添加监听

笔记——BindService实现音乐播放
笔记——BindService实现音乐播放
笔记——BindService实现音乐播放

3.创建BindService.java文件,并继承自Service,在自定义内部类中,写一个方法,方法中有一个赋值操作,把参数列表中的值赋值给Service当前类的值,并把onBind的返回值改为创建的方法; 代码如下: public class BindService extends Service{ private MediaPlayer mMediaPlayer; @Nullable @Override public IBinder onBind(Intent intent) { return new MyMusic(); } public class MyMusic extends Binder{ public void play(){ mMediaPlayer.start(); } public void pauser(){ mMediaPlayer.pause(); } public void stop(){ mMediaPlayer.stop(); mMediaPlayer =MediaPlayer.create(BindService.this,R.raw.huanlezhongguonian); } }

@Override public void onCreate() { super.onCreate(); mMediaPlayer = MediaPlayer.create(this,R.raw.huanlezhongguonian); }

@Override public void onDestroy() { super.onDestroy(); mMediaPlayer.release(); } } 4.在主类中,实例化MyMusic,.在serviceConnection方法中,实现赋值操作,即自定义好的类的变量名=iBinder,然后强制类型转换

笔记——BindService实现音乐播放
笔记——BindService实现音乐播放
笔记——BindService实现音乐播放

5.在初始化方法中实例化Intent,选择跳转到哪个页面,启动bindService服务。

笔记——BindService实现音乐播放
笔记——BindService实现音乐播放
笔记——BindService实现音乐播放

6.按钮监听的动作:

笔记——BindService实现音乐播放
笔记——BindService实现音乐播放
笔记——BindService实现音乐播放

7.在最后添加onDestory,从线程结束bindService;

笔记——BindService实现音乐播放
笔记——BindService实现音乐播放

MainActivity.java代码: public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btn_start,btn_pause,btn_stop; private BindService.MyMusic mMyMusic; ServiceConnection conn=new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { mMyMusic= (BindService.MyMusic) service; }

@Override public void onServiceDisconnected(ComponentName name) {

} };

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent =new Intent(); intent.setClass(this,BindService.class); bindService(intent,conn,BIND_AUTO_CREATE); initView(); } private void initView() { btn_start = (Button) findViewById(R.id.button); btn_pause = (Button) findViewById(R.id.button2); btn_stop = (Button) findViewById(R.id.button3); btn_start.setOnClickListener(this); btn_pause.setOnClickListener(this); btn_stop.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: if(mMyMusic!=null){ mMyMusic.play(); } break; case R.id.button2: if(mMyMusic!=null){ mMyMusic.pause(); } break; case R.id.button3: if(mMyMusic!=null){ mMyMusic.stop(); } break; } }

@Override protected void onDestroy() { super.onDestroy(); unbindService(conn); } } 8.在清单文件中添加service权限 <service android:name=".BindService"/>

笔记——BindService实现音乐播放
笔记——BindService实现音乐播放