如何在亚马逊Fire TV上使用麦克风搜索后正确恢复视频?

时间:2015-03-04 01:53:49

标签: android android-tv amazon-fire-tv

我正在使用Google Leanback代码为亚马逊Fire TV创建一个视频播放器应用程序(我知道它不适用于Fire TV,但我已经做了必要的工作 - 除了这个)。我已经做到这一点,如果您通过按主页按钮退出应用程序,或者如果您暂停,观看不同的视频,然后返回,视频将从您停止的位置恢复。

然而,亚马逊拒绝我的应用程序,因为如果您在播放视频时进行麦克风搜索然后返回,视频将重新开始而不是恢复。

我错过了什么?以下是我从PlayerActivity中获取startVideoPlayer()和onPause()的代码:

private void startVideoPlayer() {
    Bundle bundle = getIntent().getExtras();
    mSelectedMovie = (Movie) getIntent().getSerializableExtra( VideoDetailsFragment.EXTRA_MOVIE );

    if( mSelectedMovie == null || TextUtils.isEmpty( mSelectedMovie.getVideoUrl() ) || bundle == null )
        return;

    mShouldStartPlayback = bundle.getBoolean( VideoDetailsFragment.EXTRA_SHOULD_AUTO_START, true );
    sprefs = PreferenceManager.getDefaultSharedPreferences(this);
    startPosition = sprefs.getInt(mSelectedMovie.getVideoUrl(), 0);
    mVideoView.setVideoPath( mSelectedMovie.getVideoUrl() );
    if ( mShouldStartPlayback ) {
        mPlaybackState = PlaybackState.PLAYING;
        updatePlayButton( mPlaybackState );
        if ( startPosition > 0 ) {
            mVideoView.seekTo( startPosition );
        }
        mVideoView.start();
        mPlayPause.requestFocus();
        startControllersTimer();
    } else {
        updatePlaybackLocation();
        mPlaybackState = PlaybackState.PAUSED;
        updatePlayButton( mPlaybackState );
    }
}

@Override
protected void onPause() {
    super.onPause();
    if ( mSeekbarTimer != null ) {
        mSeekbarTimer.cancel();
        mSeekbarTimer = null;
    }
    if ( mControllersTimer != null ) {
        mControllersTimer.cancel();
    }
    mVideoView.pause();
    mPlaybackState = PlaybackState.PAUSED;
    updatePlayButton( mPlaybackState );
    SharedPreferences.Editor editor = sprefs.edit();
    editor.putInt(mSelectedMovie.getVideoUrl(), mVideoView.getCurrentPosition());
    editor.apply();
}

1 个答案:

答案 0 :(得分:0)

我最终不得不在onResume中调用startVideoPlayer,如下所示:

@Override
public void onResume() {
    super.onResume();
    startVideoPlayer();
}