如何在通话后恢复ExoPlayer播放

3

我无法在接到电话后恢复exoplayer中的视频,而是从头开始。

这是我在onPause()中的代码:

@Override
protected void onPause() {
    super.onPause();
    TelephonyManager telePhoneManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    if (telePhoneManager != null) {
        telePhoneManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
    }
    if(!backPressed){
        releasePlayer();
    }else{
        player.setBackgrounded(true);
    }
shutterView.setVisibility(View.VISIBLE);
}

以下是onResume()的内容:

 @Override
protected void onResume() {
    super.onResume();
    if (player == null) {
            preparePlayer();
    } else {
        player.setBackgrounded(false);
    }
}

有人能帮我解决这个问题吗?


1
然而现在已经太晚了,但对于其他谷歌用户,请尝试使用player.setPlayWhenReady(false)来暂停播放,使用player.setPlayWhenReady(true)来恢复播放。 - Saroj
简历时视频卡顿一秒钟,只有音频播放。 - Sagar
1个回答

2
将AudioAttributes设置到您的播放器中。最初的回答。
AudioAttributes audioAttributes = new AudioAttributes.Builder()
            .setUsage(C.USAGE_MEDIA)
            .setContentType(C.CONTENT_TYPE_MOVIE)
            .build();
.
.
.
simpleExoPlayer.setAudioAttributes(audioAttributes);

onPause()

 @Override
public void onPause() {
    super.onPause();
    releasePlayer();
}

onResume()

 @Override
public void onResume() {
    super.onResume();
    if (simpleExoPlayer == null) {
        initializePlayer();
    }
    startPlay();
}

释放播放器

 private void releasePlayer() {
    if (simpleExoPlayer != null) {
        playbackPosition = simpleExoPlayer.getCurrentPosition();
        currentWindow = simpleExoPlayer.getCurrentWindowIndex();
        playWhenReady = simpleExoPlayer.getPlayWhenReady();
        simpleExoPlayer.removeListener(componentListener);
        simpleExoPlayer.release();
        simpleExoPlayer = null;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接