Android 远程协助(亲情助手||投屏||远程演示)实现思路和简单实现
市面上的远程协助
亲情助手和远程协助相关的软件市面上已经有很多手机厂商做了,例如锤子的亲情助手和华为的亲情助手都可以远程操作。也就是在一台手机上控制另外一台手机,以前在没有root权限的情况下要实现屏幕的共享和操作是很难的。不过现在不一样了,Google开放了很多接口,包括屏幕录制权限,无障碍服务对手机的控制等。其实市面上已经有很多开源的代码实现了相关功能,我也会在前人的基础上进行远程协助的开发工作。参考会在相关功能中说明。
有图有真相
实现思路和相关技术
实现思路如图,我的想法是吧远程协助分为两部分。第一部分是屏幕共享,其实就是类似于现在的直播技术,例如斗鱼主播要用手机玩刺激战场然后进行直播,就要进行录屏然后把屏幕数据推到服务器由服务器再分发给观众。第二部分就是远程操作,我们假想观众在直播的时候点击视频的相关位置就可以操控主播的手机,这样我们的远程协助不就实现了吗?哈哈,想想还有一点小激动呢。
接着看看这个过程中个相关接口和技术。
1.屏幕录制技术,安卓5.0之后Google开放了屏幕相关的接口,MediaProjection,使用这个接口我们就可以获取屏幕的信息,之前我也有过简单的分享。
MediaProjection实现截图
MeidaProjection实现录屏
这两篇文章只是关于MediaProjection的基础学习,并不能实现推流,因为里面的ImageReader和MediaRecorder不能实现推流服务
写这篇文章的时候,我突然在应用宝里也发现了亲情助手,看到它要求安卓5.0及以上,不就是我们这个接口的运用吗?
2.推流技术,目前我知道的推流技术有FFmpeg,还有很多第三方的SDK,这个也是实现远程协助的重头戏,因为只有把流让另外一个手机接收展示才能接着实现以后的功能
这里我采用了@机智的马克思_的Socket通信简单的实现本地的视频流交互,当然了,我也会自己研究一下相关技术。
3.无障碍服务,无障碍服务功能是一代比一代强,在Android7.0之后Google彻底开放了无障碍服务,我们可以在屏幕上模拟手势操作,多指操作等。
AccessibilityService实现简单的模拟手势操作
网上也有一个这个方面做的非常好的开源代码Auto.js,博主准备参考它进行模拟手势操作。
4.远程协助,其实远程协助中还有一步比较重要的步骤就是获取操作者的手势,这里用到的技术其实就是View的绘制和手势分发的相关知识。
获取手势信息(一)单个手指
获取手势信息(二)多个手指
总结
其实在开发的过程中还有许多坑要踩,我也只是实现了一个简单的Demo。如果你真的想做,看完我给的文章应该就没什么大问题了。有什么问题欢迎评论。
更多推荐
所有评论(0)