【问题标题】:React Native - timer progress with screen offReact Native - 屏幕关闭的计时器进度
【发布时间】:2020-02-28 15:31:20
【问题描述】:

我需要在计时器结束后按铃。 我正在使用setInterval() 运行计时器。屏幕打开时它可以正常工作,并且应用程序会阻止屏幕自动关闭。但是,如果用户使用电源按钮关闭屏幕,则计时器将在 3 分钟后停止计时,并且不会触发声音。这是由于 Android 睡眠模式和没有唤醒锁定,我认为。如果我再次打开屏幕,它将继续滴答作响。如何启用唤醒锁?

我试过了:

  • react-native-background-timer - 有助于在应用程序处于后台时保持滴答作响,但不会在屏幕关闭时保持运行
  • react-native-video 播放一些音频文件。屏幕关闭时音频继续播放,但屏幕关闭 3 分钟后计时器仍然停止

这是我的计时器类中的(工作)示例函数代码:

play = () => {
    if (this.timeLeft != 0) {
      this.paused = false
      this.running = BackgroundTimer.setInterval(() => {
        if (!this.paused) {
          this.timePassed++
          this.timeLeft = this.duration - this.timePassed     
        }
        if(this.timeLeft <= 0) {
          BackgroundTimer.clearInterval(this.running)
          this.playBell()
        }
      }, 1000)
    } else {
      this.stopped = true
    }
  }

如何确保代码使用唤醒锁运行?

【问题讨论】:

  • 你能解决这个问题吗?我对后台计时器有同样的问题。
  • 那种。我发布了一个答案

标签: javascript react-native timer react-native-android


【解决方案1】:

不想弄乱本机代码,我做了以下操作:

react-native-video 支持使用playInBackground={true} 进行屏幕关闭播放,onProgressonEnd 等在屏幕关闭的情况下继续工作,所以我在这些回调中运行所有计时器滴答代码。如果您没有使用计时器来播放视频/音频,您仍然可以通过重复播放一个小的无声音频文件来使用 react-native-video。

【讨论】:

    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2013-11-08
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多