前言
最近公司产品想做一个语音通话需求,需要使用到悬浮窗显示通话,我内心窃喜,心想这不是很简单,这玩意网上肯定很多现成的,随便github找找就可以解决啦,然而才发现这趟踩坑经历才刚刚开始QAQ
准备工作
悬浮窗实现
本着网上有的就绝对不自己造轮子的想法,在github上找了一圈悬浮窗第三方库,发现大部分第三方库都是处于“年久失修”的状态,最后发现轮子哥的EasyWindow还是香喷喷的,不得不赞叹轮子哥真是android领域的一个真神,各种轮子而且一直维护着,issue基本解决
easyWindow
业务场景技术分析
在解决完悬浮窗的实现可以说算是解决了整个业务的一个大头的啦,下面的就是一些细节问题,然而就是这些细节问题非常的繁琐
- 悬浮窗权限的申请
我们都知道要想让悬浮窗悬浮在所有应用的上层必须要获得系统悬浮窗权限,他是一个特殊的权限
//首先要在清单文件中添加悬浮窗权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
//申请悬浮窗权限(这里我使用了blankj的工具类来请求权限)
private fun requestWindowPermission() {
if (PermissionUtils.isGrantedDrawOverlays()) {
createFloatWindow()
} else {
PermissionUtils.requestDrawOverlays(object : PermissionUtils.SimpleCallback {
override fun onGranted() {
createFloatWindow()
}
override fun onDenied() {
Toast.makeText(this@CallActivity, "请求悬浮窗权限失败", Toast.LENGTH_SHORT)
.

文章讲述了在Android平台上实现语音通话悬浮窗功能的过程中遇到的挑战,包括悬浮窗库的选择、权限申请、最小化不销毁活动以及处理不同Android版本的兼容性问题。作者分享了如何解决这些问题的代码和策略。
最低0.47元/天 解锁文章
1931

被折叠的 条评论
为什么被折叠?



