Unfortunately, this is hardcoded behavior in VideoView
:
...
if (mTargetState == STATE_PLAYING) {
start();
if (mMediaController != null) {
mMediaController.show();
}
...
As a workaround, wrap the MediaController
in your own class and suppress the initial show()
call, like this:
package pkg.your;
import android.content.Context;
import android.widget.MediaController;
public class MyMediaController extends MediaController {
private boolean suppressed = true;
public MyMediaController(Context context) {
super(context);
}
@Override
public void show(int timeout) {
if (! suppressed) {
super.show(timeout);
}
suppressed = false;
}
}
Then, simply hookup the MyMediaController
above as usual, e.g.:
MyMediaController mc = mediaController = new MyMediaController(this);
mc.setAnchorView(videoView);
mc.setMediaPlayer(videoView);
videoView.setMediaController(mc);
....
Now, the controls are initially hidden, and they show up as expected when the user taps the screen.