• android背景音乐保活


    /**

    • 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秒种播放一次音乐进行进程守护

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

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

  • 相关阅读:
    本地化小程序运营 同城小程序开发
    实用新型专利的注意事项
    redis多线程操作
    Flink中序列化RoaringBitmap不同方式的对比
    git基本使用
    计算摄像技术02 - 颜色空间
    查询PCIE设备的VID,DID,SVID,SDID
    华为云云服务器云耀L实例评测 | 从零到一:华为云云耀云服务器L实例上手体验
    day15_集合
    射频功率放大器的指标有哪些内容
  • 原文地址:https://blog.csdn.net/qq_35577329/article/details/133995286