32

再生状態をリッスンするイベントが見つからないようです。私は主にplay/pause州に興味があります。ボタンのあるものを使用MediaControllerしていPlay/Pauseますが、を制御するセカンダリボタンがありますPlay/Pause。カスタムボタンを使用することはできますが、ボタンを使用するplay/pause場合、現在、カスタムボタンの画像を再生または一時停止に変更する方法がありません。play/pauseMediaController play/pauseplay/pause

プレイ/一時停止中に仕事ができるように、知らないイベントはありますか?

これは非常によく似た質問です:MediaControllerの一時停止/再生ボタンをクリックしたときにイベントをキャッチする方法

4

2 に答える 2

96

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" />
于 2011-11-08T05:55:31.810 に答える
2

独自のMediaController.MediaPlayerControlを設定し、一時停止と開始をオーバーライドできる必要があります

于 2011-11-04T16:39:42.793 に答える