Android Api17的TextToSpeech 的成功回调函数

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.media.AudioManager;
import android.os.Build;
import android.speech.tts.TextToSpeech;
import android.util.Log;

import androidx.annotation.RequiresApi;
import java.util.HashMap;
import java.util.Locale;
import java.util.Random;

public class MyTTS implements TextToSpeech.OnInitListener, TextToSpeech.OnUtteranceCompletedListener {
private TextToSpeech mTTS;
private Context mContext;
private String text;
/**
* 初始化
*
* @param status
*/

@Override
public void onInit(int status) {
    //判断是否转化成功
    if (status == TextToSpeech.SUCCESS) {
   
   		 //初始化时注册监听器
        mTTS.setOnUtteranceCompletedListener(this);
        
        //设置语言为中文
        int languageCode = mTTS.setLanguage(Locale.CHINESE);
        //判断是否支持这种语言,Android原生不支持中文,使用科大讯飞的tts引擎就可以了
        if (languageCode == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.d("TAG", "onInit: 不支持这种语言");
        } else {
            //不支持就改成英文
            mTTS.setLanguage(Locale.US);
        }
        //设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
        mTTS.setPitch(1.0f);
        //设置语速
        mTTS.setSpeechRate(1.0f);
        //在onInIt方法里直接调用tts的播报功能
        mTTS.speak(text, TextToSpeech.QUEUE_ADD, null);
    }
}

@Override
public void onUtteranceCompleted(String s) {
    Log.i("MYTTS", s); 
    //语音成功播放完毕之后,可以do something
}

public MyTTS(Context mContext) {
    this.mContext = mContext;
    //监听器就直接传入本类
    this.mTTS = new TextToSpeech(mContext, this);
}
public MyTTS(Context mContext, String str) {
    this.mContext = mContext;
    this.text = str;
    //监听器就直接传入本类
    this.mTTS = new TextToSpeech(mContext, this);
}

/**
 * 播报方法,需要传入播报的内容
 *
 * @param text 播报的内容
 */
public void mySpeak(String text,String s ) {
    if(text != null) {
        HashMap myHashAlarm = new HashMap();
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, s); //utteranceId == "SOME MESSAGE"
        mTTS.setPitch(1.0f);
        //设置语速
        mTTS.setSpeechRate(1.0f);
        mTTS.speak(text, TextToSpeech.QUEUE_FLUSH, myHashAlarm);
    }
}

/**
 * 销毁播报方法,直接调用
 */
public void stopTTS() {
    mTTS.stop();
    mTTS.shutdown();
    mTTS = null;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值