Android TV - библиотека обратной связи, как добавить дополнительную кнопку в VideoSupportFragmentGlueHost - PullRequest
0 голосов
/ 05 декабря 2018

Я использую библиотеку leanback-v17: 27.1.0, и я пытаюсь настроить VideoSupportFragmentGlueHost. Я хочу добавить сюда еще одну кнопку, например кнопку повтора или следующую кнопку введите описание изображения здесь Я попытался использовать функцию обратной связи.app.PlaybackOverlayFragment, но в leanback-v17: 27 нет такого класса PlaybackOverlayFragment, как этот урок http://corochann.com/android-tv-application-hands-on-tutorial-7-159.html#PlaybackOverlayFragment кто-то может помочь мне добавить дополнительную кнопку к этому VideoSupportFragmentGlueHost

 public void initData(MovieSampleResult mObject)
{
    try {
        VideoSupportFragmentGlueHost glueHost =
                new VideoSupportFragmentGlueHost(PlayFullScreenVideoFragment.this);
        MediaPlayerAdapter playerAdapter = new MediaPlayerAdapter(getContext());
        playerAdapter.setRepeatAction(PlaybackControlsRow.RepeatAction.INDEX_NONE);
        mTransportControlGlue = new PlaybackTransportControlGlue<>(getContext(), playerAdapter);
        mTransportControlGlue.setHost(glueHost);
        mTransportControlGlue.setTitle(mObject.getName());
        //mTransportControlGlue.setSubtitle(mObject.getDescription());
        playerAdapter.setDataSource(Uri.parse(mObject.getVideo()));
        Log.e("TAG PLAY FULL",mObject.getVideo());
        MyTrackApplication myTrackApplication = MyTrackApplication.getInstance();
        myTrackApplication.trackScreenView(TAGSCREEN,
                mObject.getName(),
                "Watch Video on FullScreen Mode",0);
    } catch (Exception e) {
        e.printStackTrace();
        Log.e(TAG,e.getMessage());
    }
}

1 Ответ

0 голосов
/ 21 февраля 2019

Если вы хотите добавить дополнительные действия в макет элементов управления транспортом по умолчанию, вам нужно расширить класс PlaybackTransportControlGlue и переопределить методы, добавляющие действия.

Ниже приведен пример, показывающий, как добавить дополнительное первичное действие (верхняя строка над строкой поиска) для перехода к следующему фрагменту контента и вторичное действие (под строкой поиска) для включения скрытых субтитров.,В этом примере используется класс MediaPlayerAdapter, который вы используете в своем вопросе, но это может работать с любой реализацией PlayerAdapter.

public class VideoPlayerGlue extends PlaybackTransportControlGlue<MediaPlayerAdapter> {

    private PlaybackControlsRow.SkipNextAction skipNextAction;
    private PlaybackControlsRow.ClosedCaptioningAction closedCaptioningAction;

    public VideoPlayerGlue(Context context, MediaPlayerAdapter impl) {
        super(context, impl);

        closedCaptioningAction = new PlaybackControlsRow.ClosedCaptioningAction(context);
        skipNextAction = new PlaybackControlsRow.SkipNextAction(context);
    }

    @Override
    protected void onCreatePrimaryActions(ArrayObjectAdapter primaryActionsAdapter) {
        super.onCreatePrimaryActions(primaryActionsAdapter); // Adds play/pause first.
        primaryActionsAdapter.add(skipNextAction); // Adds skip next second. Order matters.
    }

    @Override
    protected void onCreateSecondaryActions(ArrayObjectAdapter secondaryActionsAdapter) {
        secondaryActionsAdapter.add(closedCaptioningAction); // Adds CC to row below seek bar.
    }

    @Override
    public void onActionClicked(Action action) {
        // Handle your action clicks here to allow them to interface with
        // the player and/or the PlayerAdapter.

        super.onActionClicked(action); // Allows for built-in play/pause and seek bar clicks.
    }
}
...