Android黑科技之微信语音助手-长辈关怀利器

news/2024/7/24 3:59:13 标签: android, hacks, kotlin, 移动开发

前段时间在跟一个长辈交流过程中发现他不识字。但是能听懂普通话。虽然能正常使用微信进行语音聊天。但是文字认不出来,朋友圈也只能看图片。这无疑少了许多乐趣。而且通过进一步沟通了解到如果是工作日有什么事找子女咨询,因为在上班子女也不方便使用语音进行回复。这无疑加大了沟通障碍。于是我就开发了这款App供他使用,方便将微信聊天的文字和朋友圈的文字转换成语音播出。现在把App开源出来,希望能帮到更多的有类似困扰的长辈。

[源码地址](voice-assiatant-1.0.0.zip (访问密码: 1626)
[App下载地址](voice-assissant-1.0.1-20210105210844.apk (访问密码: 1626)

  • 由于App使用了无障碍服务所以首先要开启App的无障碍服务权限
    在这里插入图片描述
  • 然后开启App后台弹出界面权限

重要因为Android高版本无界面无法读取剪切板的数据,后台弹出界面是为了获取读取刚刚复制的数据进行播报

在这里插入图片描述

  • 以上必要权限设置完成后打开App首页点击初始化语音引擎待弹出引擎初始化成功后。即可开始使用。

在这里插入图片描述

  • 使用方式很简单在微信窗口复制想要播报的文字即可
    在这里插入图片描述

App实现的核心原理就是当在使用微信时读取剪切板复制的信息然后使用语音引擎播放。

下面的核心代码实现

kotlin">//检测到微信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)
            }           
        }      
    }
kotlin">//获取到剪切板第一条数据后播报
 object :Handler(Looper.getMainLooper()){}.postDelayed({
           SpeakUtil.speakFirstClipData()
        },500)

http://www.niftyadmin.cn/n/1361556.html

相关文章

线程队列queue

队列queue 队列用于线程之间安全的信息交换队列和列表的区别:队列里的信息get()后就没了,而列表获取数据则是copy,原列表里的值还在使用前先实例化队列 q queue.Queue(maxsize0)#先入先出,默认队列大小无限制q queue.LifoQueue(…

TestNG+Excel+(HTTP+JSON) 简单接口测试

说明: 1.使用Exce作为数据存放地; 2.使用TestNG的Datarprovide 做数据供应; 3.不足的地方没有指定明确的result_code , error_code , ERROR_MSG ,如果知道明确规定error_code就可以直接用error_code来作为测试结果; 4.…

JAVA---用户界面技术

用户界面对象: Button(按钮)、Checkbox(复选框)、Choice(组合框)、Label(标签)、List(列表)、Scrollbar(滚动条)、TextAre…

CS Academy Set Subtraction

题目链接:https://csacademy.com/contest/round-46/task/set-subtraction/ 题目大意:给出一个N个数的序列A,将A中每个元素减去X之后我们能够得到一个新序列B。先给出A,B混合的序列C(2*N个元素),求X和原序列…

如何安装多个jdk

1.首先去官网下载不同版本的jdk 下载地址:http://www.oracle.com/technetwork/java/javase/archive-139210.html 2.下载后我的安装路径是 D:\Java\jdk1.6.0_45D:\Java\jdk1.7.0_80D:\Java\jdk1.8.0_144 3.设置三个不同的JAVA_HOME环境变量 而JAVA_HOME则设置为你想要…

.NET DBHelper 类

app.Config ↓ <?xml version"1.0" encoding"utf-8" ?> <configuration> <startup> <supportedRuntime version"v4.0" sku".NETFramework,Versionv4.0"/> </startup> <connectionStrings>…

算法复习——trie树(poj2001)

题目&#xff1a; 题目描述 给出 n 个单词&#xff08;1<n<1000&#xff09;&#xff0c;求出每个单词的非公共前缀&#xff0c;如果没有&#xff0c;则输出自己。 输入格式 输入 N 个单词&#xff0c;每行一个&#xff0c;每个单词都是由 1&#xff5e;20 个小写字母构成…

厉害了!20年【科比NBA】生涯|数据分析

使用工具:Ipython notebook 用到的库:Pandas,Matplotlib 1.数据来源 本次用到的数据来源于https://www.basketball-reference.com/players/b/bryanko01.html&#xff0c;其中可以选择多种形式&#xff0c;我选的是CSV格式&#xff0c;方便后面的数据分析,看看数据长什么样呢…