mirror of
https://github.com/androidx/media.git
synced 2025-04-29 22:36:54 +08:00
Move PlayerExtensions
into common-ktx module
For now, the only extension function on the `Player` has been used in a Compose demo. It can be promoted to a proper module where in the future other extension functions will reside. Given that `Player` is in `androidx.media3.common`, the corresponding KTX library for it is `androidx.media3.common-ktx` To start using the new `suspend fun listen`, one must add `androidx.media3:media3-common-ktx` as a Gradle dependency and `import androidx.media3.common.listen` PiperOrigin-RevId: 658771029
This commit is contained in:
parent
86bd1df632
commit
9ace81bf2f
@ -13,6 +13,10 @@
|
||||
instead of building a playlist structure.
|
||||
* Increase `minSdk` to 21 (Android Lollipop). This is aligned with all
|
||||
other AndroidX libraries.
|
||||
* Add `androidx.media3:media3-common-ktx` artifact which provides
|
||||
Kotlin-specific functionality built on top of the Common library
|
||||
* Add `Player.listen` suspending extension function to spin a coroutine to
|
||||
listen to `Player.Events` to the `media3-common-ktx` library.
|
||||
* ExoPlayer:
|
||||
* `MediaCodecRenderer.onProcessedStreamChange()` can now be called for
|
||||
every media item. Previously it was not called for the first one. Use
|
||||
|
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2024 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<manifest package="androidx.media3.demo.compose.test">
|
||||
<uses-sdk/>
|
||||
</manifest>
|
@ -28,8 +28,24 @@ android {
|
||||
withSourcesJar()
|
||||
}
|
||||
}
|
||||
testOptions {
|
||||
unitTests {
|
||||
includeAndroidResources = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api project(modulePrefix + 'lib-common')
|
||||
implementation project(modulePrefix + 'lib-exoplayer')
|
||||
implementation 'androidx.core:core:' + androidxCoreVersion
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:' + kotlinxCoroutinesVersion
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:' + kotlinxCoroutinesVersion
|
||||
|
||||
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:' + kotlinxCoroutinesVersion
|
||||
testImplementation 'org.robolectric:robolectric:' + robolectricVersion
|
||||
testImplementation project(modulePrefix + 'test-utils')}
|
||||
|
||||
ext {
|
||||
releaseArtifactId = 'media3-common-ktx'
|
||||
releaseName = 'Media3 common KTX module'
|
||||
|
@ -14,12 +14,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package androidx.media3.demo.compose
|
||||
package androidx.media3.common
|
||||
|
||||
import android.os.Looper
|
||||
import androidx.core.os.HandlerCompat
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.common.Player.Events
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import kotlin.coroutines.resumeWithException
|
||||
import kotlinx.coroutines.CancellableContinuation
|
||||
@ -44,6 +44,7 @@ import kotlinx.coroutines.withContext
|
||||
* @return Nothing This function never returns normally. It will either continue indefinitely or
|
||||
* terminate due to an exception or cancellation.
|
||||
*/
|
||||
@UnstableApi
|
||||
suspend fun Player.listen(onEvents: Player.(Events) -> Unit): Nothing {
|
||||
if (Looper.myLooper() == applicationLooper) {
|
||||
listenImpl(onEvents)
|
@ -13,14 +13,12 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package androidx.media3.demo.compose
|
||||
package androidx.media3.common
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.HandlerThread
|
||||
import android.os.Looper
|
||||
import androidx.media3.common.ForwardingPlayer
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.exoplayer.ExoPlayer
|
||||
import androidx.media3.test.utils.TestExoPlayerBuilder
|
||||
import androidx.test.core.app.ApplicationProvider
|
Loading…
x
Reference in New Issue
Block a user