diff --git a/app/build.gradle b/app/build.gradle index 19e0566c..8a12b37e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -68,4 +68,7 @@ dependencies { implementation "androidx.media3:media3-exoplayer:$mediaVersion" implementation "androidx.media3:media3-ui:$mediaVersion" implementation "androidx.media3:media3-exoplayer-dash:$mediaVersion" + + // our library + implementation project(':androidenhancedvideoplayer') } diff --git a/app/src/main/java/com/example/androidenhancedvideoplayer/components/EnhancedVideoPlayer.kt b/app/src/main/java/com/example/androidenhancedvideoplayer/components/EnhancedVideoPlayer.kt deleted file mode 100644 index feb0b8fc..00000000 --- a/app/src/main/java/com/example/androidenhancedvideoplayer/components/EnhancedVideoPlayer.kt +++ /dev/null @@ -1,57 +0,0 @@ -package com.example.androidenhancedvideoplayer.components - -import android.net.Uri -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.viewinterop.AndroidView -import androidx.media3.common.MediaItem -import androidx.media3.common.Player -import androidx.media3.common.util.UnstableApi -import androidx.media3.exoplayer.ExoPlayer -import androidx.media3.ui.AspectRatioFrameLayout -import androidx.media3.ui.PlayerView - -private const val MAIN_PACKAGE_PATH_PREFIX = "android.resource://" - -@androidx.annotation.OptIn(UnstableApi::class) -@Composable -fun VideoPlayerComponent( - resourceId: Int, - useControls: Boolean = false, - alwaysRepeat: Boolean = true, - fullScreen: Boolean = true, - playImmediately: Boolean = true, - soundOff: Boolean = true -) { - val context = LocalContext.current - val mainPackagePath = "$MAIN_PACKAGE_PATH_PREFIX${context.packageName}/" - val exoPlayer = ExoPlayer.Builder(context).build() - LaunchedEffect(Unit) { - exoPlayer.apply { - setMediaItem( - MediaItem.fromUri( - Uri.parse(mainPackagePath + resourceId.toString()) - ) - ) - volume = if (soundOff) 0f else 1f - repeatMode = if (alwaysRepeat) Player.REPEAT_MODE_ALL else Player.REPEAT_MODE_OFF - playWhenReady = playImmediately - prepare() - } - } - - AndroidView( - factory = { factoryContext -> - PlayerView(factoryContext).apply { - player = exoPlayer - useController = useControls - resizeMode = if (fullScreen) { - AspectRatioFrameLayout.RESIZE_MODE_ZOOM - } else { - AspectRatioFrameLayout.RESIZE_MODE_FIT - } - } - } - ) -} diff --git a/app/src/main/java/com/example/androidenhancedvideoplayer/components/VideoPlayerComponent.kt b/app/src/main/java/com/example/androidenhancedvideoplayer/components/VideoPlayerComponent.kt new file mode 100644 index 00000000..13eb9750 --- /dev/null +++ b/app/src/main/java/com/example/androidenhancedvideoplayer/components/VideoPlayerComponent.kt @@ -0,0 +1,23 @@ +package com.example.androidenhancedvideoplayer.components + +import androidx.compose.runtime.Composable +import com.profusion.androidenhancedvideoplayer.components.EnhancedVideoPlayer + +@Composable +fun VideoPlayerComponent( + resourceId: Int, + useControls: Boolean = false, + alwaysRepeat: Boolean = true, + fullScreen: Boolean = true, + playImmediately: Boolean = true, + soundOff: Boolean = true +) { + EnhancedVideoPlayer( + resourceId = resourceId, + useControls = useControls, + alwaysRepeat = alwaysRepeat, + fullScreen = fullScreen, + playImmediately = playImmediately, + soundOff = soundOff + ) +} diff --git a/settings.gradle b/settings.gradle index cd19efac..cf99f2e2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,3 +14,4 @@ dependencyResolutionManagement { } rootProject.name = "Android Enhanced Video Player" include ':app' +include ':androidenhancedvideoplayer'