前段时间在跟一个长辈交流过程中发现他不识字。但是能听懂普通话。虽然能正常使用微信进行语音聊天。但是文字认不出来,朋友圈也只能看图片。这无疑少了许多乐趣。而且通过进一步沟通了解到如果是工作日有什么事找子女咨询,因为在上班子女也不方便使用语音进行回复。这无疑加大了沟通障碍。于是我就开发了这款App供他使用,方便将微信聊天的文字和朋友圈的文字转换成语音播出。现在把App开源出来,希望能帮到更多的有类似困扰的长辈。
- 由于App使用了无障碍服务所以首先要开启App的无障碍服务权限
- 然后开启App后台弹出界面权限
重要因为Android高版本无界面无法读取剪切板的数据,后台弹出界面是为了获取读取刚刚复制的数据进行播报
- 以上必要权限设置完成后打开App首页点击初始化语音引擎待弹出引擎初始化成功后。即可开始使用。
- 使用方式很简单在微信窗口复制想要播报的文字即可
App实现的核心原理就是当在使用微信时读取剪切板复制的信息然后使用语音引擎播放。
下面的核心代码实现
//检测到微信App有复制行为后启动语音助手播报界面
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
if(event?.eventType == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED ){
Log.d(TAG, "onAccessibilityEvent:text: ${event.text}")
val rootNodeInfo = rootInActiveWindow
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 &&event.text.isNotEmpty()&&event.text[0].contains("已复制")) {
val intent = Intent(this,SpeakShowActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
applicationContext.startActivity(intent)
}
}
}
//获取到剪切板第一条数据后播报
object :Handler(Looper.getMainLooper()){}.postDelayed({
SpeakUtil.speakFirstClipData()
},500)