一个简单的Activity
package com.example.day602; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button start,stop;//开启关闭service private Intent serviceIntent;//启动service所需Intent @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start=(Button)findViewById(R.id.start); stop=(Button)findViewById(R.id.stop); serviceIntent=new Intent(this,BackgroundAudioService.class); start.setOnClickListener(this); stop.setOnClickListener(this); } /** * @param v * finish()方法表明当前的Service不依赖于Activity,是独立运行的 */ @Override public void onClick(View v) { if (v == start) { //点击start后一次调用onCreate() onStartCommand() startService(serviceIntent); finish(); } else if (v == stop) { //点击stop后一次调用onDestory() stopService(serviceIntent); finish(); } } }
实现的Service
package com.example.day602; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.net.Uri; import android.os.Environment; import android.os.IBinder; import java.io.File; public class BackgroundAudioService extends Service implements MediaPlayer.OnCompletionListener{ private MediaPlayer mediaPlayer; //处理音频播放的对象 public BackgroundAudioService() { } @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); File file=new File(Environment.getExternalStorageDirectory().getPath()+"/Xzq.mp3");//文件所在的路径 Uri uri = Uri.fromFile(file); mediaPlayer=MediaPlayer.create(this,uri); //创建MediaPlayer对象加载uri mediaPlayer.setOnCompletionListener(this); } @Override public int onStartCommand(Intent intent, int flags, int startId) { //没有播放则开始播放 if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); } return START_STICKY; } @Override public void onDestroy() { super.onDestroy(); //正在播放则停止 if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); } //销毁mediaplayer,释放资源 mediaPlayer.release(); } /** * @param mp * 该service实现了OnCompletionListener,并且将Service本身被设置为mediaPlayer对象的该service实现了OnCompletionListener * 所以当mediaPlayer播放完毕后,调用onCompletion() * 因为只有一首歌所以调用 stopSelf(); */ @Override public void onCompletion(MediaPlayer mp) { stopSelf(); } }