目前主流的音视频App中,除了当用户正在使用时播放视频或音频,应用回到后台后音视频仍能继续播放的功能也很常见。本文简单介绍下如何使用Media3库实现在后台播放视频。
添加依赖
在app module下的build.gradle中添加代码,如下:
dependencies {
implementation("androidx.media3:media3-ui:1.1.0")
implementation("androidx.media3:media3-session:1.1.0")
implementation("androidx.media3:media3-exoplayer:1.1.0")
}
添加相关权限
在AndroidManifest
中添加前台服务权限,具体如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!--targetSdk34开始需要添加此权限-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
...
</manifest>
前台服务权限按理来说需要动态申请,但是在测试过程中,发现没有动态申请也能实现在后台播放视频的功能。
实现后台播放
自定义MediaSessionService
自定义ExamplePlaybackService
继承MediaSessionService
,代码如下:
class ExamplePlaybackService : MediaSessionService() {
private var exoPlayer: ExoPlayer? = null
private var mediaSession: MediaSession? = null
override fun onCreate() {
super.onCreate()
// 创建Exo