blob: 2ff11329dd54aef5fdeb431a95deecb7170deb48 [file] [log] [blame]
package com.xtremelabs.robolectric.shadows;
import static org.junit.Assert.assertThat;
import android.media.MediaPlayer;
import android.net.Uri;
import android.widget.VideoView;
import com.xtremelabs.robolectric.internal.Implementation;
import com.xtremelabs.robolectric.internal.Implements;
@Implements(VideoView.class)
@SuppressWarnings({"UnusedDeclaration"})
public class ShadowVideoView extends ShadowSurfaceView {
private MediaPlayer.OnCompletionListener completionListner;
private MediaPlayer.OnErrorListener errorListener;
private MediaPlayer.OnPreparedListener preparedListener;
private Uri uri;
private String path;
public static final int STOP = 0;
public static final int START = 1;
public static final int SUSPEND = 2;
public static final int PAUSE = 3;
public static final int RESUME = 4;
private int currentState = -1;
private int prevState;
@Implementation
public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) {
preparedListener = l;
}
@Implementation
public void setOnErrorListener(MediaPlayer.OnErrorListener l) {
errorListener = l;
}
@Implementation
public void setOnCompletionListener(MediaPlayer.OnCompletionListener l) {
completionListner = l;
}
@Implementation
public void setVideoPath(String path) {
this.path = path;
}
@Implementation
public void setVideoURI(Uri uri) {
this.uri = uri;
}
@Implementation
public void start() {
savePrevState();
currentState = ShadowVideoView.START;
}
@Implementation
public void stopPlayback() {
savePrevState();
currentState = ShadowVideoView.STOP;
}
@Implementation
public void suspend() {
savePrevState();
currentState = ShadowVideoView.SUSPEND;
}
@Implementation
public void pause() {
savePrevState();
currentState = ShadowVideoView.PAUSE;
}
@Implementation
public void resume() {
savePrevState();
currentState = ShadowVideoView.RESUME;
}
@Implementation
public boolean isPlaying() {
return (currentState == ShadowVideoView.START);
}
@Implementation
public boolean canPause() {
return (currentState != ShadowVideoView.PAUSE &&
currentState != ShadowVideoView.STOP &&
currentState != ShadowVideoView.SUSPEND);
}
/**
* Non-Android accessor.
*/
public MediaPlayer.OnPreparedListener getOnPreparedListener() {
return preparedListener;
}
/**
* Non-Android accessor.
* @return
*/
public MediaPlayer.OnErrorListener getOnErrorListener() {
return errorListener;
}
/**
* Non-Android accessor.
* @return
*/
public MediaPlayer.OnCompletionListener getOnCompletionListener() {
return completionListner;
}
/**
* Non-Android accessor.
* @return
*/
public String getVideoPath() {
return path;
}
/**
* Non-Android accessor.
* @return
*/
public String getVideoURIString() {
return uri == null ? null : uri.toString();
}
/**
* Non-Android accessor.
* @return
*/
public int getCurrentVideoState() {
return currentState;
}
/**
* Non-Android accessor.
* @return
*/
public int getPrevVideoState() {
return prevState;
}
/**
* Non-Android accessor.
*/
private void savePrevState() {
prevState = currentState;
}
}