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.LayoutParams
android.view.ViewGroup.MarginLayoutParams, android.view.ViewGroup.OnHierarchyChangeListener
android.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.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
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 VideoView.MuxNotifier |
muxNotifier |
protected long |
overriddenDuration |
protected StopWatch |
overriddenPositionStopWatch |
protected boolean |
overridePosition |
protected long |
positionOffset |
protected android.widget.ImageView |
previewImageView |
protected boolean |
releaseOnDetachFromWindow |
protected VideoControls |
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, TRUE
CLIP_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_CACHE
ACCESSIBILITY_LIVE_REGION_ASSERTIVE, ACCESSIBILITY_LIVE_REGION_NONE, ACCESSIBILITY_LIVE_REGION_POLITE, ALPHA, 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, 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, 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, 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_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 |
---|---|
java.util.Map<ExoMedia.RendererType,com.google.android.exoplayer2.source.TrackGroupArray> |
getAvailableTracks()
Retrieves a list of available tracks to select from.
|
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.
|
android.widget.ImageView |
getPreviewImageView()
Gets the preview ImageView for use with image loading libraries.
|
VideoControls |
getVideoControls()
Retrieves the video controls being used by this view.
|
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.
|
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
|
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 audio 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
|
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 |
setControls(VideoControls controls) |
void |
setDrmCallback(com.google.android.exoplayer2.drm.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
|
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 |
setScaleType(ScaleType scaleType)
Sets how the video should be scaled in the view
|
void |
setTrack(ExoMedia.RendererType trackType,
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,
com.google.android.exoplayer2.source.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, shouldDelayChildPressedState
addChildrenForAccessibility, addFocusables, 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, dispatchConfigurationChanged, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, 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, hasFocusable, hasTransientState, indexOfChild, invalidateChild, invalidateChildInParent, isAlwaysDrawnWithCacheEnabled, isAnimationCacheEnabled, isChildrenDrawingOrderEnabled, isChildrenDrawnWithCacheEnabled, isMotionEventSplittingEnabled, isTransitionGroup, jumpDrawablesToCurrentState, layout, measureChild, measureChildren, measureChildWithMargins, notifySubtreeAccessibilityStateChanged, offsetDescendantRectToMyCoords, offsetRectIntoDescendantCoords, onAttachedToWindow, onCreateDrawableState, 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, 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, updateViewLayout
addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, animate, announceForAccessibility, 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, dispatchFinishTemporaryDetach, dispatchGenericMotionEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPopulateAccessibilityEvent, dispatchStartTemporaryDetach, draw, drawableHotspotChanged, findViewById, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateViewId, getAccessibilityLiveRegion, getAccessibilityNodeProvider, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAlpha, getAnimation, getApplicationWindowToken, getBackground, getBackgroundTintList, getBackgroundTintMode, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentDescription, getContext, getContextMenuInfo, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getId, getImportantForAccessibility, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineProvider, 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, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarWidth, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasNestedScrollingParent, hasOnClickListeners, hasOverlappingRendering, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityFocused, isActivated, isAttachedToWindow, isClickable, isContextClickable, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isInEditMode, isInLayout, isInTouchMode, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onApplyWindowInsets, onCancelPendingInputEvents, 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, onPopulateAccessibilityEvent, 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, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, resolveSize, resolveSizeAndState, restoreHierarchyState, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDelegate, setAccessibilityLiveRegion, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAlpha, setAnimation, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentDescription, setContextClickable, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusableInTouchMode, setForeground, setForegroundGravity, setForegroundTintList, setForegroundTintMode, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHovered, setId, setImportantForAccessibility, setKeepScreenOn, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOutlineProvider, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPressed, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSelected, setSoundEffectsEnabled, setStateListAnimator, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, 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, willNotDraw
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, requestFitSystemWindows
@Nullable protected VideoControls videoControls
protected android.widget.ImageView previewImageView
protected android.net.Uri videoUri
protected VideoViewApi videoViewImpl
protected DeviceUtil deviceUtil
protected android.media.AudioManager audioManager
@NonNull protected VideoView.AudioFocusHelper audioFocusHelper
protected long positionOffset
protected long overriddenDuration
protected boolean overridePosition
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.ViewGroup
public void setOnTouchListener(android.view.View.OnTouchListener listener)
setOnTouchListener
in class android.view.View
public 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(@Nullable android.graphics.drawable.Drawable drawable)
drawable
- The drawable to use for the preview imagepublic void setPreviewImage(@DrawableRes int resourceId)
resourceId
- The resourceId representing the preview imagepublic void setPreviewImage(@Nullable android.graphics.Bitmap bitmap)
bitmap
- The bitmap to use for the preview imagepublic void setPreviewImage(@Nullable android.net.Uri uri)
uri
- The Uri pointing to the preview imagepublic android.widget.ImageView getPreviewImageView()
public void setControls(@Nullable VideoControls controls)
public void showControls()
VideoControls
to become visible. This should only be called after
setControls(VideoControls)
.@Nullable public VideoControls getVideoControls()
setControls(VideoControls)
or through the XML attribute useDefaultControls
this will return
nullpublic void setVideoURI(@Nullable android.net.Uri uri)
uri
- The video's Uripublic void setVideoURI(@Nullable android.net.Uri uri, @Nullable com.google.android.exoplayer2.source.MediaSource mediaSource)
uri
- The video's UrimediaSource
- MediaSource that should be usedpublic void setVideoPath(java.lang.String path)
path
- The path to the video@Nullable public android.net.Uri getVideoUri()
setVideoURI(android.net.Uri)
or setVideoPath(String)
then null will be returned.public void setDrmCallback(@Nullable com.google.android.exoplayer2.drm.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 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 stopPlayback()
public boolean restart()
restart
will seek to the beginning of the video, and play it.true
if the video was successfully restarted, otherwise false
public 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 int getBufferPercentage()
setOnPreparedListener(OnPreparedListener)
)public boolean setPlaybackSpeed(float speed)
speed
- The speed to play the media back atpublic boolean trackSelectionAvailable()
public void setTrack(ExoMedia.RendererType trackType, int trackIndex)
trackIndex
for the specified
trackType
trackType
- The type for the track to switch to the selected indextrackIndex
- The index for the track to switch to@Nullable public java.util.Map<ExoMedia.RendererType,com.google.android.exoplayer2.source.TrackGroupArray> getAvailableTracks()
trackSelectionAvailable()
should be called before this.public void setScaleType(@NonNull ScaleType scaleType)
scaleType
- how to scale the videospublic void setMeasureBasedOnAspectRatioEnabled(boolean measureBasedOnAspectRatioEnabled)
VideoViewApi
using the video's aspect ratio if true
measureBasedOnAspectRatioEnabled
- 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(@Nullable OnPreparedListener listener)
listener
- The listenerpublic void setOnCompletionListener(@Nullable OnCompletionListener listener)
listener
- The listenerpublic void setOnBufferUpdateListener(@Nullable OnBufferUpdateListener listener)
listener
- The listenerpublic void setOnSeekCompletionListener(@Nullable OnSeekCompletionListener listener)
listener
- The listenerpublic void setOnErrorListener(@Nullable OnErrorListener listener)
listener
- The listenerpublic void setId3MetadataListener(@Nullable MetadataListener listener)
listener
- The listenerpublic void setOnVideoSizedChangedListener(@Nullable OnVideoSizeChangedListener listener)
listener
- The listenerprotected void setup(android.content.Context context, @Nullable 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, @NonNull VideoView.AttributeContainer attributeContainer)
context
- The context for the initializationattributeContainer
- The attributes associated with this instanceprotected void postInit(@NonNull VideoView.AttributeContainer attributeContainer)
initView(Context, AttributeContainer)
is performed.attributeContainer
- The attributes associated with this instanceprotected void inflateVideoView(@NonNull android.content.Context context, @NonNull 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.@LayoutRes protected int getVideoViewApiImplementation(@NonNull android.content.Context context, @NonNull 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