Android TextToSpeech简单使用
文章目录
- Android TextToSpeech简单使用
- 前言
- 一、TTS是什么?
- 二、使用步骤
- 1.赋予相关权限
- 2.初始化TTS
- 3.使用
- 总结
前言
最近项目需要文字朗读内容,看了官方文档,简单记录一下
一、TTS是什么?
TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。
二、使用步骤
1.赋予相关权限
在AndroidManifest.xml中声明权限:
<!--录音权限-->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
在Android6.0后需要动态授权可以自己通过代码授权
/*** 检查权限* @param context 上下文* @param permission 权限列表* @return 返回值用来判断是否拥有权限,PackageManager.PERMISSION_GRANTED表示拥有*/public static int checkSelfPermission(@NonNull android.content.Context context,@NonNull String permission);/***申请权限* @param activity 活动对象* @param permissions 权限列表* @param requestCode 请求码*/public static void requestPermissions(@NonNull android.app.Activity activity,@NonNull String[] permissions,@IntRange(from = 0L) int requestCode);/*** 响应授权* 这里不管用户是否拒绝,都进入首页,不再重复申请权限*/@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode) {case 你的请求码:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED ){//do sth}else {Toast.makeText(MainActivity.this, "您取消了授权,如果您想要授权的话请到 设置-应用 手动授予相应权限", Toast.LENGTH_SHORT).show();}}
2.初始化TTS
准备工作做好之后,我们正式开始:
TextToSpeech speech = new TextToSpeech(context, new TextToSpeech.OnInitListener() {@Overridepublic void onInit(int status) {if (status == TextToSpeech.SUCCESS) {//初始化成功int result = speech.setLanguage(Locale.CHINESE);//设置语言,返回值用来判断设置是否成功if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {//表示缺少语言数据或者不支持该语言。} else if (result == TextToSpeech.LANG_AVAILABLE) {//初始化成功之后才可以播放文字//否则会提示“speak failed: not bound to tts engine//TextToSpeech.QUEUE_ADD会将加入队列的待播报文字按顺序播放//TextToSpeech.QUEUE_FLUSH会替换原有文字}}}});
3.使用
最后就可以使用了。
/**** @param text 阅读文本* @param queueMode 要使用的排队策略,可取值TextToSpeech.QUEUE_ADD或者TextToSpeech.QUEUE_FLUSH分别代表添加和替换* @param params 请求的参数。可以为空* @param utteranceId 唯一标识符* @return 返回值是否成功*/public int speak (CharSequence text,int queueMode,Bundle params,String utteranceId)
//调用
speech.speak(s,type,null, "1");
总结
在Android端使用原生TTS进行文本转语音就可以使用了,自己可以简单地进行封装,通过setOnUtteranceProgressListener添加监听器,判断此时TTS的状态,去实现自己需要的功能