Android学习之TTS踩坑笔记
•前言
最近在做一款英文词典的 APP,做到语音模块的时候,我裂开,从网上搜索了各种博客,各种瞎捣鼓,模拟器就是不发音;
辗转反侧数日,终于让我找到解决之法,接下来就本次测试列出一些需要(必须)解决的问题:
- 模拟器如何联网
- 模拟器如何安装 TTS 引擎?
- 模拟器如何安装已下载好的 apk 文件?
接下来就这些问题做出一一解答;
•准备工作
我在 Genymotion 上下载了两个模拟器,分别为 Android 7.0 , Android 8.0 , Android 9.0;
准备好如下文件,【】;
•模拟器如何联网?
打开【Oracle VM VirtualBox】,选中 Android 7.0 设备,点击【设置】;
来到如下界面,选中【网络】->【网卡 1】,点击【高级】,将【混杂模式】更改为全部允许;
接着打开【网卡 2】,将连接方式更改为【NAT】;
重启模拟器,打开浏览器输入 www.baidu.com 来检查网络连接情况;
虽然 WIFI 上有个的感叹号,但丝毫不影响模拟器联网;
Android 8.0 , Android 9.0 联网同上;
问题一解决 √;
•模拟器如何安装 apk?
将下载好的【qq.apk】以拖拽的方式安装到 Android 7.0 上;
你会发现,他会给你报错;
意思是说 Genymotion 是基于 X86 的,不支持 ARM 架构,所以基于 ARM 架构 的应用就无法安装。
解决方案
将【ARM_Translation_low_version.zip】拖拽到 Android 7.0 模拟器中;
如果出现如下界面:
恭喜你,安装成功,接下需要你重启该模拟器;
如果没有出现该界面,那么,就需要检查一下文件路径以及文件名:
- 文件路径不能包含中文,参考一下我的路径 E:\TTS\ARM_Translation_low_version.zip
- 文件名不能包含空格,比如把【ARM_Translation_low_version.zip】改成了【ARM_Translation low_version.zip】,这些操作都会导致拖放失败
此时,再次将【qq.apk】拖拽到 Android 7.0 上,拖放前一定要记得重启模拟器;
Android 8.0 , Android 9.0 模拟器安装 apk 方式同上,只需要将【ARM_Translation】更改为对应的【ARM】即可;
问题解决√;
•模拟器如何安装 TTS 引擎?
解决了第二个问题后,这个岂不变得 so easy~
将【GoogleTTS.apk】拖放到模拟器上,然后打开【设置】->【无障碍】->【文字转语音(TTS)输出】,
并将【首选引擎】更改为 Google 文字转语音引擎;
接下来就是检验阶段,新建一个 TestTTS 项目,添加如下代码;
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <EditText
android:id="@+id/main_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="input something"/> <Button
android:id="@+id/main_btn_speech"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发音" /> </LinearLayout>MainActivity.java
public class MainActivity extends AppCompatActivity { private TextToSpeech textToSpeech;
private EditText editText;
private Button mBtnSpeech; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); editText = findViewById(R.id.main_text);
mBtnSpeech = findViewById(R.id.main_btn_speech); textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) { //设置发音的语言
int result = textToSpeech.setLanguage(Locale.ENGLISH); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Toast.makeText(MainActivity.this, "发音失败", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "发音成功", Toast.LENGTH_LONG).show();
}
}
}
}); mBtnSpeech.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
textToSpeech.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
});
}
}编译运行,自己本地测试一下,我这是可行的。
由于我找的这个【GoogleTTS.apk】支持的 Android 版本需要 ≥ 8.0,所以,要测试的话,还是要在 Android 8.0 或 Android 9.0 上测试。
•写在最后
兜兜转转捣鼓了好几天,还好成功了,感谢大佬们写的博客,助我一臂之力;
最新文章
- 深度解析C语言int与unsigned int
- hibernate(九) 二级缓存和事务级别详讲
- mysqldump导出不包含存储过程
- Application.DoEvents():概念
- KMP模式匹配_2
- hdu4418(概率dp + 高斯消元)
- DataSnap如何监控Tcp/IP客户端的连接情况
- php.ini详解
- cmd for 用法
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
- Windows10 图标重建
- Percona Toolkit 2.2.19 is now available
- VUE 图片验证码
- Android - 简单listview
- org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException
- ubuntu默认壁纸位置
- .net core 3.0中可以使用gRPC了
- csu oj 1342: Double
- springboot 增加过滤器方法
- 自己写的开源MVC-easyMVC分享
热门文章
- es6 模块和commonjs规范模块的区别
- java重写toString()方法
- 2.掌握numpy数组
- GRU算法原理
- C++覆盖,隐藏,重载
- 打造云原生大型分布式监控系统系列文章-腾讯工程师roc
- 什么是 Ansible - 使用 Ansible 进行配置管理
- 【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
- 「新特性」Spring Boot 全局懒加载机制了解一下
- get_started_3dsctf_2016-Pwn