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

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

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

  • 相关阅读:
    React常见的一些坑
    学Python有什么好处?Python有哪些优点和特征?
    QT学习日记8——资源文件添加
    金仓数据库KingbaseES物理备份恢复最佳实践(物理备份相关的其他操作)
    java-php-python-知道特产网计算机毕业设计
    前端js手写面试题汇总(一)
    欧科云链携手上海数据交易所,关于未来的“超前实践”正在发生...
    【每日一题】最长回文子序列
    CLion常用插件及c文件模板配置
    Python后端Flask学习项目实践---搭建一个问答网站
  • 原文地址:https://blog.csdn.net/qq_35577329/article/details/133995286