mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
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.content.Intent
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import androidx.annotation.OptIn
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.media3.common.AudioAttributes
|
import androidx.media3.common.AudioAttributes
|
||||||
import androidx.media3.common.MediaItem
|
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.datasource.DataSourceBitmapLoader
|
||||||
import androidx.media3.exoplayer.ExoPlayer
|
import androidx.media3.exoplayer.ExoPlayer
|
||||||
import androidx.media3.session.*
|
import androidx.media3.session.*
|
||||||
@ -58,6 +59,7 @@ class PlaybackService : MediaLibraryService() {
|
|||||||
private val immutableFlag = if (Build.VERSION.SDK_INT >= 23) FLAG_IMMUTABLE else 0
|
private val immutableFlag = if (Build.VERSION.SDK_INT >= 23) FLAG_IMMUTABLE else 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(UnstableApi::class) // MediaSessionService.setListener
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
customCommands =
|
customCommands =
|
||||||
@ -83,6 +85,9 @@ class PlaybackService : MediaLibraryService() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MediaSession.setSessionActivity
|
||||||
|
// MediaSessionService.clearListener
|
||||||
|
@OptIn(UnstableApi::class)
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
mediaLibrarySession.setSessionActivity(getBackStackedActivity())
|
mediaLibrarySession.setSessionActivity(getBackStackedActivity())
|
||||||
mediaLibrarySession.release()
|
mediaLibrarySession.release()
|
||||||
@ -93,6 +98,9 @@ class PlaybackService : MediaLibraryService() {
|
|||||||
|
|
||||||
private inner class CustomMediaLibrarySessionCallback : MediaLibrarySession.Callback {
|
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 {
|
override fun onConnect(session: MediaSession, controller: ControllerInfo): ConnectionResult {
|
||||||
val availableSessionCommands =
|
val availableSessionCommands =
|
||||||
ConnectionResult.DEFAULT_SESSION_AND_LIBRARY_COMMANDS.buildUpon()
|
ConnectionResult.DEFAULT_SESSION_AND_LIBRARY_COMMANDS.buildUpon()
|
||||||
@ -220,6 +228,11 @@ class PlaybackService : MediaLibraryService() {
|
|||||||
.build()
|
.build()
|
||||||
MediaItemTree.initialize(assets)
|
MediaItemTree.initialize(assets)
|
||||||
|
|
||||||
|
// MediaLibrarySession.Builder.setCustomLayout
|
||||||
|
// MediaLibrarySession.Builder.setBitmapLoader
|
||||||
|
// CacheBitmapLoader
|
||||||
|
// DataSourceBitmapLoader
|
||||||
|
@OptIn(UnstableApi::class)
|
||||||
mediaLibrarySession =
|
mediaLibrarySession =
|
||||||
MediaLibrarySession.Builder(this, player, librarySessionCallback)
|
MediaLibrarySession.Builder(this, player, librarySessionCallback)
|
||||||
.setSessionActivity(getSingleTopActivity())
|
.setSessionActivity(getSingleTopActivity())
|
||||||
@ -263,6 +276,7 @@ class PlaybackService : MediaLibraryService() {
|
|||||||
/* Do nothing. */
|
/* Do nothing. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(UnstableApi::class) // MediaSessionService.Listener
|
||||||
private inner class MediaSessionServiceListener : Listener {
|
private inner class MediaSessionServiceListener : Listener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -294,7 +308,10 @@ class PlaybackService : MediaLibraryService() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun ensureNotificationChannel(notificationManagerCompat: NotificationManagerCompat) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.ImageView
|
|
||||||
import android.widget.ListView
|
import android.widget.ListView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.annotation.OptIn
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.media3.common.C.TRACK_TYPE_TEXT
|
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.MediaMetadata
|
||||||
import androidx.media3.common.Player
|
import androidx.media3.common.Player
|
||||||
import androidx.media3.common.Tracks
|
import androidx.media3.common.Tracks
|
||||||
|
import androidx.media3.common.util.UnstableApi
|
||||||
import androidx.media3.session.MediaController
|
import androidx.media3.session.MediaController
|
||||||
import androidx.media3.session.SessionToken
|
import androidx.media3.session.SessionToken
|
||||||
import androidx.media3.ui.PlayerView
|
import androidx.media3.ui.PlayerView
|
||||||
@ -63,6 +64,7 @@ class PlayerActivity : AppCompatActivity() {
|
|||||||
val controller = this.controller ?: return@run
|
val controller = this.controller ?: return@run
|
||||||
if (controller.currentMediaItemIndex == position) {
|
if (controller.currentMediaItemIndex == position) {
|
||||||
controller.playWhenReady = !controller.playWhenReady
|
controller.playWhenReady = !controller.playWhenReady
|
||||||
|
@OptIn(UnstableApi::class) // PlayerView.hideController
|
||||||
if (controller.playWhenReady) {
|
if (controller.playWhenReady) {
|
||||||
playerView.hideController()
|
playerView.hideController()
|
||||||
}
|
}
|
||||||
@ -99,6 +101,7 @@ class PlayerActivity : AppCompatActivity() {
|
|||||||
MediaController.releaseFuture(controllerFuture)
|
MediaController.releaseFuture(controllerFuture)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(UnstableApi::class) // PlayerView.setShowSubtitleButton
|
||||||
private fun setController() {
|
private fun setController() {
|
||||||
val controller = this.controller ?: return
|
val controller = this.controller ?: return
|
||||||
|
|
||||||
|
2
lint.xml
2
lint.xml
@ -21,8 +21,6 @@
|
|||||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
||||||
<ignore path='demos/gl/'
|
<ignore path='demos/gl/'
|
||||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
||||||
<ignore path='demos/session/'
|
|
||||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
|
||||||
<ignore path='demos/surface/'
|
<ignore path='demos/surface/'
|
||||||
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />
|
||||||
<ignore path='demos/transformer/'
|
<ignore path='demos/transformer/'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user