一、需求分析
- 来/去电时需要获取对方电话,接听电话时,开始录音【双方通话内容】,挂断时,结束录音,并保持录音文件到本地,最后上传到服务器。
- 当由于网络 ,服务器等其他原因,无法上传录音文件,需要记录未上传的文件,等网络良好的时候,继续上传文件。
- 电话录音上传服务保活
- 定期清理录音文件
注:在安卓6.0版本后第三方应用无法使用VOICE_CALL权限
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
二、技术点以及难点
-
基础技术点
文件存储
录音
监听通话状态以及记录
文件上传
高危权限申请
-
难点
服务/进程保活
设置自己应用为系统应用才能使用系统VOICE_CALL权限系统签名,屏蔽系统源码奥创手机系统,抢占了通话录音,导致自己实现通话录音时,提示被其他应用占用
三、解决方案
- 通话自动录音
启动一个service,监听用户手机通话状态,当检测到用户处于通话状态下,立即开始录音,通话结束后,停止录音,并保存文件。使用系统自带的电话自动录音功能。【打开方式:设置 -> 电话 ->通话录音 ->自动录音】
录音文件存放在「内置SD卡的MIUI/sound_recorder/call_rec」文件夹下
监听通话状态,当通话结束,去录音文件夹查找刚保存的录音问题,并上传到阿里云。当遇到某些原因,导致上传失败时,保存(使用Sqlite或者sp)失败文件路径。下次再次尝试上传。
定时删除录音文件或者上传成功后删除
- 进程保活
- Android手机在设置里面都一个辅助功能(个别手机也叫:无障碍),利用这个我们可以实现一些强大的功能,前提是用户开启我们的辅助功能,抢红包软件就是利用辅助功能实现的。
- 当用户清理后台的时候,要求service不可以被杀
- 设置成系统级别的服务
- 解决奥创手机系统
- 红米5plus刷机
- 使用官方红米 5 Plus稳定版
- 奇兔一键刷机
四、参考文档
- 录音
- 上传文件阿里云
3.进程保活