BunnyStreamPlayer

class BunnyStreamPlayer @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : FrameLayout, BunnyPlayer(source)

The video player view of the Bunny Stream SDK. Add it to a layout (or wrap it in AndroidView from Compose) and call playVideo with a video id from your library:

player.playVideo(videoId = "your-video-guid")

The view needs an SDK instance: either net.bunny.api.BunnyStreamApi.initialize has been called, or bunny is set to an instance from BunnyStreamApi.create. With neither, playVideo logs an error and shows nothing. Appearance (accent color, visible controls, captions styling) comes from the library's player settings in the Bunny dashboard. Icons can be replaced through iconSet.

What the view handles on its own:

  • playback controls, seek-bar preview thumbnails, chapters, moments and captions

  • fullscreen (opens a dedicated fullscreen screen) and Picture-in-Picture (the host activity must declare android:supportsPictureInPicture="true")

  • Chromecast, when Google Play services are available

  • pausing when the host goes to the background and resuming on return

  • resume positions, once enabled with enableResumePosition

The view attaches to its host lifecycle automatically. Playback stops when the view is detached from the window. One playback engine is shared per process; use one player view at a time and detach it before starting playback in another.

Constructors

Link copied to clipboard
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var alpha: Float
Link copied to clipboard
open var animation: Animation?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val autofillHints: Array<out String?>??
Link copied to clipboard
Link copied to clipboard
open val autofillType: Int
Link copied to clipboard
Link copied to clipboard

When true, the player periodically samples the video frame behind the position/duration readout and flips the text between black and white based on luminance, so the readout stays legible regardless of scene brightness. Defaults to false to preserve existing behavior; opt in from your app.

Link copied to clipboard
open var background: Drawable?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val baseline: Int
Link copied to clipboard
var bottom: Int
Link copied to clipboard

The SDK instance this view plays from. Leave it null to use the one net.bunny.api.BunnyStreamApi.initialize registered.

Link copied to clipboard
Link copied to clipboard
open val childCount: Int
Link copied to clipboard
open var clipBounds: Rect?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Condensed control bar (hides secondary controls like settings/captions/duration). Driven for live playback by the dashboard's enableCompactControls from the live /play customization. Forwards to BunnyPlayerView.compactControls.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Whether the built-in player chrome is used. Set it to false before starting playback to get a bare video surface and drive playback from your own UI (play(), pause(), seekTo() and the rest of this class stay available). Taps on the player then do nothing and no control is ever shown. Defaults to true.

Link copied to clipboard
Link copied to clipboard
open val display: Display?
Link copied to clipboard
Link copied to clipboard
open val drawingCache: Bitmap?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val drawingTime: Long
Link copied to clipboard
open var elevation: Float
Link copied to clipboard
open val explicitStyle: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var focusable: Int
Link copied to clipboard
open val focusedChild: View?
Link copied to clipboard
open var foreground: Drawable?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val handler: Handler?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val height: Int
Link copied to clipboard
Link copied to clipboard
open override var iconSet: PlayerIconSet

Apply custom icons to video player interface

Link copied to clipboard
open var id: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val isDirty: Boolean
Link copied to clipboard
Link copied to clipboard
open var isEnabled: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val isFocused: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var isHovered: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val isLaidOut: Boolean
Link copied to clipboard
Link copied to clipboard
open override val isLayoutRequested: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val isOpaque: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var isPressed: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val isShown: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override val isTextAlignmentResolved: Boolean
Link copied to clipboard
open override val isTextDirectionResolved: Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var labelFor: Int
Link copied to clipboard
open val layerType: Int
Link copied to clipboard
Link copied to clipboard
open override var layoutDirection: Int
Link copied to clipboard
open var layoutMode: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
var left: Int
Link copied to clipboard
open val matrix: Matrix?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var minimumHeight: Int
Link copied to clipboard
open var minimumWidth: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var nextFocusUpId: Int
Link copied to clipboard
var onChaptersUpdated: (chapters: List<Chapter>) -> Unit?

