Отображение общего времени ожидания Android

У меня есть простое приложение Android TV Lindback, которое отображает видео. Видеоплеер работает нормально и отображает необходимые элементы управления. Тем не менее, я хотел добавить общую продолжительность видео в правой части PlaybackControlsRow, но не знаю как. Я использую этот код для настройки PlaybackControlRow

private void addPlaybackControlsRow() {
        /* movieItem data must have newly allocated area, do not refer existing movie (ex. mItems.get(0))
           since this item will be overwritten later */
        Movie movieItem = new Movie();
        mPlaybackControlsRow = new PlaybackControlsRow(movieItem);
        mRowsAdapter.add(mPlaybackControlsRow);

        ControlButtonPresenterSelector presenterSelector = new ControlButtonPresenterSelector();
        mPrimaryActionsAdapter = new ArrayObjectAdapter(presenterSelector);
        mSecondaryActionsAdapter = new ArrayObjectAdapter(presenterSelector);
        mPlaybackControlsRow.setPrimaryActionsAdapter(mPrimaryActionsAdapter);
        mPlaybackControlsRow.setSecondaryActionsAdapter(mSecondaryActionsAdapter);

        Activity activity = getActivity();
        mPlayPauseAction = new PlaybackControlsRow.PlayPauseAction(activity);
        mRepeatAction = new PlaybackControlsRow.RepeatAction(activity);
        mThumbsUpAction = new PlaybackControlsRow.ThumbsUpAction(activity);
        mThumbsDownAction = new PlaybackControlsRow.ThumbsDownAction(activity);
        mShuffleAction = new PlaybackControlsRow.ShuffleAction(activity);
        mSkipNextAction = new PlaybackControlsRow.SkipNextAction(activity);
        mSkipPreviousAction = new PlaybackControlsRow.SkipPreviousAction(activity);
        mFastForwardAction = new PlaybackControlsRow.FastForwardAction(activity);
        mRewindAction = new PlaybackControlsRow.RewindAction(activity);


        /* PrimaryAction setting */
        mPrimaryActionsAdapter.add(mSkipPreviousAction);
        mPrimaryActionsAdapter.add(mRewindAction);
        mPrimaryActionsAdapter.add(mPlayPauseAction);
        mPrimaryActionsAdapter.add(mFastForwardAction);
        mPrimaryActionsAdapter.add(mSkipNextAction);
    }

Я установил текущее время, а также попытался установить общее время следующим образом:

int currentTime = mPlaybackController.getCurrentPosition();
int totalTime = mPlaybackControlsRow.getTotalTime();
mPlaybackControlsRow.setCurrentTime(currentTime);
mPlaybackControlsRow.setTotalTime(totalTime);

И видео плеер выглядит так: Текущий видео плеер

Как видите, я не могу получить общее время на правой стороне PlaybackControlsRow. Как я могу это исправить?

2 ответа

Пытаться getDuration() а также setDuration(long) поскольку getTotalTime() а также setTotalTime() устарели на уровне API 26.0.0.

Ссылка: PlaybackControlsRow

Как прокомментировал пользователь @Ewald, я забыл уведомить mRowsAdapter объект. Если вы используете API уровня 25 и ниже, когда вы звоните setTotalTime(totalTime) на PlaybackControlsRow объект, вы должны уведомить адаптер, чтобы увидеть изменения. Вот документация на setTotalTime метод

Устанавливает общее время в миллисекундах для строки элементов управления воспроизведением.

Если установлено после того, как строка была привязана к представлению, адаптер должен быть уведомлен об изменении этой строки.

Следовательно, я уведомил адаптер, как это

mRowsAdapter.notifyArrayItemRangeChanged(0, mRowsAdapter.size());

И теперь я получаю общее время. Надеюсь, это кому-нибудь поможет.

Другие вопросы по тегам