开启服务(播放音乐)

2018-07-04  本文已影响0人  Summer_27d1

首先创建一个类,继承Service
···
package com.example.ytest11_service;

import java.io.IOException;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Environment;
import android.os.IBinder;
import android.util.Log;

public class MyService extends Service{

private MediaPlayer mediaPlayer;
private MyIBinder myIBinder;
private boolean isfist=true;
@Override
public IBinder onBind(Intent intent) {
    myIBinder = new MyIBinder();
    Log.e("TAG", "onBind");
    return myIBinder;
}

// 当服务创建的时候
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = new MediaPlayer();
Log.e("TAG", "onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("TAG", "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public boolean onUnbind(Intent intent) {
Log.e("TAG", "onUnbind");
return super.onUnbind(intent);
}
@Override
public void onDestroy() {
Log.e("TAG", "onDestroy");
super.onDestroy();
}
public void playMusic(){
Log.e("TAG", "setDataSource");
if (isfist==true) {
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/金玟岐 - 岁月神偷 (Demo).mp3");
mediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
mediaPlayer.start();
}
public void stopMusic(){

    mediaPlayer.pause();
    isfist=false;
}
class MyIBinder extends Binder{
    public void play(){
        playMusic();
        Log.e("TAG", "setDataSource");
    }
    public void pause(){
        stopMusic();
    }
}

}
MainActivity 中
···

package com.example.ytest11_service;

import com.example.ytest11_service.MyService.MyIBinder;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {
private Intent service;
private MyIBinder myIBinder;
private MyServiceConnetion myServiceConnetion;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
service = new Intent(MainActivity.this,MyService.class);
//开启 创建并开启
findViewById(R.id.btn1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startService(service);
myServiceConnetion = new MyServiceConnetion();
bindService(service, myServiceConnetion, BIND_AUTO_CREATE);
}
});
//关闭
findViewById(R.id.btn2).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            stopService(service);

            
        }
    });
 //绑定(服务)创建服务并连接服务, 不开启
 findViewById(R.id.btn3).setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
        myServiceConnetion = new MyServiceConnetion();
        bindService(service, myServiceConnetion, BIND_AUTO_CREATE); 
        
        }
    });
 //解绑
 findViewById(R.id.btn4).setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
            if (myServiceConnetion!=null) {
            unbindService(myServiceConnetion);
            myServiceConnetion=null;
            }
            
        }
    });
 //播放
 findViewById(R.id.btn5).setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
        myIBinder.play();
        Log.e("TAG", "setDataSource");
    }
});
 //暂停
 findViewById(R.id.btn6).setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
        myIBinder.pause();
    }
});
    
}
class MyServiceConnetion implements ServiceConnection{

    @Override//当与服务连接时
    public void onServiceConnected(ComponentName name, IBinder service) {
        myIBinder = (MyIBinder) service;
    
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        
    }
    
}

}

···
效果图


image.png

···

上一篇下一篇

猜你喜欢

热点阅读