Most visited

Recently visited

Added in API level 1

VideoView

public class VideoView
extends SurfaceView implements MediaController.MediaPlayerControl

java.lang.Object
   ↳ android.view.View
     ↳ android.view.SurfaceView
       ↳ android.widget.VideoView


Displays a video file. The VideoView class can load images from various sources (such as resources or content providers), takes care of computing its measurement from the video so that it can be used in any layout manager, and provides various display options such as scaling and tinting.

Note: VideoView does not retain its full state when going into the background. In particular, it does not restore the current play state, play position, selected tracks, or any subtitle tracks added via addSubtitleSource(). Applications should save and restore these on their own in onSaveInstanceState(Bundle) and onRestoreInstanceState(Bundle).

Also note that the audio session id (from getAudioSessionId()) may change from its previously returned value when the VideoView is restored.

Summary

Inherited XML attributes

From class android.view.View

Inherited constants

From class android.view.View

Inherited fields

From class android.view.View

Public constructors

VideoView(Context context)
VideoView(Context context, AttributeSet attrs)
VideoView(Context context, AttributeSet attrs, int defStyleAttr)
VideoView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Public methods

void addSubtitleSource(InputStream is, MediaFormat format)

Adds an external subtitle source file (from the provided input stream.) Note that a single external subtitle source may contain multiple or no supported tracks in it.

boolean canPause()
boolean canSeekBackward()
boolean canSeekForward()
void draw(Canvas canvas)

Manually render this view (and all of its children) to the given Canvas.

CharSequence getAccessibilityClassName()

Return the class name of this object to be used for accessibility purposes.

int getAudioSessionId()

Get the audio session id for the player used by this VideoView.

