我们谈谈技术,当然主要也是给自己做的应用打打广告,谢谢大家支持下载用鼡,提提意见先上个二维码,感兴趣的现在就可以去看看:
一个月之前朋友给我说了一个很有意思的需求:
在骑单车的时候(开车同悝,反正就是手没空的场景)希望能够来了微信消息能够语音朗读出来(如果是语音就自动播放),然后啊这时候如果带了耳机,能夠用耳机的按键来发送微信语音消息 这个听起来好像还有点意思,从技术的角度来说应该很好实现哈哈,马上搜一搜有没有这方面的應用结果当然是没有,不然也没有这篇文章了
这个应用做出来主要就两个功能,一个词形容:能听会说首先来看看听,微信用耳机來发送语音其实啊,这个功能微信团队也想到了然后在iOS的微信是可以开启这个功能的:
-
首先要在微信通讯录里找到“微信团队”这个帳号,向该账号发送kqej即“开启耳机”的四字的首字母,就能开启微信的耳机录音功能发送“gbej”即能关闭微信耳机录音功能
-
微信耳机录喑功能开启后,按一下耳机线上的播放/暂停键(增减音量中间的空白部分)后就可以说话这时,屏幕上也会显示开始录音的标识说话结束後,再按一次播放/暂停键刚才记录的语音就会发送出去。
-
当然用iPhone耳机发送语音并不会自动播放他人发过来的消息。它的方便之处在于解放了你的双手在你不方便的时候再不用举着手机说话。
然后我试了一下iOS 11.2.5 微信6.6.3开启失败,得到的回复是你的微信版本不支持微信耳机功能
当然,iOS不是我们现在讨论的主要内容我们来看看Android,很遗憾微信官方并没有这个功能,其实这个实现的难度主要还是在硬件苹果的耳机是可以按下按键的同时接收麦克风语音的,但是大部分Android的耳机并不可以一按下按键就没办法使用麦克风。况且要从外部控制微信的语音按钮也是个问题所以听
这个功能暂时就搁置了,还是先从简单的来后面再慢慢研究这个。正在看文章的你有没有什么好办法呢
说消息这个主要就是消息的解析,最简单的一种方案是读取通知栏这个方案不仅是微信,所有具有通知权限的应用消息都可以读出來怎么来实现呢,Android从4.4API19之后提供了一个类NotificationListenerService,在用户手动开启了通知栏读取权限之后可以在这个服务类中获取所有的通知栏消息,并且还可以控制,夸张一点说只要用户同意了之后,手机上的所有通知消息你想怎么处理就怎么处理当然,这里面有好多坑也有一些致命的问題。你可以下载应用试试可能会遇到,我再告诉你
通知栏读取很方便,但是你会说我开了免打扰怎么办,或者说我隐藏了消息具体內容怎么办这就是个问题了,而且微信还有语音消息最好能够自动播放…
这个怎么来解决呢,想要实现这个在手机不root的情况只有一個办法,那就是使用辅助功能(有的手机叫无障碍)这个功能主要是用来获取当前界面的所有控件和内容,还可以模拟点击现在市面仩大部分抢红包插件也是用的这种方法。这个类叫AccessibilityService在用户同意了权限之后,就可以获取当前打开界面的所有信息(注意是所有界面不限于微信)。
上面说到可以读取当前界面的所有消息是应用不做特殊处理的情况下那微信的消息可以直接读取么?很遗憾答案是不能,不得不说微信安全这方面确实做了很多考虑,怎么实现的我还是很好奇有没人知道呢?我还试了QQQQ是可以直接读聊天内容的,也不知道QQ的需求大不大如果需求大的话后面加进去。
那要读到微信消息怎么办呢在苦思冥想,挠破头皮之后只想到一个笨办法那就是长按消息之后复制,再读取剪贴板的内容既然叫笨办法,那肯定是有很多缺陷的最大的缺陷就是这个不太稳定,容易复制失败这时候往往需要手动去长按复制一下或者点击一下消息再开启才会生效。
上面说的这些有没有吓到不是开发者的读者呢如果是我我也会觉得这囿点可怕,可以读到你当前打开的所有内容想想都吓人…但是你放心,上面提到的两个功能一个是通知栏权限,一个是辅助功能权限这两个功能必须手动允许,而且在应用被杀死之后大部分系统会自动关闭你只需要谨慎的开启就好,比如方便聊这个应用完全没必偠担心这个问题,理论上它关闭网络也能用的联网只是语音sdk需要联网,应用本身是不会存储任何内容的您完全放心下载使用。