public class VideoView
extends android.widget.RelativeLayout
To an external user this view should have the same APIs used with the standard VideoView to help with quick implementations.
| Modifier and Type | Class and Description |
|---|---|
protected class |
VideoView.AttributeContainer
A simple class that will retrieve the attributes and provide a simplified
interaction than passing around the
AttributeSet |
protected class |
VideoView.AudioFocusHelper
A utility used to handle the audio focus for the
VideoView
when enabled. |
protected class |
VideoView.MuxNotifier |
protected class |
VideoView.TouchListener
Monitors the view click events to show and hide the video controls if they have been specified.
|
android.widget.RelativeLayout.LayoutParamsandroid.view.ViewGroup.MarginLayoutParams, android.view.ViewGroup.OnHierarchyChangeListenerandroid.view.View.AccessibilityDelegate, android.view.View.BaseSavedState, android.view.View.DragShadowBuilder, android.view.View.MeasureSpec, android.view.View.OnApplyWindowInsetsListener, android.view.View.OnAttachStateChangeListener, android.view.View.OnCapturedPointerListener, android.view.View.OnClickListener, android.view.View.OnContextClickListener, android.view.View.OnCreateContextMenuListener, android.view.View.OnDragListener, android.view.View.OnFocusChangeListener, android.view.View.OnGenericMotionListener, android.view.View.OnHoverListener, android.view.View.OnKeyListener, android.view.View.OnLayoutChangeListener, android.view.View.OnLongClickListener, android.view.View.OnScrollChangeListener, android.view.View.OnSystemUiVisibilityChangeListener, android.view.View.OnTouchListener, android.view.View.OnUnhandledKeyEventListener| Modifier and Type | Field and Description |
|---|---|
protected VideoView.AudioFocusHelper |
audioFocusHelper |
protected android.media.AudioManager |
audioManager |
protected DeviceUtil |
deviceUtil |
protected boolean |
handleAudioFocus |
protected ListenerMux |
listenerMux |
protected boolean |
matchOverridePositionSpeed |
protected VideoView.MuxNotifier |
muxNotifier |
protected long |
overriddenDuration |
protected StopWatch |
overriddenPositionStopWatch |
protected boolean |
overridePosition |
protected long |
positionOffset |
protected android.widget.ImageView |
previewImageView |
protected boolean |
releaseOnDetachFromWindow |
protected VideoControlsCore |
videoControls |
protected android.net.Uri |
videoUri |
protected VideoViewApi |
videoViewImpl |
ABOVE, ALIGN_BASELINE, ALIGN_BOTTOM, ALIGN_END, ALIGN_LEFT, ALIGN_PARENT_BOTTOM, ALIGN_PARENT_END, ALIGN_PARENT_LEFT, ALIGN_PARENT_RIGHT, ALIGN_PARENT_START, ALIGN_PARENT_TOP, ALIGN_RIGHT, ALIGN_START, ALIGN_TOP, BELOW, CENTER_HORIZONTAL, CENTER_IN_PARENT, CENTER_VERTICAL, END_OF, LEFT_OF, RIGHT_OF, START_OF, TRUECLIP_TO_PADDING_MASK, FOCUS_AFTER_DESCENDANTS, FOCUS_BEFORE_DESCENDANTS, FOCUS_BLOCK_DESCENDANTS, LAYOUT_MODE_CLIP_BOUNDS, LAYOUT_MODE_OPTICAL_BOUNDS, PERSISTENT_ALL_CACHES, PERSISTENT_ANIMATION_CACHE, PERSISTENT_NO_CACHE, PERSISTENT_SCROLLING_CACHEACCESSIBILITY_LIVE_REGION_ASSERTIVE, ACCESSIBILITY_LIVE_REGION_NONE, ACCESSIBILITY_LIVE_REGION_POLITE, ALPHA, AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR, AUTOFILL_HINT_CREDIT_CARD_NUMBER, AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE, AUTOFILL_HINT_EMAIL_ADDRESS, AUTOFILL_HINT_NAME, AUTOFILL_HINT_PASSWORD, AUTOFILL_HINT_PHONE, AUTOFILL_HINT_POSTAL_ADDRESS, AUTOFILL_HINT_POSTAL_CODE, AUTOFILL_HINT_USERNAME, AUTOFILL_TYPE_DATE, AUTOFILL_TYPE_LIST, AUTOFILL_TYPE_NONE, AUTOFILL_TYPE_TEXT, AUTOFILL_TYPE_TOGGLE, DRAG_FLAG_GLOBAL, DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION, DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION, DRAG_FLAG_GLOBAL_URI_READ, DRAG_FLAG_GLOBAL_URI_WRITE, DRAG_FLAG_OPAQUE, DRAWING_CACHE_QUALITY_AUTO, DRAWING_CACHE_QUALITY_HIGH, DRAWING_CACHE_QUALITY_LOW, EMPTY_STATE_SET, ENABLED_FOCUSED_SELECTED_STATE_SET, ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_FOCUSED_STATE_SET, ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, ENABLED_SELECTED_STATE_SET, ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_STATE_SET, ENABLED_WINDOW_FOCUSED_STATE_SET, FIND_VIEWS_WITH_CONTENT_DESCRIPTION, FIND_VIEWS_WITH_TEXT, FOCUS_BACKWARD, FOCUS_DOWN, FOCUS_FORWARD, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_UP, FOCUSABLE, FOCUSABLE_AUTO, FOCUSABLES_ALL, FOCUSABLES_TOUCH_MODE, FOCUSED_SELECTED_STATE_SET, FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, FOCUSED_STATE_SET, FOCUSED_WINDOW_FOCUSED_STATE_SET, GONE, HAPTIC_FEEDBACK_ENABLED, IMPORTANT_FOR_ACCESSIBILITY_AUTO, IMPORTANT_FOR_ACCESSIBILITY_NO, IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, IMPORTANT_FOR_ACCESSIBILITY_YES, IMPORTANT_FOR_AUTOFILL_AUTO, IMPORTANT_FOR_AUTOFILL_NO, IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_AUTOFILL_YES, IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS, INVISIBLE, KEEP_SCREEN_ON, LAYER_TYPE_HARDWARE, LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE, LAYOUT_DIRECTION_INHERIT, LAYOUT_DIRECTION_LOCALE, LAYOUT_DIRECTION_LTR, LAYOUT_DIRECTION_RTL, MEASURED_HEIGHT_STATE_SHIFT, MEASURED_SIZE_MASK, MEASURED_STATE_MASK, MEASURED_STATE_TOO_SMALL, NO_ID, NOT_FOCUSABLE, OVER_SCROLL_ALWAYS, OVER_SCROLL_IF_CONTENT_SCROLLS, OVER_SCROLL_NEVER, PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET, PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_SELECTED_STATE_SET, PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_STATE_SET, PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_SELECTED_STATE_SET, PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_STATE_SET, PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_SELECTED_STATE_SET, PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_STATE_SET, PRESSED_WINDOW_FOCUSED_STATE_SET, ROTATION, ROTATION_X, ROTATION_Y, SCALE_X, SCALE_Y, SCREEN_STATE_OFF, SCREEN_STATE_ON, SCROLL_AXIS_HORIZONTAL, SCROLL_AXIS_NONE, SCROLL_AXIS_VERTICAL, SCROLL_INDICATOR_BOTTOM, SCROLL_INDICATOR_END, SCROLL_INDICATOR_LEFT, SCROLL_INDICATOR_RIGHT, SCROLL_INDICATOR_START, SCROLL_INDICATOR_TOP, SCROLLBAR_POSITION_DEFAULT, SCROLLBAR_POSITION_LEFT, SCROLLBAR_POSITION_RIGHT, SCROLLBARS_INSIDE_INSET, SCROLLBARS_INSIDE_OVERLAY, SCROLLBARS_OUTSIDE_INSET, SCROLLBARS_OUTSIDE_OVERLAY, SELECTED_STATE_SET, SELECTED_WINDOW_FOCUSED_STATE_SET, SOUND_EFFECTS_ENABLED, STATUS_BAR_HIDDEN, STATUS_BAR_VISIBLE, SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_IMMERSIVE, SYSTEM_UI_FLAG_IMMERSIVE_STICKY, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, SYSTEM_UI_FLAG_LAYOUT_STABLE, SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, SYSTEM_UI_FLAG_LOW_PROFILE, SYSTEM_UI_FLAG_VISIBLE, SYSTEM_UI_LAYOUT_FLAGS, TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_GRAVITY, TEXT_ALIGNMENT_INHERIT, TEXT_ALIGNMENT_TEXT_END, TEXT_ALIGNMENT_TEXT_START, TEXT_ALIGNMENT_VIEW_END, TEXT_ALIGNMENT_VIEW_START, TEXT_DIRECTION_ANY_RTL, TEXT_DIRECTION_FIRST_STRONG, TEXT_DIRECTION_FIRST_STRONG_LTR, TEXT_DIRECTION_FIRST_STRONG_RTL, TEXT_DIRECTION_INHERIT, TEXT_DIRECTION_LOCALE, TEXT_DIRECTION_LTR, TEXT_DIRECTION_RTL, TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z, VIEW_LOG_TAG, VISIBLE, WINDOW_FOCUSED_STATE_SET, X, Y, Z| Constructor and Description |
|---|
VideoView(android.content.Context context) |
VideoView(android.content.Context context,
android.util.AttributeSet attrs) |
VideoView(android.content.Context context,
android.util.AttributeSet attrs,
int defStyleAttr) |
VideoView(android.content.Context context,
android.util.AttributeSet attrs,
int defStyleAttr,
int defStyleRes) |
| Modifier and Type | Method and Description |
|---|---|
void |
clearSelectedTracks(ExoMedia.RendererType type)
Clear all selected tracks for the specified renderer.
|
java.util.Map<ExoMedia.RendererType,TrackGroupArray> |
getAvailableTracks()
Retrieves a list of available tracks to select from.
|
android.graphics.Bitmap |
getBitmap()
Returns a
Bitmap representation of the current contents of the
view. |
int |
getBufferPercentage()
Retrieves the current buffer percent of the video.
|
long |
getCurrentPosition()
Retrieves the current position of the audio playback.
|
long |
getDuration()
Retrieves the duration of the current audio item.
|
float |
getPlaybackSpeed()
Retrieves the current speed the media is playing at.
|
android.widget.ImageView |
getPreviewImageView()
Gets the preview ImageView for use with image loading libraries.
|
int |
getSelectedTrackIndex(ExoMedia.RendererType type,
int groupIndex) |
VideoControls |
getVideoControls()
Deprecated.
|
VideoControlsCore |
getVideoControlsCore() |
android.net.Uri |
getVideoUri()
Retrieves the current Video URI.
|
protected int |
getVideoViewApiImplementation(android.content.Context context,
VideoView.AttributeContainer attributeContainer)
Retrieves the layout resource to use for the backing video view implementation.
|
float |
getVolume()
Retrieves the current media volume
|
WindowInfo |
getWindowInfo()
Retrieves the information associated with the current
com.google.android.exoplayer2.Timeline.Window
used by the ExoPlayer backed implementation. |
protected void |
inflateVideoView(android.content.Context context,
VideoView.AttributeContainer attributeContainer)
Inflates the video view layout, replacing the
ViewStub with the
correct backing implementation. |
protected void |
initView(android.content.Context context,
VideoView.AttributeContainer attributeContainer)
Performs the initialization of the view including inflating the correct
backing layout, linking the implementation, and finding the necessary view
references.
|
boolean |
isPlaying()
Returns if a video is currently in playback
|
boolean |
isRendererEnabled(ExoMedia.RendererType type)
Return true if at least one renderer for the given type is enabled
|
protected void |
onDetachedFromWindow() |
protected void |
onPlaybackEnded()
Performs the functionality to stop the progress polling, and stop any other
procedures from running that we no longer need.
|
void |
overrideDuration(long duration)
Setting this will override the duration that the item may actually be.
|
void |
overridePosition(boolean override)
Sets if the position should be overridden, allowing the time to be restarted at will.
|
void |
pause()
If a video is currently in playback, it will be paused
|
void |
pause(boolean transientFocusLoss)
Pauses the current video in playback, only abandoning the audio focus if
transientFocusLoss is false. |
protected void |
postInit(VideoView.AttributeContainer attributeContainer)
Handles any setup that needs to be performed after
initView(Context, AttributeContainer)
is performed. |
void |
release()
Stops the playback and releases all resources attached to this
VideoView.
|
void |
reset()
Stops the current video playback and resets the listener states
so that we receive the callbacks for events like onPrepared
|
boolean |
restart()
If the video has completed playback, calling
restart will seek to the beginning of the video, and play it. |
void |
restartOverridePosition()
Restarts the audio position to the start if the position is being overridden (see
overridePosition(boolean)). |
void |
seekTo(long milliSeconds)
Moves the current video progress to the specified location.
|
void |
setAnalyticsListener(AnalyticsListener listener)
Sets the listener to inform of Analytics updates
|
void |
setCaptionListener(CaptionListener listener)
Sets the caption listener for this MediaPlayer
Only the exoplayer implementation supports captions.
|
void |
setControls(VideoControls controls)
Deprecated.
|
void |
setControls(VideoControlsCore controls) |
void |
setDrmCallback(MediaDrmCallback drmCallback)
Sets the
MediaDrmCallback to use when handling DRM for media. |
void |
setHandleAudioFocus(boolean handleAudioFocus)
Enables or Disables automatic handling of audio focus.
|
void |
setId3MetadataListener(MetadataListener listener)
Sets the listener to inform of ID3 metadata updates
|
void |
setMeasureBasedOnAspectRatioEnabled(boolean measureBasedOnAspectRatioEnabled)
Measures the underlying
VideoViewApi using the video's aspect ratio if true |
void |
setOnBufferUpdateListener(OnBufferUpdateListener listener)
Sets the listener to inform of VideoPlayer buffer update events
|
void |
setOnCompletionListener(OnCompletionListener listener)
Sets the listener to inform of VideoPlayer completion events
|
void |
setOnErrorListener(OnErrorListener listener)
Sets the listener to inform of playback errors
|
void |
setOnPreparedListener(OnPreparedListener listener)
Sets the listener to inform of VideoPlayer prepared events
|
void |
setOnSeekCompletionListener(OnSeekCompletionListener listener)
Sets the listener to inform of VideoPlayer seek completion events
|
void |
setOnTouchListener(android.view.View.OnTouchListener listener) |
void |
setOnVideoSizedChangedListener(OnVideoSizeChangedListener listener)
Sets the listener to inform of video size changes
|
void |
setOverridePositionMatchesPlaybackSpeed(boolean match)
If set the overridden position will use the same playback rate as the
media in playback.
|
boolean |
setPlaybackSpeed(float speed)
Sets the playback speed for this MediaPlayer.
|
void |
setPositionOffset(long offset)
Sets the amount of time to change the return value from
getCurrentPosition(). |
void |
setPreviewImage(android.graphics.Bitmap bitmap)
Sets an image that will be visible only when the video is loading.
|
void |
setPreviewImage(android.graphics.drawable.Drawable drawable)
Sets an image that will be visible only when the video is loading.
|
void |
setPreviewImage(int resourceId)
Sets an image that will be visible only when the video is loading.
|
void |
setPreviewImage(android.net.Uri uri)
Sets an image that will be visible only when the video is loading.
|
void |
setReleaseOnDetachFromWindow(boolean releaseOnDetach)
WARNING: Use of this method may cause memory leaks.
|
void |
setRendererEnabled(ExoMedia.RendererType type,
boolean enabled)
Enables or disables the track associated with the
type. |
void |
setRepeatMode(int repeatMode)
Sets the repeat mode for this MediaPlayer.
|
void |
setScaleType(ScaleType scaleType)
Sets how the video should be scaled in the view
|
void |
setTrack(ExoMedia.RendererType trackType,
int trackIndex)
Deprecated.
|
void |
setTrack(ExoMedia.RendererType trackType,
int groupIndex,
int trackIndex)
Changes to the track with
trackIndex for the specified
trackType |
protected void |
setup(android.content.Context context,
android.util.AttributeSet attrs)
Performs the functionality to setup the initial properties including
determining the backing implementation and reading xml attributes
|
void |
setVideoPath(java.lang.String path)
Sets the path to the video.
|
void |
setVideoRotation(int rotation)
Sets the rotation for the Video
|
void |
setVideoURI(android.net.Uri uri)
Sets the Uri location for the video to play
|
void |
setVideoURI(android.net.Uri uri,
MediaSource mediaSource)
Sets the Uri location for the video to play
|
boolean |
setVolume(float volume)
Sets the volume level for devices that support
the ExoPlayer (JellyBean or greater).
|
void |
showControls()
Requests the
VideoControls to become visible. |
void |
start()
Starts the playback for the video specified in
setVideoURI(android.net.Uri)
or setVideoPath(String). |
void |
stopPlayback()
If a video is currently in playback then the playback will be stopped
|
protected void |
stopPlayback(boolean clearSurface)
Stops the video currently in playback, making sure to only clear the surface
when requested.
|
void |
suspend()
If a video is currently in playback then the playback will be suspended
|
boolean |
trackSelectionAvailable()
Determines if the current video player implementation supports
track selection for audio or video tracks.
|
checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getBaseline, getGravity, onLayout, onMeasure, requestLayout, setGravity, setHorizontalGravity, setIgnoreGravity, setVerticalGravity, shouldDelayChildPressedStateaddChildrenForAccessibility, addFocusables, addKeyboardNavigationClusters, addStatesFromChildren, addTouchables, addView, addView, addView, addView, addView, addViewInLayout, addViewInLayout, attachLayoutAnimationParameters, attachViewToParent, bringChildToFront, canAnimate, childDrawableStateChanged, childHasTransientStateChanged, cleanupLayoutState, clearChildFocus, clearDisappearingChildren, clearFocus, debug, detachAllViewsFromParent, detachViewFromParent, detachViewFromParent, detachViewsFromParent, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchPointerCaptureChanged, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchThawSelfOnly, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchVisibilityChanged, dispatchWindowFocusChanged, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, drawableStateChanged, drawChild, endViewTransition, findFocus, findViewsWithText, focusableViewAvailable, focusSearch, gatherTransparentRegion, getChildAt, getChildCount, getChildDrawingOrder, getChildMeasureSpec, getChildStaticTransformation, getChildVisibleRect, getClipChildren, getClipToPadding, getDescendantFocusability, getFocusedChild, getLayoutAnimation, getLayoutAnimationListener, getLayoutMode, getLayoutTransition, getNestedScrollAxes, getOverlay, getPersistentDrawingCache, getTouchscreenBlocksFocus, hasFocus, hasTransientState, indexOfChild, invalidateChild, invalidateChildInParent, isAlwaysDrawnWithCacheEnabled, isAnimationCacheEnabled, isChildrenDrawingOrderEnabled, isChildrenDrawnWithCacheEnabled, isMotionEventSplittingEnabled, isTransitionGroup, jumpDrawablesToCurrentState, layout, measureChild, measureChildren, measureChildWithMargins, notifySubtreeAccessibilityStateChanged, offsetDescendantRectToMyCoords, offsetRectIntoDescendantCoords, onAttachedToWindow, onCreateDrawableState, onDescendantInvalidated, onInterceptHoverEvent, onInterceptTouchEvent, onNestedFling, onNestedPreFling, onNestedPrePerformAccessibilityAction, onNestedPreScroll, onNestedScroll, onNestedScrollAccepted, onRequestFocusInDescendants, onRequestSendAccessibilityEvent, onResolvePointerIcon, onStartNestedScroll, onStopNestedScroll, onViewAdded, onViewRemoved, recomputeViewAttributes, removeAllViews, removeAllViewsInLayout, removeDetachedView, removeView, removeViewAt, removeViewInLayout, removeViews, removeViewsInLayout, requestChildFocus, requestChildRectangleOnScreen, requestDisallowInterceptTouchEvent, requestFocus, requestSendAccessibilityEvent, requestTransparentRegion, restoreDefaultFocus, scheduleLayoutAnimation, setAddStatesFromChildren, setAlwaysDrawnWithCacheEnabled, setAnimationCacheEnabled, setChildrenDrawingCacheEnabled, setChildrenDrawingOrderEnabled, setChildrenDrawnWithCacheEnabled, setClipChildren, setClipToPadding, setDescendantFocusability, setLayoutAnimation, setLayoutAnimationListener, setLayoutMode, setLayoutTransition, setMotionEventSplittingEnabled, setOnHierarchyChangeListener, setPersistentDrawingCache, setStaticTransformationsEnabled, setTouchscreenBlocksFocus, setTransitionGroup, showContextMenuForChild, showContextMenuForChild, startActionModeForChild, startActionModeForChild, startLayoutAnimation, startViewTransition, updateViewLayoutaddExtraDataToAccessibilityNodeInfo, addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, animate, announceForAccessibility, autofill, autofill, awakenScrollBars, awakenScrollBars, awakenScrollBars, bringToFront, buildDrawingCache, buildDrawingCache, buildLayer, callOnClick, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, canScrollHorizontally, canScrollVertically, checkInputConnectionProxy, clearAnimation, combineMeasuredStates, computeHorizontalScrollExtent, computeHorizontalScrollOffset, computeHorizontalScrollRange, computeScroll, computeSystemWindowInsets, computeVerticalScrollExtent, computeVerticalScrollOffset, computeVerticalScrollRange, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchGenericMotionEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPopulateAccessibilityEvent, draw, drawableHotspotChanged, findViewById, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateViewId, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getApplicationWindowToken, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintList, getBackgroundTintMode, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentDescription, getContext, getContextMenuInfo, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getId, getImportantForAccessibility, getImportantForAutofill, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverScrollMode, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getResources, getRevealOnFocusHint, getRight, getRightFadingEdgeStrength, getRightPaddingOffset, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getStateListAnimator, getSuggestedMinimumHeight, getSuggestedMinimumWidth, getSystemUiVisibility, getTag, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarWidth, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasOverlappingRendering, hasPointerCapture, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityFocused, isAccessibilityHeading, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPivotSet, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, keyboardNavigationClusterSearch, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onApplyWindowInsets, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onConfigurationChanged, onCreateContextMenu, onCreateInputConnection, onDisplayHint, onDragEvent, onDraw, onDrawForeground, onDrawScrollBars, onFilterTouchEventForSecurity, onFinishInflate, onFinishTemporaryDetach, onFocusChanged, onGenericMotionEvent, onHoverChanged, onHoverEvent, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onOverScrolled, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideAutofillVirtualStructure, onProvideStructure, onProvideVirtualStructure, onRestoreInstanceState, onRtlPropertiesChanged, onSaveInstanceState, onScreenStateChanged, onScrollChanged, onSetAlpha, onSizeChanged, onStartTemporaryDetach, onTouchEvent, onTrackballEvent, onVisibilityAggregated, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, performClick, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, playSoundEffect, post, postDelayed, postInvalidate, postInvalidate, postInvalidateDelayed, postInvalidateDelayed, postInvalidateOnAnimation, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestPointerCapture, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreHierarchyState, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAlpha, setAnimation, setAutofillHints, setAutofillId, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForeground, setForegroundGravity, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextClusterForwardId, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnCapturedPointerListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSelected, setSoundEffectsEnabled, setStateListAnimator, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionName, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVisibility, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, unscheduleDrawable, unscheduleDrawable, updateDragShadow, verifyDrawable, willNotCacheDrawing, willNotDrawclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcanResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, keyboardNavigationClusterSearch, requestFitSystemWindowsprotected VideoControlsCore videoControls
protected android.widget.ImageView previewImageView
protected android.net.Uri videoUri
protected VideoViewApi videoViewImpl
protected DeviceUtil deviceUtil
protected android.media.AudioManager audioManager
protected VideoView.AudioFocusHelper audioFocusHelper
protected long positionOffset
protected long overriddenDuration
protected boolean overridePosition
protected boolean matchOverridePositionSpeed
protected StopWatch overriddenPositionStopWatch
protected VideoView.MuxNotifier muxNotifier
protected ListenerMux listenerMux
protected boolean releaseOnDetachFromWindow
protected boolean handleAudioFocus
public VideoView(android.content.Context context)
public VideoView(android.content.Context context,
android.util.AttributeSet attrs)
public VideoView(android.content.Context context,
android.util.AttributeSet attrs,
int defStyleAttr)
public VideoView(android.content.Context context,
android.util.AttributeSet attrs,
int defStyleAttr,
int defStyleRes)
protected void onDetachedFromWindow()
onDetachedFromWindow in class android.view.ViewGrouppublic void setOnTouchListener(android.view.View.OnTouchListener listener)
setOnTouchListener in class android.view.Viewpublic void setReleaseOnDetachFromWindow(boolean releaseOnDetach)
Enables or disables the automatic release when the VideoView is detached
from the window. Normally this is expected to release all resources used
by calling release(). If releaseOnDetach is disabled
then release() will need to be manually called.
releaseOnDetach - False to disable the automatic release in onDetachedFromWindow()public void release()
setReleaseOnDetachFromWindow(boolean) has been set.public void setPreviewImage(android.graphics.drawable.Drawable drawable)
drawable - The drawable to use for the preview imagepublic void setPreviewImage(int resourceId)
resourceId - The resourceId representing the preview imagepublic void setPreviewImage(android.graphics.Bitmap bitmap)
bitmap - The bitmap to use for the preview imagepublic void setPreviewImage(android.net.Uri uri)
uri - The Uri pointing to the preview imagepublic android.widget.ImageView getPreviewImageView()
@Deprecated public void setControls(VideoControls controls)
setControls(VideoControlsCore)public void setControls(VideoControlsCore controls)
public void showControls()
VideoControls to become visible. This should only be called after
setControls(VideoControls).@Deprecated public VideoControls getVideoControls()
getVideoControlsCore()setControls(VideoControls)
or through the XML attribute useDefaultControls this will return
nullpublic VideoControlsCore getVideoControlsCore()
public void setVideoURI(android.net.Uri uri)
uri - The video's Uripublic void setVideoURI(android.net.Uri uri,
MediaSource mediaSource)
uri - The video's UrimediaSource - MediaSource that should be usedpublic void setVideoPath(java.lang.String path)
path - The path to the videopublic android.net.Uri getVideoUri()
setVideoURI(android.net.Uri)
or setVideoPath(String) then null will be returned.public void setDrmCallback(MediaDrmCallback drmCallback)
MediaDrmCallback to use when handling DRM for media.
This should be called before specifying the videos uri or path
drmCallback - The callback to use when handling DRM mediapublic float getVolume()
public boolean setVolume(float volume)
volume - The volume range [0.0 - 1.0]public void setHandleAudioFocus(boolean handleAudioFocus)
handleAudioFocus - true to handle audio focuspublic void reset()
public void seekTo(long milliSeconds)
milliSeconds - The time to move the playback topublic boolean isPlaying()
public void start()
setVideoURI(android.net.Uri)
or setVideoPath(String). This should be called after the VideoView is correctly
prepared (see setOnPreparedListener(OnPreparedListener))public void pause()
public void pause(boolean transientFocusLoss)
transientFocusLoss is false. Calling pause() should
be used in most cases unless the audio focus is being handled manuallytransientFocusLoss - true if the pause is temporary and the audio focus should be retainedpublic void stopPlayback()
public boolean restart()
restart will seek to the beginning of the video, and play it.true if the video was successfully restarted, otherwise falsepublic void suspend()
public long getDuration()
setOnPreparedListener(OnPreparedListener)).
If overrideDuration(long) is set then that value will be returned.public void overrideDuration(long duration)
duration - The duration for the current media item or < 0 to disablepublic long getCurrentPosition()
setOnPreparedListener(OnPreparedListener))public void setPositionOffset(long offset)
getCurrentPosition().
This value will be reset when a new audio item is selected.offset - The millisecond value to offset the positionpublic void restartOverridePosition()
overridePosition(boolean)).
This will be the value specified with setPositionOffset(long) or 0 if it hasn't been set.public void overridePosition(boolean override)
override - True if the position should be overriddenpublic void setOverridePositionMatchesPlaybackSpeed(boolean match)
match - true to match the playback speedpublic int getBufferPercentage()
setOnPreparedListener(OnPreparedListener))public WindowInfo getWindowInfo()
com.google.android.exoplayer2.Timeline.Window
used by the ExoPlayer backed implementation. When the MediaPlayer backed
implementation is being used this will be null.public void setRepeatMode(int repeatMode)
repeatMode - The repeat mode to usepublic boolean setPlaybackSpeed(float speed)
speed - The speed to play the media back atpublic void setCaptionListener(CaptionListener listener)
listener - The caption listenerpublic float getPlaybackSpeed()
public boolean trackSelectionAvailable()
@Deprecated public void setTrack(ExoMedia.RendererType trackType, int trackIndex)
setTrack(ExoMedia.RendererType, int, int)trackIndex for the specified
trackTypetrackType - The type for the track to switch to the selected indextrackIndex - The index for the track to switch topublic void setTrack(ExoMedia.RendererType trackType, int groupIndex, int trackIndex)
trackIndex for the specified
trackTypetrackType - The type for the track to switch to the selected indexgroupIndex - The index for the group in the TrackGroupArray specified by the trackTypetrackIndex - The index for the track to switch topublic int getSelectedTrackIndex(ExoMedia.RendererType type, int groupIndex)
public void clearSelectedTracks(ExoMedia.RendererType type)
type - The renderer typepublic java.util.Map<ExoMedia.RendererType,TrackGroupArray> getAvailableTracks()
trackSelectionAvailable()
should be called before this.public void setRendererEnabled(ExoMedia.RendererType type, boolean enabled)
type. Note, by default all
tracks are enabledtype - The ExoMedia.RendererType to enable or disable the track forenabled - true if the track should be enabled.public boolean isRendererEnabled(ExoMedia.RendererType type)
type - The renderer typepublic void setScaleType(ScaleType scaleType)
scaleType - how to scale the videospublic void setMeasureBasedOnAspectRatioEnabled(boolean measureBasedOnAspectRatioEnabled)
VideoViewApi using the video's aspect ratio if truemeasureBasedOnAspectRatioEnabled - whether to measure using the video's aspect ratio or notpublic void setVideoRotation(int rotation)
rotation - The rotation to apply to the videopublic void setOnPreparedListener(OnPreparedListener listener)
listener - The listenerpublic void setOnCompletionListener(OnCompletionListener listener)
listener - The listenerpublic void setOnBufferUpdateListener(OnBufferUpdateListener listener)
listener - The listenerpublic void setOnSeekCompletionListener(OnSeekCompletionListener listener)
listener - The listenerpublic void setOnErrorListener(OnErrorListener listener)
listener - The listenerpublic void setId3MetadataListener(MetadataListener listener)
listener - The listenerpublic void setAnalyticsListener(AnalyticsListener listener)
listener - The listener to informpublic void setOnVideoSizedChangedListener(OnVideoSizeChangedListener listener)
listener - The listenerpublic android.graphics.Bitmap getBitmap()
Bitmap representation of the current contents of the
view. If the surface isn't ready or we cannot access it for some reason then
null will be returned instead.
NOTE: Only the TextureView implementations support getting the bitmap
meaning that if the backing implementation is a SurfaceView then the result
will always be null
Bitmap representation of the view or nullprotected void setup(android.content.Context context,
android.util.AttributeSet attrs)
context - The context to use for setting up the viewattrs - The xml attributes associated with this instanceprotected void initView(android.content.Context context,
VideoView.AttributeContainer attributeContainer)
context - The context for the initializationattributeContainer - The attributes associated with this instanceprotected void postInit(VideoView.AttributeContainer attributeContainer)
initView(Context, AttributeContainer)
is performed.attributeContainer - The attributes associated with this instanceprotected void inflateVideoView(android.content.Context context,
VideoView.AttributeContainer attributeContainer)
ViewStub with the
correct backing implementation.context - The context to use for inflating the correct video viewattributeContainer - The attributes for retrieving custom backing implementations.protected int getVideoViewApiImplementation(android.content.Context context,
VideoView.AttributeContainer attributeContainer)
VideoView on legacy devices with
APIs below Jellybean (16) or that don't pass the Compatibility Test Suite [CTS] via
NativeTextureVideoView, and an ExoPlayer backed video view on the remaining devices via
ExoTextureVideoView.
In the rare cases that the default implementations need to be extended, or replaced, the
user can override the value with the attributes videoViewApiImplLegacy
and videoViewApiImpl.
NOTE: overriding the default implementations may cause inconsistencies and isn't recommended.
context - The Context to use when retrieving the backing video view implementationattributeContainer - The attributes to use for finding overridden video view implementationsprotected void onPlaybackEnded()
protected void stopPlayback(boolean clearSurface)
clearSurface - true if the surface should be cleared