Android TextToSpeech简单使用

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);
	 /**
     * 响应授权
     * 这里不管用户是否拒绝,都进入首页,不再重复申请权限
     */
    @Override
    public 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();
                }
        }                  

Android TextToSpeech简单使用_第1张图片

2.初始化TTS

准备工作做好之后,我们正式开始:

TextToSpeech speech = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
            @Override
            public 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的状态,去实现自己需要的功能

你可能感兴趣的:(android,tts)