Enable @UnstableApi lint in session demo app and add needed @OptIn

PiperOrigin-RevId: 556779020
This commit is contained in:
ibaker 2023-08-14 15:11:18 +01:00 committed by oceanjules
parent 08067eff14
commit a48b99214e
3 changed files with 23 additions and 5 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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/'