/**
* Content:后台播放音乐达到保活目的
* Actor:韩小呆 ヾ(✿゚▽゚)ノ
* Time: 2018/10/12 10:47
* Update:
* Time:
*/
public class SingASongService extends Service {
private MediaPlayer mMediaPlayer;
private Thread thread;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
MyThread myThread = new MyThread();
thread = new Thread(myThread);
mMediaPlayer = MediaPlayer.create(MainApplication.getInstance(), R.raw.no_kill);
mMediaPlayer.setLooping(true);
LogUtils.d("onCreate() 创建播放对象:" + mMediaPlayer.hashCode());
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
thread.start();
LogUtils.d("播放时 线程名称:" + thread.getName());
return START_STICKY;
}
//开始、暂停播放
private void startPlaySong() {
if (mMediaPlayer == null) {
mMediaPlayer = MediaPlayer.create(MainApplication.getInstance(), R.raw.no_kill);
LogUtils.d("音乐启动播放,播放对象为: " + mMediaPlayer.hashCode());
mMediaPlayer.start();
} else {
mMediaPlayer.start();
LogUtils.d("音乐启动播放,播放对象为: " + mMediaPlayer.hashCode());
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (mMediaPlayer != null) {
mMediaPlayer.pause();
LogUtils.d("音乐启动播放,播放对象为: " + mMediaPlayer.hashCode());
int progress = mMediaPlayer.getCurrentPosition();
LogUtils.d("音乐暂停,播放进度:" + progress);
}
}
@Override
public void onDestroy() {
super.onDestroy();
mMediaPlayer.pause();
LogUtils.d("恢复播放 时当前播放器对象:" + mMediaPlayer.hashCode());
stopPlaySong();
LogUtils.d("应用播放服务被杀死,正在重启");
LogUtils.d("目标播放工作线程是否存活:" + thread.isAlive());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(new Intent(getApplicationContext(), SingASongService.class));
} else {
startService(new Intent(getApplicationContext(), SingASongService.class));
}
}
//停止播放销毁对象
private void stopPlaySong() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
LogUtils.d("音乐停止播放,播放对象为:" + mMediaPlayer.hashCode());
LogUtils.d("音乐播放器是否在循环:" + mMediaPlayer.isLooping());
LogUtils.d("音乐播放器是否还在播放:" + mMediaPlayer.isPlaying());
mMediaPlayer.release();
LogUtils.d("播放对象销毁,播放对象为:" + mMediaPlayer.hashCode());
mMediaPlayer = null;
}
}
class MyThread implements Runnable {
@Override
public void run() {
startPlaySong();
}
}
}