android - 如何在exoplayer中监控播放位置

标签 android exoplayer exoplayer2.x

我正在努力寻找一种方法来创建一个线程来监控 Exoplayer 应用中的 playbackPosition。

在下面的代码中,我需要的一个简单任务是通过覆盖 onIsPlayingChanged 函数,每 1000 毫秒记录一次位置参数。但是我知道这只会发生一次,但是如果应用程序状态发生变化,为了使这种情况持续发生,我想我应该创建一个线程。请让我知道我怎样才能做到这一点。 如您所见,注释代码是我尝试过的代码,但肯定不对。

private class PlaybackStateListener implements Player.EventListener{

    @Override
    public void onIsPlayingChanged(boolean isPlaying) {
     //TODO: Add handler to poll the playback position continuously.
      /* if(isPlaying){
        HandlerCompat.
                postDelayed(new Runnable() {
                  @Override
                  public void run() {
                    long positionParam = playbackPosition;
                  }
                });
        }*/

      if (isPlaying) {
        Log.d(TAG, "Playing position is " + playbackPosition);
      } else {
        // Not playing because playback is paused, ended, suppressed, or the player
        // is buffering, stopped or failed. Check player.getPlaybackState,
        // player.getPlayWhenReady, player.getPlaybackError and
        // player.getPlaybackSuppressionReason for details.
      }
    }

最佳答案

Kotlin 协程方式

private fun pollCurrentDuration() = flow {
        while (player.currentPosition + DURATION_OFFSET <= player.duration) {
            emit(player.currentPosition + DURATION_OFFSET)
            delay(DEFAULT_DELAY_MS)
        }
    }.conflate()

关于android - 如何在exoplayer中监控播放位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61500999/

相关文章:

java - Exoplayer PlayerNotificationManager onSwipe

android - 将 Canvas 链接到位图

android - 使用 Dagger2 进行内部依赖注入(inject)

java - 在游戏控制台 kotlin.UninitializedPropertyAccessException 中出现此错误

Android Kotlin - 从今天开始如何使用 ExoPlayer SimpleCache

android - 使用 PhoneGap 从 Android 打印到移动蓝牙打印机

java - 重写notifyDataSetChanged()不起作用

android - &lt;!CDATA[]]]> 从 strings.xml 转移到 MainActivity.xml 时不工作

android - Exoplayer2.x:​​ Player.STATE_ENDED 在视频结束时触发两次,如何在 android 中实现 exoplayer?