Событие для состояния воспроизведения VideoView или воспроизведения / паузы MediaController - PullRequest
29 голосов
/ 29 октября 2011

Не могу найти событие, которое прослушивает состояние воспроизведения.В основном меня интересует состояние play/pause.Я использую MediaController, у которого есть кнопка Play/Pause, но у меня есть дополнительная кнопка, которая также управляет Play/Pause.Используя свою пользовательскую кнопку, я могу play/pause, но если я play/pause использую кнопку MediaController play/pause, в настоящее время у меня нет возможности изменить изображение на моей пользовательской кнопке play/pause для воспроизведения или паузы.

Есть ли событие, о котором я не знаю, чтобы я мог выполнять какую-то работу во время воспроизведения / паузы?

Это очень похожий вопрос: Как перехватить событие при нажатии на паузу /кнопка воспроизведения на MediaController

Ответы [ 2 ]

92 голосов
/ 08 ноября 2011

Если вы используете MediaController в сочетании с VideoView, его будет относительно легко расширить и добавить к нему собственного слушателя.

Пользовательский VideoView будет выглядеть примерно так в его самой простой форме:

public class CustomVideoView extends VideoView {

    private PlayPauseListener mListener;

    public CustomVideoView(Context context) {
        super(context);
    }

    public CustomVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void setPlayPauseListener(PlayPauseListener listener) {
        mListener = listener;
    }

    @Override
    public void pause() {
        super.pause();
        if (mListener != null) {
            mListener.onPause();
        }
    }

    @Override
    public void start() {
        super.start();
        if (mListener != null) {
            mListener.onPlay();
        }
    }

    public static interface PlayPauseListener {
        void onPlay();
        void onPause();
    }

}

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

// Some other code above...
CustomVideoView cVideoView = (CustomVideoView) findViewById(R.id.custom_videoview);
cVideoView.setPlayPauseListener(new CustomVideoView.PlayPauseListener() {

    @Override
    public void onPlay() {
        System.out.println("Play!");
    }

    @Override
    public void onPause() {
        System.out.println("Pause!");
    }
});

cVideoView.setMediaController(new MediaController(this));
cVideoView.setVideoURI(...);
// or
cVideoView.setVideoPath(...);
// Some other code below...

Наконец, вы также можете объявить это в своем xml-макете и надуть его (как показано выше) - просто убедитесь, что вы используете <package_name>.CustomVideoView. Пример:

<mh.so.CustomVideoView android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/custom_videoview" />
2 голосов
/ 04 ноября 2011

Вы должны иметь возможность установить свой собственный MediaController.MediaPlayerControl и отменить паузу и запустить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...