筆記——BindService實現音樂播放

先創建一個moudle,在res文件夾中創建raw文件夾,將音樂文件存放到raw中。
1.在佈局文件中添加三個按鈕,播放,暫停,停止。

2.在java文件中實例化,並添加監聽

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,然後強制類型轉換

5.在初始化方法中實例化Intent,選擇跳轉到哪個頁面,啓動bindService服務。

6.按鈕監聽的動作:

7.在最後添加onDestory,從線程結束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"/>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章