アプリで MediaController を使用しています。残念ながら、MediaController は 3 秒後に消えてしまいます。しかし、ビデオが完全に再生されるまで、MediaController を表示したいと考えています。
これを達成する方法。
アプリで MediaController を使用しています。残念ながら、MediaController は 3 秒後に消えてしまいます。しかし、ビデオが完全に再生されるまで、MediaController を表示したいと考えています。
これを達成する方法。
デフォルトでは、MediaController は 3 秒後に非表示になります。動画の再生中に表示されるようにするには、MediaController の hide() をオーバーライドする必要があります。以下にコードスニペットを示します。
final MediaController mc = new MediaController(this);
video.setMediaController(new MediaController(this) {
@Override
public void hide()
{
mc.show();
}
});
video.setMediaController(mc);
MediaController の非表示を停止するには、基本クラスを拡張して新しい MediaController を作成します。次に、hide メソッドをオーバーライドするだけで無効にできます。実際の非表示機能を取得するために、基本クラスで hide() メソッドを取得できます。それを使用して、再生が完了した後に Mediacontroller を非表示にすることができます。MediaController のコードは次のとおりです。
public class MediaController_2 extends MediaController{
public MediaController_2(Context context) {
super(context);
}
public void hide() {
}
public void hidecontroller() {
super.hide();
}
}
これで、再生が完了した後でも mediacontroller が非表示になりません。再生が完了した後にコントローラーを非表示にするには、OnCompletionListener を使用できます。
MediaController_2 mediaController = new MediaController_2(getActivity());
mediaPlayer.prepare();
mediaPlayer.start();
mediaController.show(0);
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mediaController.hidecontroller();
}
});
まずint timeout
、メソッドのパラメーターとしてan を使用すると、show()
何もしませんでした。
次に、この簡潔なコードにより、最初のタッチ後にコントロールが画面に表示されたままになります。
// Assumes you have a VideoView in your layout called 'video_preview'.
VideoView videoPreview = (VideoView) findViewById(R.id.video_preview);
MediaController mediaController = new MediaController(this) {
@Override
public void hide() {} // Prevent hiding of controls.
};
videoPreview.setMediaController(mediaController);
VideoView videoPlayer;
MediaController mediaController;
videoPlayer = view.findViewById(R.id.videoPlayer);
Uri uri = Uri.parse(URL);
videoPlayer.setVideoURI(uri);
mediaController = new MediaController(getContext()) {
@Override
public void hide() {} // on hide do nothing
};
videoPlayer.setMediaController(mediaController);
videoPlayer.requestFocus();
videoPlayer.start();