I have written these lines of code:
mVideoView = (VideoView) findViewById(R.id.video_view);
mVideoView.setOnClickListener(new OnClickListener() {
@O
I know this is and old question, but here is what I did:
Since setOnClickListener is not been triggered, I created my own class which extends VideoView
public class VideoViewCustom extends VideoView{
and Overrided the onTouchEvent
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
Log.d(TAG, "ACTION_DOWN");
}
return super.onTouchEvent(ev);
}
and now I can get the onClick event with the MotionEvent.
Hope this helps someone!
You can well use a button which is transparent on the video view if you want a specific part of the video on touch to do something.
It is possible I have did this with onSetClickListener. And Here's a code for your help:
mVideoView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Here you put a condition for playing a video when you click on your video view.//
if(my_video.isPressed())
{
my_video.start();
} else {
Toast.makeText(getApplicationContext(),
"Not able to run This Video!",
Toast.LENGTH_LONG).show();
}
}
});
I know this is old but I used this:
mVideoView.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i(TAG, "Video 1 clicked, starting playback");
return false;
}
});
I realize this is an old question but thought I'd chime in with an easy workaround. I can't answer why this doesn't work - seems like a big oversight in my opinion. But an easy workaround is to place your VideoView as the sole View inside a FrameLayout, and set an OnClickListener on the layout. Not ideal, but it works.
The VideoView is a wrapper containing mdeiaplayer and surfaceView. You can interact with through MediaController or writing your own SurfaceView and implement onClick events.