Invoked with the video's chapters once they are known (empty when it has none).

Link copied to clipboard
var onLoadingChanged: (isLoading: Boolean) -> Unit?

Invoked while the player buffers, so a custom UI can show its own spinner.

Link copied to clipboard
var onMomentsUpdated: (moments: List<Moment>) -> Unit?

Invoked with the video's moments once they are known (empty when it has none).

Link copied to clipboard
var onMutedChanged: (isMuted: Boolean) -> Unit?

Invoked when the audio is muted or unmuted, from any source. See isMuted.

Link copied to clipboard
var onPlaybackError: (message: String) -> Unit?

Invoked when the engine reports a playback error. The live player uses it to re-poll the stream and rebuild playback from the live edge. Forwards to BunnyPlayerView.onPlaybackError.

Link copied to clipboard

Invoked whenever the playback rate changes - both when something selects a speed and when the engine restores the remembered one on the next video (PlaybackSpeedConfig.rememberLastSpeed, on by default).

Link copied to clipboard
var onPlayerTypeChanged: (playerType: PlayerType) -> Unit?

Invoked when playback moves between this device and a connected Chromecast, so a custom UI can stop presenting itself as the thing playing the video.

Link copied to clipboard
var onPlayingChanged: (isPlaying: Boolean) -> Unit?

Invoked when playback starts or stops, whatever the cause - a control, your own code, the end of the video, or a handover to Chromecast. Drive a custom play/pause button from this rather than from your own taps.

Link copied to clipboard

Invoked with the retention graph once it is known, for a custom seek bar.

Link copied to clipboard
var onVideoSizeChanged: (width: Int, height: Int) -> Unit?

Invoked with the current video's pixel dimensions (first frame and on change) so the host can size its container to the real aspect ratio — supporting both 16:9 and 9:16 (vertical) content.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val paddingBottom: Int
Link copied to clipboard
open val paddingEnd: Int
Link copied to clipboard
open val paddingLeft: Int
Link copied to clipboard
open val paddingRight: Int
Link copied to clipboard
open val paddingStart: Int
Link copied to clipboard
open val paddingTop: Int
Link copied to clipboard
override val parent: ViewParent?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var pivotX: Float
Link copied to clipboard
open var pivotY: Float
Link copied to clipboard

The playback rate. Setting it takes effect immediately and, with PlaybackSpeedConfig.rememberLastSpeed on, is remembered for the next video.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Manual override for the position/duration text color. Has no lasting effect while autoProgressTextColor is enabled — the sampler overrides it on each tick.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val resources: Resources?
Link copied to clipboard
Link copied to clipboard
var right: Int
Link copied to clipboard
Link copied to clipboard
open val rootView: View?
Link copied to clipboard
Link copied to clipboard
open var rotation: Float
Link copied to clipboard
open var rotationX: Float
Link copied to clipboard
open var rotationY: Float
Link copied to clipboard
open var scaleX: Float
Link copied to clipboard
open var scaleY: Float
Link copied to clipboard
Link copied to clipboard
open var scrollBarSize: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val solidColor: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var tag: Any?
Link copied to clipboard
open override var textAlignment: Int
Link copied to clipboard
open override var textDirection: Int
Link copied to clipboard
Link copied to clipboard
var top: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var visibility: Int
Link copied to clipboard
val width: Int
Link copied to clipboard
open val windowId: WindowId?
Link copied to clipboard
Link copied to clipboard
open val windowToken: IBinder?
Link copied to clipboard
Link copied to clipboard
open var x: Float
Link copied to clipboard
open var y: Float
Link copied to clipboard
open var z: Float

Functions

