关于Android 悬浮窗问题以及仿网易云音乐底部播放控制栏实现

最近项目中需要做类似音乐播放在线功能,同时推出播放页面时,需要有个公共控制器,悬浮在所有页面,可点击回到播放页面,第一想法就是系统悬浮窗了,做的过程中陆续遇到几个问题:

1、悬浮窗在安卓7.0版本前,如果要躲过授权可以将悬浮窗的类型设置为toast类型,但是在更高版本,却是躲不过授权这个部分,然后还是老老实实写了申请授权的,

2、授权完成后,悬浮窗是可以正常显示的了,但是这个时候又遇到一个问题,产品的需求是只需要在应用内显示悬浮窗,好了,只能通过判断APP的状态是否处于前台运行还是后台运行,通过在APPLication中注册监听,监听所有activity的生命周期状态,在onresume以及onstop中另外加以判断是否处于前后台,如果是前台,则显示悬浮窗,如果是后台,则隐藏。这个时候发现,这个隐藏又几秒的延迟,回到桌面时,悬浮窗过一会才隐藏,,,,坑有没有,以为光明大道就在眼前了,结果不知道怎么解决问题了,后面因为看了网易云音乐的做法,发现每个页面都有控制栏,而且不需要授权,才想到有更好的办法

3、最后的办法就是,在BaseActivity中添加这个公共控件,再在onresume以及onpause中做判断业务就行了(当音乐播放中,显示此控件),这个也发现一个小小的问题,不知道是不是技术不到位的原因,播放音乐是用的Service,按关闭音乐播放,退出播放页面时调用stopService后,Service居然没有立即走销毁方法,导致MediaPlayer状态没有及时修改到,控件还是显示在前一个activity,最后还是在调用stopService前面使用了handler,修改BaseActivity判断条件中的MediaPlayer播放状态,,总是实现想要的效果了

特写此篇记录,有不好的地方,请指出生气


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值