【发布时间】:2020-11-22 16:19:08
【问题描述】:
我想修改 ExoPlayer 演示以允许在屏幕锁定时继续播放音频(无论正在播放的媒体是音频还是视频,这都应该有效)。根据一些提示(例如1、2),这是我目前想到的:
https://github.com/google/ExoPlayer/compare/release-v2...sedubois:background-playback
这直接基于 ExoPlayer 演示代码,当前版本为 2.12.1。它添加“前台”权限,注册服务,并在该服务中创建通知(根据文档,后台播放需要此通知)。该服务在初始化播放器时启动。
我可以启动播放器,演示如下图所示,带有音频流。此时通知已正确创建,它显示播放器详细信息(标题、描述、进度条)和控制按钮(见下图),它们可以正常工作(我可以播放/暂停、从头开始并向后/向前跳过) .
但是,当我最小化应用程序或按电源按钮锁定屏幕时,播放仍然停止。完成这项工作的正确方法是什么?
【问题讨论】:
-
可能,它会在您的活动的 onStop/onPause 方法中停止播放。
-
谢谢@sdex,我应该在这些方法的if语句中检查
!player.isPlaying()吗?恢复的时候呢?如果我这样做,它允许在屏幕锁定时继续播放,但在解锁屏幕时,音频会跳回到屏幕锁定时的位置。 -
另外,如果我只是在 onPause/onStop 中添加一个检查
!player.isPlaying(),那么当点击返回按钮退出播放器时播放器不会停止,所以再次进入时它会崩溃。
标签: android android-notifications exoplayer exoplayer2.x foreground-service