Enable @UnstableApi
lint in session demo app and add needed @OptIn
PiperOrigin-RevId: 556779020
This commit is contained in:
parent
08067eff14
commit
a48b99214e
@ -24,11 +24,12 @@ import android.app.TaskStackBuilder
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.annotation.OptIn
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import androidx.media3.common.AudioAttributes
|
||||
import androidx.media3.common.MediaItem
|
||||
import androidx.media3.common.util.Util
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
import androidx.media3.datasource.DataSourceBitmapLoader
|
||||
import androidx.media3.exoplayer.ExoPlayer
|
||||
import androidx.media3.session.*
|
||||
@ -58,6 +59,7 @@ class PlaybackService : MediaLibraryService() {
|
||||
private val immutableFlag = if (Build.VERSION.SDK_INT >= 23) FLAG_IMMUTABLE else 0
|
||||
}
|
||||
|
||||
@OptIn(UnstableApi::class) // MediaSessionService.setListener
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
customCommands =
|
||||
@ -83,6 +85,9 @@ class PlaybackService : MediaLibraryService() {
|
||||
}
|
||||
}
|
||||
|
||||
// MediaSession.setSessionActivity
|
||||
// MediaSessionService.clearListener
|
||||
@OptIn(UnstableApi::class)
|
||||
override fun onDestroy() {
|
||||
mediaLibrarySession.setSessionActivity(getBackStackedActivity())
|
||||
mediaLibrarySession.release()
|
||||
@ -93,6 +98,9 @@ class PlaybackService : MediaLibraryService() {
|
||||
|
||||
private inner class CustomMediaLibrarySessionCallback : MediaLibrarySession.Callback {
|
||||
|
||||
// ConnectionResult.DEFAULT_SESSION_AND_LIBRARY_COMMANDS
|
||||
// ConnectionResult.AcceptedResultBuilder
|
||||
@OptIn(UnstableApi::class)
|
||||
override fun onConnect(session: MediaSession, controller: ControllerInfo): ConnectionResult {
|
||||
val availableSessionCommands =
|
||||
ConnectionResult.DEFAULT_SESSION_AND_LIBRARY_COMMANDS.buildUpon()
|
||||
@ -220,6 +228,11 @@ class PlaybackService : MediaLibraryService() {
|
||||
.build()
|
||||
MediaItemTree.initialize(assets)
|
||||
|
||||
// MediaLibrarySession.Builder.setCustomLayout
|
||||
// MediaLibrarySession.Builder.setBitmapLoader
|
||||
// CacheBitmapLoader
|
||||
// DataSourceBitmapLoader
|
||||
@OptIn(UnstableApi::class)
|
||||
mediaLibrarySession =
|
||||
MediaLibrarySession.Builder(this, player, librarySessionCallback)
|
||||
.setSessionActivity(getSingleTopActivity())
|
||||
@ -263,6 +276,7 @@ class PlaybackService : MediaLibraryService() {
|
||||
/* Do nothing. */
|
||||
}
|
||||
|
||||
@OptIn(UnstableApi::class) // MediaSessionService.Listener
|
||||
private inner class MediaSessionServiceListener : Listener {
|
||||
|
||||
/**
|
||||
@ -294,7 +308,10 @@ class PlaybackService : MediaLibraryService() {
|
||||
}
|
||||
|
||||
private fun ensureNotificationChannel(notificationManagerCompat: NotificationManagerCompat) {
|
||||
if (Util.SDK_INT < 26 || notificationManagerCompat.getNotificationChannel(CHANNEL_ID) != null) {
|
||||
if (
|
||||
Build.VERSION.SDK_INT < 26 ||
|
||||
notificationManagerCompat.getNotificationChannel(CHANNEL_ID) != null
|
||||
) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -23,9 +23,9 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.Button
|
||||
import android.widget.ImageView
|
||||
import android.widget.ListView
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.OptIn
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.media3.common.C.TRACK_TYPE_TEXT
|
||||
@ -33,6 +33,7 @@ import androidx.media3.common.MediaItem
|
||||
import androidx.media3.common.MediaMetadata
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.common.Tracks
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
import androidx.media3.session.MediaController
|
||||
import androidx.media3.session.SessionToken
|
||||
import androidx.media3.ui.PlayerView
|
||||
@ -63,6 +64,7 @@ class PlayerActivity : AppCompatActivity() {
|
||||
val controller = this.controller ?: return@run
|
||||
if (controller.currentMediaItemIndex == position) {
|
||||
controller.playWhenReady = !controller.playWhenReady
|
||||
@OptIn(UnstableApi::class) // PlayerView.hideController
|
||||
if (controller.playWhenReady) {
|
||||
playerView.hideController()
|
||||
}
|
||||
@ -99,6 +101,7 @@ class PlayerActivity : AppCompatActivity() {
|
||||
MediaController.releaseFuture(controllerFuture)
|
||||
}
|
||||
|
||||
@OptIn(UnstableApi::class) // PlayerView.setShowSubtitleButton
|
||||
private fun setController() {
|
||||
val controller = this.controller ?: return
|
||||
|
||||
|
2
lint.xml
2
lint.xml
@ -21,8 +21,6 @@
|
||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
||||
<ignore path='demos/gl/'
|
||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
||||
<ignore path='demos/session/'
|
||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
||||
<ignore path='demos/surface/'
|
||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
||||
<ignore path='demos/transformer/'
|
||||
|
Loading…
x
Reference in New Issue
Block a user