当前位置:首页 > 编程笔记 > 正文
已解决

android背景音乐保活

来自网友在路上 163863提问 提问时间:2023-10-24 13:16:07阅读次数: 63

最佳答案 问答题库638位专家为你答疑解惑

/**

  • Created by GT on 2017/3/7.
    */
    public class ProtectService extends Service implements MediaPlayer.OnCompletionListener {

    private boolean mPausePlay = false;//控制是否播放音频
    private MediaPlayer mediaPlayer;
    private Handler mHandler = new Handler();

    @SuppressLint(“NewApi”)
    @Override
    public void onCreate() {
    super.onCreate();
    }

    /**

    • START_NOT_STICKY:当Service因为内存不足而被系统kill后,接下来未来的某个时间内,即使系统内存足够可用,系统也不会尝试重新创建此Service。
    • 除非程序中Client明确再次调用startService(…)启动此Service。
    • START_STICKY:当Service因为内存不足而被系统kill后,接下来未来的某个时间内,当系统内存足够可用的情况下,系统将会尝试重新创建此Service,
    • 一旦创建成功后将回调onStartCommand(…)方法,但其中的Intent将是null,pendingintent除外。
    • START_REDELIVER_INTENT:与START_STICKY唯一不同的是,回调onStartCommand(…)方法时,
    • 其中的Intent将是非空,将是最后一次调用startService(…)中的intent。
    • @param intent
    • @param flags
    • @param startId
    • @return
      */

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    if (mediaPlayer == null) {
    mediaPlayer = MediaPlayer.create(this, R.raw.record);
    mediaPlayer.setVolume(0f, 0f);
    mediaPlayer.setOnCompletionListener(this);
    }
    play();
    return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
    return null;
    }

    /**

    • 播放音频
    • 亮屏:播放保活
    • 锁屏:已连接,播音乐;未连接,不播放
      */
      private void play() {
      if (mediaPlayer != null && !mediaPlayer.isPlaying() && !mPausePlay) {
      mediaPlayer.start();
      }
      }

    /**

    • 停止播放
      */
      private void pause() {
      if (mediaPlayer != null && mediaPlayer.isPlaying()) {
      mediaPlayer.pause();
      }
      mPausePlay = true;
      }

    //播放完成
    @Override
    public void onCompletion(MediaPlayer mp) {
    mHandler.postDelayed(new Runnable() {
    @Override
    public void run() {
    play();
    }
    }, 10 * 1000);
    }

    @Override
    public void onDestroy() {
    super.onDestroy();
    }
    }

打开应用播放
在Appcation域进行打开服务

startService(new Intent(getApplicationContext(), ProtectService.class));
1
原理
每隔10秒种播放一次音乐进行进程守护

局限性
耗电,不利于电量优化,有可能被优化应用检测出被杀死。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续码蛋!

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"android背景音乐保活":http://eshow365.cn/6-23353-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!