Я хочу внедрить всплывающую кнопку с множественным выбором в экзо-плеере android ТВ для многоканального или многоязычного аудио, как показано на изображении ниже
![enter image description here](https://i.stack.imgur.com/I6bAd.png)
, но кнопка по умолчанию android у телевизора, кажется, нет этой опции, которую они видят, как показано ниже: изображение ![enter image description here](https://i.stack.imgur.com/6goQb.png)
и код ниже определяют, как они отображаются в плеере
public class VideoPlayerGlue extends PlaybackTransportControlGlue<LeanbackPlayerAdapter> {
private static final long TEN_SECONDS = TimeUnit.SECONDS.toMillis(10);
/** Listens for when skip to next and previous actions have been dispatched. */
public interface OnActionClickedListener {
/** Skip to the previous item in the queue. */
void onPrevious();
/** Skip to the next item in the queue. */
void onNext();
void onCaption();
}
private OnActionClickedListener mActionListener;
private PlaybackControlsRow.RepeatAction mRepeatAction;
private PlaybackControlsRow.ThumbsUpAction mThumbsUpAction;
private PlaybackControlsRow.ThumbsDownAction mThumbsDownAction;
private PlaybackControlsRow.SkipPreviousAction mSkipPreviousAction;
private PlaybackControlsRow.SkipNextAction mSkipNextAction;
private PlaybackControlsRow.FastForwardAction mFastForwardAction;
private PlaybackControlsRow.RewindAction mRewindAction;
private PlaybackControlsRow.ClosedCaptioningAction subTitle;
private PlaybackControlsRow.MoreActions moreActions;
private PlaybackControlsRow.MultiAction multiAction;
public VideoPlayerGlue(
Context context,
LeanbackPlayerAdapter playerAdapter,
OnActionClickedListener actionListener) {
super(context, playerAdapter);
mActionListener = actionListener;
mSkipPreviousAction = new PlaybackControlsRow.SkipPreviousAction(context);
mSkipNextAction = new PlaybackControlsRow.SkipNextAction(context);
mFastForwardAction = new PlaybackControlsRow.FastForwardAction(context);
mRewindAction = new PlaybackControlsRow.RewindAction(context);
mThumbsUpAction = new PlaybackControlsRow.ThumbsUpAction(context);
mThumbsUpAction.setIndex(PlaybackControlsRow.ThumbsUpAction.INDEX_OUTLINE);
mThumbsDownAction = new PlaybackControlsRow.ThumbsDownAction(context);
mThumbsDownAction.setIndex(PlaybackControlsRow.ThumbsDownAction.INDEX_OUTLINE);
mRepeatAction = new PlaybackControlsRow.RepeatAction(context);
subTitle = new PlaybackControlsRow.ClosedCaptioningAction(context);
moreActions = new PlaybackControlsRow.MoreActions(context);
moreActions.setIcon(ContextCompat.getDrawable(context,R.drawable.ic_guidedstep_option_c));
}
@Override
protected void onCreatePrimaryActions(ArrayObjectAdapter adapter) {
// Order matters, super.onCreatePrimaryActions() will create the play / pause action.
// Will display as follows:
// play/pause, previous, rewind, fast forward, next
// > /|| |< << >> >|
super.onCreatePrimaryActions(adapter);
adapter.add(mSkipPreviousAction);
adapter.add(mRewindAction);
adapter.add(mFastForwardAction);
adapter.add(mSkipNextAction);
}
@Override
protected void onCreateSecondaryActions(ArrayObjectAdapter adapter) {
super.onCreateSecondaryActions(adapter);
adapter.add(mThumbsDownAction);
adapter.add(mThumbsUpAction);
adapter.add(mRepeatAction);
adapter.add(subTitle);
adapter.add(moreActions);
adapter.add(multiAction);
}
@Override
public void onActionClicked(Action action) {
// if (shouldDispatchAction(action)) {
dispatchAction(action);
// return;
// }
// Super class handles play/pause and delegates to abstract methods next()/previous().
super.onActionClicked(action);
}
// Should dispatch actions that the super class does not supply callbacks for.
private boolean shouldDispatchAction(Action action) {
return action == mRewindAction
|| action == mFastForwardAction
|| action == mThumbsDownAction
|| action == mThumbsUpAction
|| action == mRepeatAction
|| action == subTitle;
}
private void dispatchAction(Action action) {
// Primary actions are handled manually.
if (action == mRewindAction) {
rewind();
} else if (action == mFastForwardAction) {
fastForward();
}
// else if (action instanceof PlaybackControlsRow.MultiAction) {
// PlaybackControlsRow.MultiAction multiAction = (PlaybackControlsRow.MultiAction) action;
// multiAction.nextIndex();
// // Notify adapter of action changes to handle secondary actions, such as, thumbs up/down
// // and repeat.
// notifyActionChanged(
// multiAction,
// (ArrayObjectAdapter) getControlsRow().getSecondaryActionsAdapter());
// }
else if (action == subTitle) {
// fastForward();
// subTitle.get(3);
mActionListener.onCaption();
}
else if (action == moreActions) {
// fastForward();
// subTitle.get(3);
}
}
Я исследовал android телевизионные ссылки и ссылки на exoplayer и следил за многими внутренними классами или учебными страницами в inte rnet, но не могу понять, как это реализовать