android 悬浮窗踩坑经历

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

前言

最近公司产品想做一个语音通话需求,需要使用到悬浮窗显示通话,我内心窃喜,心想这不是很简单,这玩意网上肯定很多现成的,随便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)
                    .
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值