Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mediacontroller does not work on nexus 7 tab

I have an android code for playing a video using videoview and control buttons such as pause,rewind and forward using mediacontroller. It works on nexus S as well as many samsung phones, but the mediacontroller buttons dont seem to work on nexus 7! I need it to work on all devices. Is there something extra that i need to do?

MediaController mediacontroller = new MediaController(Activity.this);
mediacontroller.setAnchorView(videoview);
Uri video = Uri.parse("path/to/video");
videoview.setMediaController(mediacontroller);
videoview.setVideoURI(video);
videoview.start();
like image 918
kriswiz Avatar asked Oct 22 '22 02:10

kriswiz


1 Answers

Just stumbled upon this answer in Unable to pause/forward/backward video using mediacontroller in android. Some LG devices seem to have this issue as well.

As mentioned by @Vineela Yarlagadda, you need to override the VideoView methods below

@Override
public boolean canSeekForward() {
    return true;
}

@Override
public boolean canSeekBackward() {
    return true;
}

@Override
public boolean canPause() {
    return true;
}

Tested & works on Nexus 7.


Alternate solution: Use a SurfaceView instead of a VideoView as suggested in the sample code in ApiDemos.

 setContentView(R.layout.media_player2);
 mSurface = (SurfaceView) findViewById(R.id.surface);
 holder = mSurface.getHolder();
 holder.addCallback(this);

 mMediaPlayer = new MediaPlayer();
 mMediaPlayer.setDataSource(stream);
 mMediaPlayer.setDisplay(holder);
 mMediaPlayer.prepareAsync();
 mController = new MediaController(this);
 mMediaPlayer.setOnBufferingUpdateListener(this);
 mMediaPlayer.setOnCompletionListener(this);
 mMediaPlayer.setOnPreparedListener(this);
 mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
 mController.setMediaPlayer(this);
 mController.setAnchorView(mSurface);

I opened the bug code.google.com/p/android/issues/detail?id=59776 after encountering the same issue as @kriswiz when I used VideoView and Player. The video will play on a Nexus 7 and on Samsung Nexus now.

like image 86
yprabhu Avatar answered Nov 02 '22 11:11

yprabhu