You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android TV屏保触发时直播流暂停问题求助

解决Android TV直播流被屏保打断的问题
  • 仅声明WAKE_LOCK权限无效,需主动获取唤醒锁
    在播放直播的Activity或Service中,初始化PowerManager并获取对应唤醒锁:

    PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
    WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "MyApp:LiveStreamWakeLock");
    
    // 直播开始时获取锁
    wakeLock.acquire();
    
    // 直播停止/页面销毁时释放锁
    // wakeLock.release();
    

    注意:必须在合适时机释放唤醒锁,避免不必要的耗电。

  • 添加窗口保活标志
    在直播页面的Activity中,给窗口添加FLAG_KEEP_SCREEN_ON标志,这是更轻量的屏幕保持方案:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        // 其他初始化逻辑
    }
    
  • 监听屏保广播并拦截
    部分TV设备会强制启动屏保,可通过广播监听屏保启动事件,主动维持直播状态:

    1. 注册广播接收器:
      private BroadcastReceiver screensaverReceiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
              if (Intent.ACTION_SCREENSAVER_STARTED.equals(intent.getAction())) {
                  if (wakeLock != null && !wakeLock.isHeld()) {
                      wakeLock.acquire();
                  }
              }
          }
      };
      
      // 在onCreate中完成注册
      IntentFilter filter = new IntentFilter(Intent.ACTION_SCREENSAVER_STARTED);
      registerReceiver(screensaverReceiver, filter);
      
    2. 在页面销毁时注销接收器并释放锁:
      @Override
      protected void onDestroy() {
          super.onDestroy();
          unregisterReceiver(screensaverReceiver);
          if (wakeLock != null && wakeLock.isHeld()) {
              wakeLock.release();
          }
      }
      
  • 调整播放生命周期逻辑
    避免在ActivityonPause回调中暂停直播,仅在页面完全不可见时(如onStop或主动停止操作)处理暂停:

    @Override
    protected void onPause() {
        // 不在这里暂停直播
        super.onPause();
    }
    
    @Override
    protected void onStop() {
        if (isFinishing()) {
            player.pause();
        }
        super.onStop();
    }
    

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:55:20