您的位置:首页 > 移动开发 > 微信开发

Android-通过语音来操作微信

2018-02-07 13:47 295 查看
背景: 开车的时候不能去使用微信,如果有很重要的信息需要及时回复就需要等停车。基于上面需要,在车载系统上实现通过语音来操作微信和微信来消息时播报出来。

软件整体架构图如下:



主要模块介绍:

基于AccessibilityService辅助服务实现操作微信

通过OCR解析微信信息

通过VoiceAdapter语音转操作功能(比如:微信发送"haha"给小王)和微信信息播报

TalkingAssistant实现核心逻辑, 管理VoiceAdapter和Wechat的交互

实现开发中碰到以下问题:

1. 微信对辅助服务做了防御,通过辅助服务读取微信某些view时,微信会自动崩溃。

解决方法:参考之前文章

2. 微信聊天内容框是用的自定义view实现,无法通过辅助服务获取到聊天内容。

解决方法:之前做安全沙箱,宿主是显示插件的notification是将notification的view转换成bitmap再显示。此处参考上面方法,通过将自定义view转换成bitmap,然后使用OCR来将图片转文字。

ps:辅助服务不支持dump view action,需要修改辅助服务源码来支持。

3.微信默认设置时竖屏

解决方法:需要在PMS解析package时,针对微信做修改。屏蔽微信在activity里调用setRequestOrientation.

4.如何保证微信更新后,功能继续work?解决方法:辅助服务是通过view id来实现对特定view进行操作的,微信更新时如果出现view id变化则同步更新view id给TalkingAssistant。如果不仅仅是view id变化则需要同时更新解析策略(类似热修复方法,从服务器push最新策略代码)。 

结果:此项目demo运行ok, 支持通过语音去操作微信和将微信收到文本信息播报出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 辅助服务
相关文章推荐