Android-通过语音来操作微信

背景: 开车的时候不能去使用微信,如果有很重要的信息需要及时回复就需要等停车。基于上面需要,在车载系统上实现通过语音来操作微信和微信来消息时播报出来。
软件整体架构图如下:

主要模块介绍:
基于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, 支持通过语音去操作微信和将微信收到文本信息播报出来。





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Android仿微信语音通话的效果,你可以按照以下步骤进行操作: 1. 首先,在styles.xml文件中定义一个自定义的对话框主题,可以参考引用\[1\]中的代码。这个主题可以设置对话框的背景透明、无边框、浮现在activity之上以及背景模糊显示等效果。 2. 在strings.xml文件中定义三个字符串资源,分别表示正常录音状态、录音中状态和取消发送状态。可以参考引用\[2\]中的代码。 3. 在布局文件中创建一个用于显示语音通话的界面,可以使用一个ImageView显示语音图标,一个TextView显示录音状态,以及一个Button用于开始和结束录音。 4. 在Activity中,根据用户的操作来改变TextView的文本内容,以及根据录音状态来改变ImageView的图标。 5. 使用MediaRecorder类来实现录音功能,可以在Button的点击事件中开始和结束录音。 6. 使用AudioManager类来控制音频的播放和停止,可以在Activity的生命周期方法中进行相应的操作。 通过以上步骤,你可以实现一个仿微信语音通话的效果。记得根据你的具体需求进行适当的修改和调整。 #### 引用[.reference_title] - *1* *2* [Android 仿微信实现语音聊天功能](https://blog.csdn.net/lhk147852369/article/details/78658055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值