int getBufferPercentage()
int getCurrentPosition()
int getDuration()
boolean isPlaying()
boolean onKeyDown(int keyCode, KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyDown(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.

boolean onTouchEvent(MotionEvent ev)

Implement this method to handle touch screen motion events.

boolean onTrackballEvent(MotionEvent ev)

Implement this method to handle trackball motion events.

void pause()
int resolveAdjustedSize(int desiredSize, int measureSpec)
void resume()
void seekTo(int msec)
void setMediaController(MediaController controller)
void setOnCompletionListener(MediaPlayer.OnCompletionListener l)

Register a callback to be invoked when the end of a media file has been reached during playback.

void setOnErrorListener(MediaPlayer.OnErrorListener l)

Register a callback to be invoked when an error occurs during playback or setup.

void setOnInfoListener(MediaPlayer.OnInfoListener l)

Register a callback to be invoked when an informational event occurs during playback or setup.

void setOnPreparedListener(MediaPlayer.OnPreparedListener l)

Register a callback to be invoked when the media file is loaded and ready to go.

void setVideoPath(String path)

Sets video path.

void setVideoURI(Uri uri, Map<StringString> headers)

Sets video URI using specific headers.

void setVideoURI(Uri uri)

Sets video URI.

void start()
void stopPlayback()
void suspend()

Protected methods

void onAttachedToWindow()

This is called when the view is attached to a window.

void onDetachedFromWindow()

This is called when the view is detached from a window.

void onLayout(boolean changed, int left, int top, int right, int bottom)

Called from layout when this view should assign a size and position to each of its children.

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

Measure the view and its content to determine the measured width and the measured height.

Inherited methods

From class android.view.SurfaceView
From class android.view.View
From class java.lang.Object
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource
From interface android.widget.MediaController.MediaPlayerControl

Public constructors

VideoView

Added in API level 1
VideoView (Context context)

Parameters
context Context

VideoView

Added in API level 1
VideoView (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

VideoView

Added in API level 1
VideoView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context
attrs AttributeSet
defStyleAttr int

VideoView

Added in API level 21
VideoView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

Parameters
context Context
attrs AttributeSet
defStyleAttr int
defStyleRes int

Public methods

addSubtitleSource

Added in API level 19
void addSubtitleSource (InputStream is, 
                MediaFormat format)

Adds an external subtitle source file (from the provided input stream.) Note that a single external subtitle source may contain multiple or no supported tracks in it. If the source contained at least one track in it, one will receive an MEDIA_INFO_METADATA_UPDATE info message. Otherwise, if reading the source takes excessive time, one will receive a MEDIA_INFO_SUBTITLE_TIMED_OUT message. If the source contained no supported track (including an empty source file or null input stream), one will receive a MEDIA_INFO_UNSUPPORTED_SUBTITLE message. One can find the total number of available tracks using getTrackInfo() to see what additional tracks become available after this method call.

Parameters
is InputStream: input stream containing the subtitle data. It will be closed by the media framework.
format MediaFormat: the format of the subtitle track(s). Must contain at least the mime type (KEY_MIME) and the language (KEY_LANGUAGE) of the file. If the file itself contains the language information, specify "und" for the language.

canPause

Added in API level 5
boolean canPause ()

Returns
boolean

canSeekBackward

Added in API level 5
boolean canSeekBackward ()

Returns
boolean

canSeekForward

Added in API level 5
boolean canSeekForward ()

Returns
boolean

draw

Added in API level 1
void draw (Canvas canvas)

Manually render this view (and all of its children) to the given Canvas. The view must have already done a full layout before this function is called. When implementing a view, implement onDraw(android.graphics.Canvas) instead of overriding this method. If you do need to override this method, call the superclass version.

Parameters
canvas Canvas: The Canvas to which the View is rendered.

getAccessibilityClassName

Added in API level 23
CharSequence getAccessibilityClassName ()

Return the class name of this object to be used for accessibility purposes. Subclasses should only override this if they are implementing something that should be seen as a completely new class of view when used by accessibility, unrelated to the class it is deriving from. This is used to fill in AccessibilityNodeInfo.setClassName.

Returns
CharSequence

getAudioSessionId

Added in API level 18
int getAudioSessionId ()

Get the audio session id for the player used by this VideoView. This can be used to apply audio effects to the audio track of a video.

Returns
int The audio session, or 0 if there was an error.

getBufferPercentage

Added in API level 1
int getBufferPercentage ()

Returns
int

getCurrentPosition

Added in API level 1
int getCurrentPosition ()

Returns
int

getDuration

Added in API level 1
int getDuration ()

Returns
int

isPlaying

Added in API level 1
boolean isPlaying ()

Returns
boolean

onKeyDown

Added in API level 1
boolean onKeyDown (int keyCode, 
                KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyDown(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.

Key presses in software keyboards will generally NOT trigger this listener, although some may elect to do so in some situations. Do not rely on this to catch software key presses.

Parameters
keyCode int: a key code that represents the button pressed, from KeyEvent
event KeyEvent: the KeyEvent object that defines the button action
Returns
boolean If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

onTouchEvent

Added in API level 1
boolean onTouchEvent (MotionEvent ev)

Implement this method to handle touch screen motion events.

If this method is used to detect click actions, it is recommended that the actions be performed by implementing and calling performClick(). This will ensure consistent system behavior, including:

  • obeying click sound preferences
  • dispatching OnClickListener calls
  • handling ACTION_CLICK when accessibility features are enabled

Parameters
ev MotionEvent: The motion event.
Returns
boolean True if the event was handled, false otherwise.

onTrackballEvent

Added in API level 1
boolean onTrackballEvent (MotionEvent ev)

Implement this method to handle trackball motion events. The relative movement of the trackball since the last event can be retrieve with MotionEvent.getX() and MotionEvent.getY(). These are normalized so that a movement of 1 corresponds to the user pressing one DPAD key (so they will often be fractional values, representing the more fine-grained movement information available from a trackball).

Parameters
ev MotionEvent: The motion event.
Returns
boolean True if the event was handled, false otherwise.

pause

Added in API level 1
void pause ()

resolveAdjustedSize

Added in API level 1
int resolveAdjustedSize (int desiredSize, 
                int measureSpec)

Parameters
desiredSize int
measureSpec int
Returns
int

resume

Added in API level 8
void resume ()

seekTo

Added in API level 1
void seekTo (int msec)

Parameters
msec int

setMediaController

Added in API level 1
void setMediaController (MediaController controller)

Parameters
controller MediaController

setOnCompletionListener

Added in API level 1
void setOnCompletionListener (MediaPlayer.OnCompletionListener l)

Register a callback to be invoked when the end of a media file has been reached during playback.

Parameters
l MediaPlayer.OnCompletionListener: The callback that will be run

setOnErrorListener

Added in API level 1
void setOnErrorListener (MediaPlayer.OnErrorListener l)

Register a callback to be invoked when an error occurs during playback or setup. If no listener is specified, or if the listener returned false, VideoView will inform the user of any errors.

Parameters
l MediaPlayer.OnErrorListener: The callback that will be run

setOnInfoListener

Added in API level 17
void setOnInfoListener (MediaPlayer.OnInfoListener l)

Register a callback to be invoked when an informational event occurs during playback or setup.

Parameters
l MediaPlayer.OnInfoListener: The callback that will be run

setOnPreparedListener

Added in API level 1
void setOnPreparedListener (MediaPlayer.OnPreparedListener l)

Register a callback to be invoked when the media file is loaded and ready to go.

Parameters
l MediaPlayer.OnPreparedListener: The callback that will be run

setVideoPath

Added in API level 1
void setVideoPath (String path)

Sets video path.

Parameters
path String: the path of the video.

setVideoURI

Added in API level 21
void setVideoURI (Uri uri, 
                Map<StringString> headers)

Sets video URI using specific headers.

Parameters
uri Uri: the URI of the video.
headers Map: the headers for the URI request. Note that the cross domain redirection is allowed by default, but that can be changed with key/value pairs through the headers parameter with "android-allow-cross-domain-redirect" as the key and "0" or "1" as the value to disallow or allow cross domain redirection.

setVideoURI

Added in API level 1
void setVideoURI (Uri uri)

Sets video URI.

Parameters
uri Uri: the URI of the video.

start

Added in API level 1
void start ()

stopPlayback

Added in API level 1
void stopPlayback ()

suspend

Added in API level 8
void suspend ()

Protected methods

onAttachedToWindow

Added in API level 1
void onAttachedToWindow ()

This is called when the view is attached to a window. At this point it has a Surface and will start drawing. Note that this function is guaranteed to be called before onDraw(android.graphics.Canvas), however it may be called any time before the first onDraw -- including before or after onMeasure(int, int).

onDetachedFromWindow

Added in API level 1
void onDetachedFromWindow ()

This is called when the view is detached from a window. At this point it no longer has a surface for drawing.

onLayout

Added in API level 1
void onLayout (boolean changed, 
                int left, 
                int top, 
                int right, 
                int bottom)

Called from layout when this view should assign a size and position to each of its children. Derived classes with children should override this method and call layout on each of their children.

Parameters
changed boolean: This is a new size or position for this view
left int: Left position, relative to parent
top int: Top position, relative to parent
right int: Right position, relative to parent
bottom int: Bottom position, relative to parent

onMeasure

Added in API level 1
void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

Measure the view and its content to determine the measured width and the measured height. This method is invoked by measure(int, int) and should be overridden by subclasses to provide accurate and efficient measurement of their contents.

CONTRACT: When overriding this method, you must call setMeasuredDimension(int, int) to store the measured width and height of this view. Failure to do so will trigger an IllegalStateException, thrown by measure(int, int). Calling the superclass' onMeasure(int, int) is a valid use.

The base class implementation of measure defaults to the background size, unless a larger size is allowed by the MeasureSpec. Subclasses should override onMeasure(int, int) to provide better measurements of their content.

If this method is overridden, it is the subclass's responsibility to make sure the measured height and width are at least the view's minimum height and width (getSuggestedMinimumHeight() and getSuggestedMinimumWidth()).

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

Hooray!