Отображение общего времени ожидания 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());
И теперь я получаю общее время. Надеюсь, это кому-нибудь поможет.