Link copied to clipboard
open fun addChildrenForAccessibility(outChildren: ArrayList<View?>?)
Link copied to clipboard
open fun addExtraDataToAccessibilityNodeInfo(info: AccessibilityNodeInfo, extraDataKey: String, arguments: Bundle?)
Link copied to clipboard
open fun addFocusables(views: ArrayList<View?>?, direction: Int)
open fun addFocusables(views: ArrayList<View?>?, direction: Int, focusableMode: Int)
Link copied to clipboard
open fun addKeyboardNavigationClusters(views: Collection<View?>, direction: Int)
Link copied to clipboard
Link copied to clipboard
open fun addTouchables(views: ArrayList<View?>?)
Link copied to clipboard
open fun addView(child: View?)
open fun addView(child: View?, index: Int)
open fun addView(child: View?, index: Int, params: ViewGroup.LayoutParams?)
open fun addView(child: View?, width: Int, height: Int)
open fun addView(child: View?, params: ViewGroup.LayoutParams?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun autofill(values: SparseArray<AutofillValue?>)
open fun autofill(value: AutofillValue?)
Link copied to clipboard
open fun bringChildToFront(child: View?)
Link copied to clipboard
open fun bringToFront()
Link copied to clipboard
open fun buildDrawingCache(autoScale: Boolean)
Link copied to clipboard
open fun buildLayer()
Link copied to clipboard
open fun callOnClick(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun cancelLongPress()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun canScrollHorizontally(direction: Int): Boolean
Link copied to clipboard
open fun canScrollVertically(direction: Int): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun childHasTransientStateChanged(child: View, childHasTransientState: Boolean)
Link copied to clipboard

Clear all saved positions

Link copied to clipboard
open fun clearAnimation()
Link copied to clipboard
open fun clearChildFocus(child: View?)
Link copied to clipboard
Link copied to clipboard
open fun clearFocus()
Link copied to clipboard
Link copied to clipboard

Clear saved position for specific video

Link copied to clipboard
Link copied to clipboard
open fun computeScroll()
Link copied to clipboard
open fun computeSystemWindowInsets(in: WindowInsets?, outLocalInsets: Rect?): WindowInsets?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Disable resume position functionality

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun dispatchCreateViewTranslationRequest(viewIds: Map<AutofillId?, LongArray?>, supportedFormats: IntArray, capability: TranslationCapability?, requests: List<ViewTranslationRequest?>)
Link copied to clipboard
open fun dispatchDisplayHint(hint: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun dispatchKeyEvent(event: KeyEvent?): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun dispatchNestedFling(velocityX: Float, velocityY: Float, consumed: Boolean): Boolean
Link copied to clipboard
open fun dispatchNestedPreFling(velocityX: Float, velocityY: Float): Boolean
Link copied to clipboard
open fun dispatchNestedPreScroll(dx: Int, dy: Int, consumed: IntArray?, offsetInWindow: IntArray?): Boolean
Link copied to clipboard
open fun dispatchNestedScroll(dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int, offsetInWindow: IntArray?): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun dispatchScrollCaptureSearch(localVisibleRect: Rect, windowOffset: Point, targets: Consumer<ScrollCaptureTarget?>)
Link copied to clipboard
open fun dispatchSetActivated(activated: Boolean)
Link copied to clipboard
open fun dispatchSetSelected(selected: Boolean)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun dispatchUnhandledMove(focused: View?, direction: Int): Boolean
Link copied to clipboard
Link copied to clipboard
open fun dispatchWindowVisibilityChanged(visibility: Int)
Link copied to clipboard
open fun draw(canvas: Canvas)
Link copied to clipboard
Link copied to clipboard
fun enableResumePosition(config: ResumeConfig = ResumeConfig(), onResumePositionCallback: (PlaybackPosition, (Boolean) -> Unit) -> Unit? = null)

Enable resume position functionality with auto-save

Link copied to clipboard
open fun endViewTransition(view: View?)
Link copied to clipboard
open fun findFocus(): View?
Link copied to clipboard
fun <T : View?> findViewById(id: Int): T?
Link copied to clipboard
open fun findViewsWithText(outViews: ArrayList<View?>?, text: CharSequence?, flags: Int)
Link copied to clipboard
fun <T : View?> findViewWithTag(tag: Any?): T?
Link copied to clipboard
Link copied to clipboard
open fun focusSearch(direction: Int): View?
open fun focusSearch(focused: View?, direction: Int): View?
Link copied to clipboard
open fun forceHasOverlappingRendering(hasOverlappingRendering: Boolean)
Link copied to clipboard
open fun forceLayout()
Link copied to clipboard
Link copied to clipboard
open fun generateDisplayHash(hashAlgorithm: String, bounds: Rect?, executor: Executor, callback: DisplayHashResultCallback)
Link copied to clipboard

Get all saved positions for debugging/management

Link copied to clipboard
Link copied to clipboard
open fun getChildAt(index: Int): View?
Link copied to clipboard
fun getChildDrawingOrder(drawingPosition: Int): Int
Link copied to clipboard
open fun getChildVisibleRect(child: View?, r: Rect?, offset: Point?): Boolean
Link copied to clipboard
open override fun getCurrentPosition(): Long

Get current position of video in milliseconds

Link copied to clipboard

Get current position as formatted time string (e.g., "1:23" or "1:23:45")

Link copied to clipboard

Get the device type (TV, Mobile, or Unknown)

Link copied to clipboard
open fun getDrawingRect(outRect: Rect?)
Link copied to clipboard
open override fun getDuration(): Long

Get total duration of video in milliseconds

Link copied to clipboard

Get duration as formatted time string

Link copied to clipboard
open fun getFocusables(direction: Int): ArrayList<View?>?
Link copied to clipboard
open fun getFocusedRect(r: Rect?)
Link copied to clipboard
open fun getGlobalVisibleRect(r: Rect?, globalOffset: Point?): Boolean
Link copied to clipboard
open fun getHitRect(outRect: Rect?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getLocationInSurface(location: IntArray)
Link copied to clipboard
open fun getLocationInWindow(outLocation: IntArray?)
Link copied to clipboard
open fun getLocationOnScreen(outLocation: IntArray?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

The speeds offered for this video, from the library's player settings.

Link copied to clipboard
open override fun getProgress(): Float

Get playback progress as a value between 0.0 and 1.0

Link copied to clipboard
open fun getTextAlignment(): Int
Link copied to clipboard
open fun getTextDirection(): Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun hasFocus(): Boolean
Link copied to clipboard
open fun hasFocusable(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun indexOfChild(child: View?): Int
Link copied to clipboard
open fun invalidate()
open fun invalidate(dirty: Rect?)
open fun invalidate(l: Int, t: Int, r: Int, b: Int)
Link copied to clipboard
fun invalidateChild(child: View?, dirty: Rect?)
Link copied to clipboard
open fun invalidateChildInParent(location: IntArray?, dirty: Rect?): ViewParent?
Link copied to clipboard
open fun invalidateDrawable(drawable: Drawable)
Link copied to clipboard
Link copied to clipboard
open override fun isEnded(): Boolean

Check if video has ended

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Whether the audio is muted. Changes are reported through onMutedChanged.

Link copied to clipboard
open override fun isPlaying(): Boolean

Check if video is currently playing

Link copied to clipboard

Check if the app is running on Android TV

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun isVisibleToUserForAutofill(virtualId: Int): Boolean
Link copied to clipboard
Link copied to clipboard
open fun keyboardNavigationClusterSearch(currentCluster: View?, direction: Int): View?
Link copied to clipboard
fun layout(l: Int, t: Int, r: Int, b: Int)
Link copied to clipboard
fun measure(widthMeasureSpec: Int, heightMeasureSpec: Int)
Link copied to clipboard
fun mute()

Mutes the audio.

Link copied to clipboard
open fun notifySubtreeAccessibilityStateChanged(child: View, source: View, changeType: Int)
Link copied to clipboard
fun offsetDescendantRectToMyCoords(descendant: View?, rect: Rect?)
Link copied to clipboard
open fun offsetLeftAndRight(offset: Int)
Link copied to clipboard
fun offsetRectIntoDescendantCoords(descendant: View?, rect: Rect?)
Link copied to clipboard
open fun offsetTopAndBottom(offset: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onCreateViewTranslationRequest(supportedFormats: IntArray, requestsCollector: Consumer<ViewTranslationRequest?>)
Link copied to clipboard
open fun onCreateVirtualViewTranslationRequests(virtualIds: LongArray, supportedFormats: IntArray, requestsCollector: Consumer<ViewTranslationRequest?>)
Link copied to clipboard
open fun onDescendantInvalidated(child: View, target: View)
Link copied to clipboard
open fun onDragEvent(event: DragEvent?): Boolean
Link copied to clipboard
open fun onDrawForeground(canvas: Canvas)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onHoverChanged(hovered: Boolean)
Link copied to clipboard
open fun onHoverEvent(event: MotionEvent?): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyLongPress(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyMultiple(keyCode: Int, repeatCount: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyPreIme(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyShortcut(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean
Link copied to clipboard
open fun onNestedFling(target: View, velocityX: Float, velocityY: Float, consumed: Boolean): Boolean
Link copied to clipboard
open fun onNestedPreFling(target: View, velocityX: Float, velocityY: Float): Boolean
Link copied to clipboard
open fun onNestedPrePerformAccessibilityAction(target: View, action: Int, args: Bundle?): Boolean
Link copied to clipboard
open fun onNestedPreScroll(target: View, dx: Int, dy: Int, consumed: IntArray)
Link copied to clipboard
open fun onNestedScroll(target: View, dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int)
Link copied to clipboard
open fun onNestedScrollAccepted(child: View, target: View, axes: Int)
Link copied to clipboard
open fun onPointerCaptureChange(hasCapture: Boolean)
Link copied to clipboard
open fun onProvideAutofillStructure(structure: ViewStructure?, flags: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onProvideStructure(structure: ViewStructure?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onResolvePointerIcon(event: MotionEvent?, pointerIndex: Int): PointerIcon?
Link copied to clipboard
open fun onRtlPropertiesChanged(layoutDirection: Int)
Link copied to clipboard
open fun onScreenStateChanged(screenState: Int)
Link copied to clipboard
open fun onScrollCaptureSearch(localVisibleRect: Rect, windowOffset: Point, targets: Consumer<ScrollCaptureTarget?>)
Link copied to clipboard
open fun onStartNestedScroll(child: View, target: View, nestedScrollAxes: Int): Boolean
Link copied to clipboard
Link copied to clipboard
open fun onStopNestedScroll(child: View)
Link copied to clipboard
open fun onTouchEvent(event: MotionEvent?): Boolean
Link copied to clipboard
Link copied to clipboard
open fun onViewAdded(child: View?)
Link copied to clipboard
open fun onViewRemoved(child: View?)
Link copied to clipboard
Link copied to clipboard
open fun onVisibilityAggregated(isVisible: Boolean)
Link copied to clipboard
open fun onWindowFocusChanged(hasWindowFocus: Boolean)
Link copied to clipboard
Link copied to clipboard
open override fun pause()

Pauses video

Link copied to clipboard
open fun performAccessibilityAction(action: Int, arguments: Bundle?): Boolean
Link copied to clipboard
open fun performClick(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun performHapticFeedback(feedbackConstant: Int): Boolean
open fun performHapticFeedback(feedbackConstant: Int, flags: Int): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun play()

Resumes playing video

Link copied to clipboard
fun playLiveUrl(libraryId: Long, streamId: String, videoTitle: String, hlsUrl: String, enableSubtitles: Boolean = false, playData: LiveStreamPlayData? = null, dvrEnabled: Boolean = false, isVodRecording: Boolean = false, startPositionMs: Long? = null)

Play a pre-resolved HLS URL through the standard Bunny player UI (custom controller, progress text auto-contrast, fullscreen, etc.). Used by the live-stream Compose surface in net.bunny.bunnystreamplayer.livestream so live playback looks visually identical to VOD — same controls, same chrome.

Link copied to clipboard
open fun playSoundEffect(soundConstant: Int)
Link copied to clipboard
open override fun playVideo(videoId: String, libraryId: Long? = null, videoTitle: String = "", token: String? = null, expires: Long? = null)

Plays a video and fetches additional info, e.g. chapters, moments and subtitles

Link copied to clipboard
fun playVideoWithTVDetection(videoId: String, libraryId: Long?, token: String? = null, expires: Long? = null)

Play video with automatic TV/Mobile detection

Link copied to clipboard
open fun post(action: Runnable?): Boolean
Link copied to clipboard
open fun postDelayed(action: Runnable?, delayMillis: Long): Boolean
Link copied to clipboard
open fun postInvalidate()
open fun postInvalidate(left: Int, top: Int, right: Int, bottom: Int)
Link copied to clipboard
open fun postInvalidateDelayed(delayMilliseconds: Long)
open fun postInvalidateDelayed(delayMilliseconds: Long, left: Int, top: Int, right: Int, bottom: Int)
Link copied to clipboard
open fun postInvalidateOnAnimation(left: Int, top: Int, right: Int, bottom: Int)
Link copied to clipboard
open fun postOnAnimation(action: Runnable?)
Link copied to clipboard
open fun postOnAnimationDelayed(action: Runnable?, delayMillis: Long)
Link copied to clipboard
open fun propagateRequestedFrameRate(frameRate: Float, forceOverride: Boolean)
Link copied to clipboard
open fun recomputeViewAttributes(child: View?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun removeAllViews()
Link copied to clipboard
Link copied to clipboard
open fun removeCallbacks(action: Runnable?): Boolean
Link copied to clipboard
open fun removeView(view: View?)
Link copied to clipboard
open fun removeViewAt(index: Int)
Link copied to clipboard
open fun removeViewInLayout(view: View?)
Link copied to clipboard
open fun removeViews(start: Int, count: Int)
Link copied to clipboard
open fun removeViewsInLayout(start: Int, count: Int)
Link copied to clipboard
open fun reportAppJankStats(appJankStats: AppJankStats)
Link copied to clipboard
Link copied to clipboard
open fun requestChildFocus(child: View?, focused: View?)
Link copied to clipboard
open fun requestChildRectangleOnScreen(child: View, rectangle: Rect?, immediate: Boolean): Boolean
Link copied to clipboard
open fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean)
Link copied to clipboard
Link copied to clipboard
fun requestFocus(direction: Int): Boolean
open fun requestFocus(direction: Int, previouslyFocusedRect: Rect?): Boolean
Link copied to clipboard
Link copied to clipboard
open fun requestLayout()
Link copied to clipboard
Link copied to clipboard
open fun requestRectangleOnScreen(rectangle: Rect?): Boolean
open fun requestRectangleOnScreen(rectangle: Rect?, immediate: Boolean): Boolean
Link copied to clipboard
Link copied to clipboard
open fun requestTransparentRegion(child: View?)
Link copied to clipboard
fun <T : View?> requireViewById(id: Int): T & Any
Link copied to clipboard
open fun resetPivot()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun saveAttributeDataForStyleable(context: Context, styleable: IntArray, attrs: AttributeSet?, t: TypedArray, defStyleAttr: Int, defStyleRes: Int)
Link copied to clipboard
open fun saveHierarchyState(container: SparseArray<Parcelable?>?)
Link copied to clipboard
open fun scheduleDrawable(who: Drawable, what: Runnable, when: Long)
Link copied to clipboard
Link copied to clipboard
open fun scrollBy(x: Int, y: Int)
Link copied to clipboard
open fun scrollTo(x: Int, y: Int)
Link copied to clipboard
open override fun seekTo(position: Long)

Seek to a specific playback position in milliseconds.

Link copied to clipboard
open fun sendAccessibilityEvent(eventType: Int)
Link copied to clipboard
open fun setAccessibilityDataSensitive(accessibilityDataSensitive: Int)
Link copied to clipboard
open fun setAddStatesFromChildren(addsStates: Boolean)
Link copied to clipboard
open fun setAllowClickWhenDisabled(clickableWhenDisabled: Boolean)
Link copied to clipboard
open fun setAllowedHandwritingDelegatePackage(allowedPackageName: String?)
Link copied to clipboard
open fun setAllowedHandwritingDelegatorPackage(allowedPackageName: String?)
Link copied to clipboard
open fun setAutofillHints(vararg autofillHints: String?)
Link copied to clipboard
open fun setBackgroundColor(color: Int)
Link copied to clipboard
open fun setBackgroundDrawable(background: Drawable?)
Link copied to clipboard
open fun setBackgroundResource(resid: Int)
Link copied to clipboard
open fun setFadingEdgeLength(length: Int)
Link copied to clipboard
open fun setHandwritingBoundsOffsets(offsetLeft: Float, offsetTop: Float, offsetRight: Float, offsetBottom: Float)
Link copied to clipboard
open fun setHasTransientState(hasTransientState: Boolean)
Link copied to clipboard
open fun setIsCredential(isCredential: Boolean)
Link copied to clipboard
open fun setIsHandwritingDelegate(isHandwritingDelegate: Boolean)
Link copied to clipboard
open fun setLayerPaint(paint: Paint?)
Link copied to clipboard
open fun setLayerType(layerType: Int, paint: Paint?)
Link copied to clipboard
fun setLeftTopRightBottom(left: Int, top: Int, right: Int, bottom: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun setOnReceiveContentListener(mimeTypes: Array<out String?>??, listener: OnReceiveContentListener?)
Link copied to clipboard
Link copied to clipboard
open fun setPadding(left: Int, top: Int, right: Int, bottom: Int)
Link copied to clipboard
open fun setPaddingRelative(start: Int, top: Int, end: Int, bottom: Int)
Link copied to clipboard
Link copied to clipboard

Set a listener to receive progress updates

Link copied to clipboard
open fun setRenderEffect(renderEffect: RenderEffect?)
Link copied to clipboard
open fun setTransitionVisibility(visibility: Int)
Link copied to clipboard
open fun setWillNotCacheDrawing(willNotCacheDrawing: Boolean)
Link copied to clipboard
open fun setWillNotDraw(willNotDraw: Boolean)
Link copied to clipboard
Link copied to clipboard
open fun showContextMenuForChild(originalView: View?): Boolean
open fun showContextMenuForChild(originalView: View?, x: Float, y: Float): Boolean
Link copied to clipboard
Link copied to clipboard
open fun startActionModeForChild(originalView: View?, callback: ActionMode.Callback?): ActionMode?
open fun startActionModeForChild(originalView: View?, callback: ActionMode.Callback?, type: Int): ActionMode?
Link copied to clipboard
open fun startAnimation(animation: Animation?)
Link copied to clipboard
fun startDrag(data: ClipData?, shadowBuilder: View.DragShadowBuilder?, myLocalState: Any?, flags: Int): Boolean
Link copied to clipboard
fun startDragAndDrop(data: ClipData?, shadowBuilder: View.DragShadowBuilder?, myLocalState: Any?, flags: Int): Boolean
Link copied to clipboard
Link copied to clipboard
open fun startNestedScroll(axes: Int): Boolean
Link copied to clipboard
open fun startViewTransition(view: View?)
Link copied to clipboard
open fun stopNestedScroll()
Link copied to clipboard
open fun suppressLayout(suppress: Boolean)
Link copied to clipboard
Link copied to clipboard
open fun transformMatrixToLocal(matrix: Matrix)
Link copied to clipboard
fun unmute()

Unmutes the audio.

Link copied to clipboard
open fun unscheduleDrawable(who: Drawable, what: Runnable)
Link copied to clipboard
Link copied to clipboard
open fun updateViewLayout(view: View?, params: ViewGroup.LayoutParams?)
Link copied to clipboard
Link copied to clipboard
open fun willNotDraw(): Boolean