PlaybackControlsRow
を使用して早送り巻き戻しアクションを実装しようとしていますが、Leanback library
をAndroid TV
に使用していますが、これらのボタンで長押しを検出する方法が見つかりません。 PlaybackActivity
でAndroid TV:PlaybackControlsRowアクション長押し
private void setupRows() {
final ClassPresenterSelector ps = new ClassPresenterSelector();
final PlaybackControlsRowPresenter playbackControlsRowPresenter =
new PlaybackControlsRowPresenter(new DescriptionPresenter());
playbackControlsRowPresenter.setOnActionClickedListener(action -> {
if (action.getId() == playPauseAction.getId()) {
togglePlayback(playPauseAction.getIndex() == PlayPauseAction.PLAY);
} else if (action.getId() == fastForwardAction.getId()) {
fastForward();
return;
} else if (action.getId() == rewindAction.getId()) {
rewind();
return;
}
if (action instanceof PlaybackControlsRow.MultiAction) {
((PlaybackControlsRow.MultiAction) action).nextIndex();
notifyChanged(action);
}
});
ps.addClassPresenter(PlaybackControlsRow.class, playbackControlsRowPresenter);
ps.addClassPresenter(ListRow.class, new ListRowPresenter());
rowsAdapter = new ArrayObjectAdapter(ps);
updatePlaybackControlsRow();
setAdapter(rowsAdapter);
}
private void fastForward() {
((PlaybackActivity) getActivity()).onFragmentFastForward();
final int currentTime = ((PlaybackActivity) getActivity()).getPosition();
playbackControlsRow.setCurrentTime(currentTime);
}
private void rewind() {
((PlaybackActivity) getActivity()).onFragmentRewind();
final int currentTime = ((PlaybackActivity) getActivity()).getPosition();
playbackControlsRow.setCurrentTime(currentTime);
}
:私の現在の実装では、クリックするだけで10秒を求めない、シンプルで
public void onFragmentFastForward() {
// Fast forward 10 seconds.
videoView.seekTo(videoView.getCurrentPosition() + (10 * 1000));
}
public void onFragmentRewind() {
videoView.seekTo(videoView.getCurrentPosition() - (10 * 1000));
}
それは早送りを実装し、アクションの長押しで巻き戻し、のようにすることは可能ですアクションボタンのキーアップ/キーダウンイベント?
[GestureDetector](https://developer.android.com/reference/android/view/GestureDetector.html)を試してみてください。これは基本的に、個々のタッチイベントを処理せずに共通のジェスチャーを検出することを容易にしますあなた自身。これは 'onLongPress()'をサポートしています。 詳細とサンプルスニペットについては、[ジェスチャーの検出](https://developer.android.com/training/gestures/detector.html#detect)をご覧ください。 – Teyam
@Teyamはい、ありがとう。それが可能な解決策かもしれない。しかし、私は 'PlaybackControlsRow'の' Leanback library'の中にある程度のサポートがあると思っていましたが、それはそうではありません。 –