|
@@ -1,91 +1,604 @@
|
|
|
-/*
|
|
|
|
|
- * Copyright (c) Milan Jurkulák 2023.
|
|
|
|
|
- * Contact:
|
|
|
|
|
- * e: mimoccc@gmail.com
|
|
|
|
|
- * e: mj@mjdev.org
|
|
|
|
|
- * w: https://mjdev.org
|
|
|
|
|
- */
|
|
|
|
|
-
|
|
|
|
|
-package org.mjdev.tvlib.ui.components.media
|
|
|
|
|
-
|
|
|
|
|
-import android.media.MediaPlayer
|
|
|
|
|
-import android.net.Uri
|
|
|
|
|
-import android.view.SurfaceView
|
|
|
|
|
-import androidx.compose.foundation.background
|
|
|
|
|
-import androidx.compose.foundation.layout.Box
|
|
|
|
|
-import androidx.compose.foundation.layout.size
|
|
|
|
|
-import androidx.compose.runtime.Composable
|
|
|
|
|
-import androidx.compose.ui.Modifier
|
|
|
|
|
-import androidx.compose.ui.graphics.Color
|
|
|
|
|
-import androidx.compose.ui.graphics.RectangleShape
|
|
|
|
|
-import androidx.compose.ui.platform.LocalConfiguration
|
|
|
|
|
-import androidx.compose.ui.unit.dp
|
|
|
|
|
-import androidx.compose.ui.viewinterop.AndroidView
|
|
|
|
|
-import org.mjdev.tvlib.extensions.ComposeExt
|
|
|
|
|
-import org.mjdev.tvlib.extensions.ModifierExt.recomposeHighlighter
|
|
|
|
|
-
|
|
|
|
|
-// todo
|
|
|
|
|
-@Suppress("unused")
|
|
|
|
|
-class NativePlayerImpl(
|
|
|
|
|
- private val mediaPlayer: MediaPlayer
|
|
|
|
|
-) : IMediaPlayer {
|
|
|
|
|
-
|
|
|
|
|
- @Composable
|
|
|
|
|
- override fun GetPlayerView() {
|
|
|
|
|
- val width = LocalConfiguration.current.screenWidthDp
|
|
|
|
|
- val height = LocalConfiguration.current.screenHeightDp
|
|
|
|
|
- val isEdit = ComposeExt.isEditMode()
|
|
|
|
|
- Box(
|
|
|
|
|
- modifier = Modifier
|
|
|
|
|
- .recomposeHighlighter()
|
|
|
|
|
- .size(width.dp, height.dp)
|
|
|
|
|
- .background(Color.Black, RectangleShape)
|
|
|
|
|
- ) {
|
|
|
|
|
- if (!isEdit) {
|
|
|
|
|
- AndroidView(
|
|
|
|
|
- modifier = Modifier
|
|
|
|
|
- .size(width.dp, height.dp)
|
|
|
|
|
- .recomposeHighlighter(),
|
|
|
|
|
- factory = { context ->
|
|
|
|
|
- SurfaceView(context).apply {
|
|
|
|
|
- mediaPlayer.setDisplay(holder)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun setMediaUri(uri: Uri) {
|
|
|
|
|
- mediaPlayer.setDataSource(uri.toString())
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun prepare() {
|
|
|
|
|
- mediaPlayer.prepareAsync()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun play() {
|
|
|
|
|
- mediaPlayer.start()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun pause() {
|
|
|
|
|
- mediaPlayer.pause()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun resume() {
|
|
|
|
|
- mediaPlayer.start()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun stop() {
|
|
|
|
|
- mediaPlayer.stop()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun dispose() {
|
|
|
|
|
- mediaPlayer.release()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun seekTo(value: Long) {
|
|
|
|
|
- mediaPlayer.seekTo(value.toInt())
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-}
|
|
|
|
|
|
|
+///*
|
|
|
|
|
+// * Copyright (c) Milan Jurkulák 2023.
|
|
|
|
|
+// * Contact:
|
|
|
|
|
+// * e: mimoccc@gmail.com
|
|
|
|
|
+// * e: mj@mjdev.org
|
|
|
|
|
+// * w: https://mjdev.org
|
|
|
|
|
+// */
|
|
|
|
|
+//
|
|
|
|
|
+//package org.mjdev.tvlib.ui.components.media
|
|
|
|
|
+//
|
|
|
|
|
+//import android.media.MediaPlayer
|
|
|
|
|
+//import android.net.Uri
|
|
|
|
|
+//import android.os.Looper
|
|
|
|
|
+//import android.view.Surface
|
|
|
|
|
+//import android.view.SurfaceHolder
|
|
|
|
|
+//import android.view.SurfaceView
|
|
|
|
|
+//import android.view.TextureView
|
|
|
|
|
+//import androidx.compose.foundation.background
|
|
|
|
|
+//import androidx.compose.foundation.layout.Box
|
|
|
|
|
+//import androidx.compose.foundation.layout.size
|
|
|
|
|
+//import androidx.compose.runtime.Composable
|
|
|
|
|
+//import androidx.compose.ui.Modifier
|
|
|
|
|
+//import androidx.compose.ui.graphics.Color
|
|
|
|
|
+//import androidx.compose.ui.graphics.RectangleShape
|
|
|
|
|
+//import androidx.compose.ui.platform.LocalConfiguration
|
|
|
|
|
+//import androidx.compose.ui.unit.dp
|
|
|
|
|
+//import androidx.compose.ui.viewinterop.AndroidView
|
|
|
|
|
+//import androidx.media3.common.AudioAttributes
|
|
|
|
|
+//import androidx.media3.common.DeviceInfo
|
|
|
|
|
+//import androidx.media3.common.MediaItem
|
|
|
|
|
+//import androidx.media3.common.MediaMetadata
|
|
|
|
|
+//import androidx.media3.common.PlaybackException
|
|
|
|
|
+//import androidx.media3.common.PlaybackParameters
|
|
|
|
|
+//import androidx.media3.common.Player
|
|
|
|
|
+//import androidx.media3.common.Timeline
|
|
|
|
|
+//import androidx.media3.common.TrackSelectionParameters
|
|
|
|
|
+//import androidx.media3.common.Tracks
|
|
|
|
|
+//import androidx.media3.common.VideoSize
|
|
|
|
|
+//import androidx.media3.common.text.CueGroup
|
|
|
|
|
+//import androidx.media3.common.util.Size
|
|
|
|
|
+//import org.mjdev.tvlib.extensions.ComposeExt
|
|
|
|
|
+//import org.mjdev.tvlib.extensions.ModifierExt.recomposeHighlighter
|
|
|
|
|
+//
|
|
|
|
|
+//// todo
|
|
|
|
|
+//@Suppress("unused")
|
|
|
|
|
+//class NativePlayerImpl(
|
|
|
|
|
+// private val mediaPlayer: MediaPlayer
|
|
|
|
|
+//) : IMediaPlayer {
|
|
|
|
|
+//
|
|
|
|
|
+// @Composable
|
|
|
|
|
+// override fun GetPlayerView() {
|
|
|
|
|
+// val width = LocalConfiguration.current.screenWidthDp
|
|
|
|
|
+// val height = LocalConfiguration.current.screenHeightDp
|
|
|
|
|
+// val isEdit = ComposeExt.isEditMode()
|
|
|
|
|
+// Box(
|
|
|
|
|
+// modifier = Modifier
|
|
|
|
|
+// .recomposeHighlighter()
|
|
|
|
|
+// .size(width.dp, height.dp)
|
|
|
|
|
+// .background(Color.Black, RectangleShape)
|
|
|
|
|
+// ) {
|
|
|
|
|
+// if (!isEdit) {
|
|
|
|
|
+// AndroidView(
|
|
|
|
|
+// modifier = Modifier
|
|
|
|
|
+// .size(width.dp, height.dp)
|
|
|
|
|
+// .recomposeHighlighter(),
|
|
|
|
|
+// factory = { context ->
|
|
|
|
|
+// SurfaceView(context).apply {
|
|
|
|
|
+// mediaPlayer.setDisplay(holder)
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// )
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setMediaUri(uri: Uri) {
|
|
|
|
|
+// mediaPlayer.setDataSource(uri.toString())
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun prepare() {
|
|
|
|
|
+// mediaPlayer.prepareAsync()
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun play() {
|
|
|
|
|
+// mediaPlayer.start()
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun pause() {
|
|
|
|
|
+// mediaPlayer.pause()
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun resume() {
|
|
|
|
|
+// mediaPlayer.start()
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun stop() {
|
|
|
|
|
+// mediaPlayer.stop()
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun dispose() {
|
|
|
|
|
+// mediaPlayer.release()
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekTo(value: Long) {
|
|
|
|
|
+// mediaPlayer.seekTo(value.toInt())
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekTo(mediaItemIndex: Int, positionMs: Long) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getApplicationLooper(): Looper {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun addListener(listener: Player.Listener) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun removeListener(listener: Player.Listener) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setMediaItems(mediaItems: MutableList<MediaItem>) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setMediaItems(mediaItems: MutableList<MediaItem>, resetPosition: Boolean) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setMediaItems(
|
|
|
|
|
+// mediaItems: MutableList<MediaItem>,
|
|
|
|
|
+// startIndex: Int,
|
|
|
|
|
+// startPositionMs: Long
|
|
|
|
|
+// ) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setMediaItem(mediaItem: MediaItem) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setMediaItem(mediaItem: MediaItem, startPositionMs: Long) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setMediaItem(mediaItem: MediaItem, resetPosition: Boolean) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun addMediaItem(mediaItem: MediaItem) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun addMediaItem(index: Int, mediaItem: MediaItem) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun addMediaItems(mediaItems: MutableList<MediaItem>) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun addMediaItems(index: Int, mediaItems: MutableList<MediaItem>) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun moveMediaItem(currentIndex: Int, newIndex: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun moveMediaItems(fromIndex: Int, toIndex: Int, newIndex: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun replaceMediaItem(index: Int, mediaItem: MediaItem) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun replaceMediaItems(
|
|
|
|
|
+// fromIndex: Int,
|
|
|
|
|
+// toIndex: Int,
|
|
|
|
|
+// mediaItems: MutableList<MediaItem>
|
|
|
|
|
+// ) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun removeMediaItem(index: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun removeMediaItems(fromIndex: Int, toIndex: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun clearMediaItems() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isCommandAvailable(command: Int): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun canAdvertiseSession(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getAvailableCommands(): Player.Commands {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPlaybackState(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPlaybackSuppressionReason(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isPlaying(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPlayerError(): PlaybackException? {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setPlayWhenReady(playWhenReady: Boolean) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPlayWhenReady(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setRepeatMode(repeatMode: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getRepeatMode(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setShuffleModeEnabled(shuffleModeEnabled: Boolean) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getShuffleModeEnabled(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isLoading(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToDefaultPosition() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToDefaultPosition(mediaItemIndex: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getSeekBackIncrement(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekBack() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getSeekForwardIncrement(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekForward() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun hasPrevious(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun hasPreviousWindow(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun hasPreviousMediaItem(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun previous() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToPreviousWindow() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToPreviousMediaItem() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getMaxSeekToPreviousPosition(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToPrevious() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun hasNext(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun hasNextWindow(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun hasNextMediaItem(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun next() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToNextWindow() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToNextMediaItem() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun seekToNext() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setPlaybackParameters(playbackParameters: PlaybackParameters) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setPlaybackSpeed(speed: Float) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPlaybackParameters(): PlaybackParameters {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun release() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentTracks(): Tracks {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getTrackSelectionParameters(): TrackSelectionParameters {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setTrackSelectionParameters(parameters: TrackSelectionParameters) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getMediaMetadata(): MediaMetadata {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPlaylistMetadata(): MediaMetadata {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setPlaylistMetadata(mediaMetadata: MediaMetadata) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentManifest(): Any? {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentTimeline(): Timeline {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentPeriodIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentWindowIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentMediaItemIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getNextWindowIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getNextMediaItemIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPreviousWindowIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getPreviousMediaItemIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentMediaItem(): MediaItem? {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getMediaItemCount(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getMediaItemAt(index: Int): MediaItem {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getDuration(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentPosition(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getBufferedPosition(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getBufferedPercentage(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getTotalBufferedDuration(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isCurrentWindowDynamic(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isCurrentMediaItemDynamic(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isCurrentWindowLive(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isCurrentMediaItemLive(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentLiveOffset(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isCurrentWindowSeekable(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isCurrentMediaItemSeekable(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isPlayingAd(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentAdGroupIndex(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentAdIndexInAdGroup(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getContentDuration(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getContentPosition(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getContentBufferedPosition(): Long {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getAudioAttributes(): AudioAttributes {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setVolume(volume: Float) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getVolume(): Float {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun clearVideoSurface() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun clearVideoSurface(surface: Surface?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setVideoSurface(surface: Surface?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setVideoSurfaceHolder(surfaceHolder: SurfaceHolder?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun clearVideoSurfaceHolder(surfaceHolder: SurfaceHolder?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setVideoSurfaceView(surfaceView: SurfaceView?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun clearVideoSurfaceView(surfaceView: SurfaceView?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setVideoTextureView(textureView: TextureView?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun clearVideoTextureView(textureView: TextureView?) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getVideoSize(): VideoSize {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getSurfaceSize(): Size {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getCurrentCues(): CueGroup {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getDeviceInfo(): DeviceInfo {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun getDeviceVolume(): Int {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun isDeviceMuted(): Boolean {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setDeviceVolume(volume: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setDeviceVolume(volume: Int, flags: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun increaseDeviceVolume() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun increaseDeviceVolume(flags: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun decreaseDeviceVolume() {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun decreaseDeviceVolume(flags: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setDeviceMuted(muted: Boolean) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// override fun setDeviceMuted(muted: Boolean, flags: Int) {
|
|
|
|
|
+// TODO("Not yet implemented")
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+//}
|