再生状態をリッスンするイベントが見つからないようです。私は主に_play/pause
_状態に興味があります。 _Play/Pause
_ボタンのあるMediaController
を使用していますが、_Play/Pause
_も制御するセカンダリボタンがあります。カスタムボタンを使用して_play/pause
_を実行できますが、MediaController
_play/pause
_ボタンを使用して_play/pause
_を実行すると、現在、カスタム_play/pause
_ボタンで再生または一時停止します。
私が知らないイベントがあるので、再生/一時停止中に作業をすることができますか?
これは非常によく似た質問です: MediaControllerの一時停止/再生ボタンをクリックしたときにイベントをキャッチする方法
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" />
独自の MediaController.MediaPlayerControl を設定し、一時停止と開始をオーバーライドできるはずです