您的位置:首页 > 移动开发 > Android开发

Android启动服务播放音乐(两种启动方式)

2015-09-16 20:08 453 查看
两种服务源码下载地址。点击下载

服务有两种类型:

一、启动式服务通过startService启动

package com.example.service_music;

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

public class StartServicePlayMusic extends Service {

private static final String TAG = "StartServicePlayMusic";
private MediaPlayer mediaPlayer;

@Override
public IBinder onBind(Intent intent) {
Log.i(TAG, "==onBind执行");
return null;

}

@Override
public void onCreate() {
Log.i(TAG, "==onCreate执行");
super.onCreate();
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(this, R.raw.jhym);
mediaPlayer.setLooping(false);
}
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "==onStartCommand执行");
if (intent != null) {
Bundle bundle = intent.getExtras();
int type = bundle.getInt("type");
switch (type) {
case 1:
play();
break;
case 2:
pause();
break;
case 3:
stop();
break;
case 4:
stopSelf();
break;
}
}
return START_STICKY;
}

@Override
public void onDestroy() {
Log.i(TAG, "==onDestroy执行");
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}

public void play() {
Log.i(TAG, "==play执行");
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
}

public void pause() {
Log.i(TAG, "==pause执行");
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}

public void stop() {
Log.i(TAG, "==stop执行");
if (mediaPlayer != null) {
mediaPlayer.stop();
}
}

}


二、通过bind启动的绑定式服务

public class BindServicePlayMusic extends Service {
private static final String TAG = "BindServicePlayMusic";
private MediaPlayer mediaPlayer;
private IBinder binder = null;

@Override
public void onCreate() {
Log.i(TAG, "==onCreate执行");
super.onCreate();
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(this, R.raw.jhym);
mediaPlayer.setLooping(false);
}
binder = new MyBinder();
}

class MyBinder extends Binder {
public BindServicePlayMusic getService() {
return BindServicePlayMusic.this;
}
};

@Override
public IBinder onBind(Intent intent) {
Log.i(TAG, "==onBind执行");
play();
return binder;
}

@Override
public boolean onUnbind(Intent intent) {
Log.i(TAG, "==onUnbind执行");
return super.onUnbind(intent);
}

@Override
public void onDestroy() {
Log.i(TAG, "==onDestroy执行");
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
public void play() {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
}

public void pause() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}
public void stop() {
if (mediaPlayer != null) {
mediaPlayer.stop();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息