Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android 13 黑屏音乐过一会就会停止播放 #44

Closed
643063150 opened this issue Mar 14, 2023 · 15 comments
Closed

Android 13 黑屏音乐过一会就会停止播放 #44

643063150 opened this issue Mar 14, 2023 · 15 comments

Comments

@643063150
Copy link

手机型号:三星s20国行
系统 Android 13
表现:app在后台时,黑屏一会音乐停止,重新打开app会恢复 app不在后台是只需亮屏就能恢复播放
点击清理消息时还会把音乐的Notification清理掉。。 但是在媒体管理里能看到正在播放的歌曲

@643063150
Copy link
Author

加了前台服务权限后 消息清理不掉了 不过黑屏音乐停止依然存在

@643063150
Copy link
Author

黑屏停止时exoplayer的问题,用mMediaPlayer没有这个问题 可能是setWakeMode有问题吧 加了WAKE_LOCK权限也没用,但是黑屏后不会自动切歌的问题依然存在,给的demo也存在这个问题

@jrfeng
Copy link
Owner

jrfeng commented Mar 15, 2023

看起来像是三星限制了 app 的后台运行

@643063150
Copy link
Author

看起来像是三星限制了 app 的后台运行

是的,我写了一个线程池放到mainactivity 轮询服务连接状态,同时监听了PlayPosition 几十秒后 都停止了工作

@643063150
Copy link
Author

看起来像是三星限制了 app 的后台运行

能问下这个自动切歌实在哪里写的吗,找了半天没找到 我试了下加PowerManager后 我写的线程不会被顶了 感觉在切歌的地方加一个唤醒锁应该也能解决

@jrfeng
Copy link
Owner

jrfeng commented Mar 16, 2023

唤醒锁确实有个 BUG,我会修复的

@jrfeng
Copy link
Owner

jrfeng commented Mar 16, 2023

已经尝试修复了,可以测试一下

@643063150
Copy link
Author

已经尝试修复了,可以测试一下
还是还不行 奇怪的是谷歌用MediaSession框架写的音乐实例没有这个问题,而且仅仅加了WAKE_LOCK权限,没有用到线程锁,snow项目的表现是虽然不能自动切歌了但是可以手动切歌 我是试了下三星s9 系统为Android10 没有这个问题 ,我debug了一下 发现歌曲播放完的监听是能获取到的,但是skipToNext()方法里的mLoadingPlaylist值在锁屏后系统似乎无法获取到当前的值 就一直卡在这里,开屏重新打开app后瞬间获取到mLoadingPlaylist的值然后跳转到下一曲 具体过程如下:
caogous
方法释放后并没有继续走下去,开屏打开app后才继续走了下去

@643063150
Copy link
Author

另外,mLoadingPlaylist在调试中最终的结果是false

@643063150
Copy link
Author

已经尝试修复了,可以测试一下
屏蔽此段方法后锁屏自动切歌恢复正常,应该是这个值锁屏后无法获取了
if (mLoadingPlaylist) { mPlaylistLoadedAction = new Runnable() { @Override public void run() { skipToNext(); } }; return; }
image

@643063150
Copy link
Author

已经尝试修复了,可以测试一下

🤣后台播放搞定了 又突然出现一个很搞得问题
caogous
通知栏得上一曲不见了,卸载重装都没用 突然出现的 原因是啥都不知道🤣

@jrfeng
Copy link
Owner

jrfeng commented Mar 17, 2023

覆盖 MediaNotificationView 类的 onBuildMediaStyle() 方法,并在该方法则调用 MediaStylesetShowActionsInCompactView(int[] actions) 方法进行配置。

@643063150
Copy link
Author

覆盖 MediaNotificationView 类的 onBuildMediaStyle() 方法,并在该方法则调用 MediaStylesetShowActionsInCompactView(int[] actions) 方法进行配置。

应该是三星独有的bug s9上会这样 s20又不会这样 很多品牌的手机都试了 后台播放 通知栏都是正常的 就刚好我用的三星 就遇到了🤣 不过那个后台播放确实会被mLoadingPlaylist卡住 屏蔽判断后就正常

@jrfeng
Copy link
Owner

jrfeng commented Mar 17, 2023

这不是 BUG,按照自己需求配置就行。第三方厂商和 Google 经常修改媒体播放器通知的样式,不同手机上外观有些许差别很正常。

@643063150
Copy link
Author

这不是 BUG,按照自己需求配置就行。第三方厂商和 Google 经常修改媒体播放器通知的样式,不同手机上外观有些许差别很正常。

怎么说呢 前两天还好好的 甚至上午还好好的 有上一曲的按钮 下午突然就没了 关键是我写了两套 一个有上一曲一个没有 就是感觉很神奇 不过也懒得找原因了 对使用几乎没啥影响

@jrfeng jrfeng closed this as completed Sep 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants