Android 天气APP(三十三)语音播报

/**

  • 播报人

*/

public static final String VOICE_NAME = “voiceName”;

/**

  • 语速

*/

public static final String SPEED = “speed”;

/**

  • 音调

*/

public static final String PITCH = “pitch”;

/**

  • 音量

*/

public static final String VOLUME = “volume”;

下面写工具类,工具类里面要完成SDK的初始化配置,音频文字的合成,然后是播放。在com.llw.goodweather下的utils包下新增一个SpeechUtil类,代码如下:

package com.llw.goodweather.utils;

import android.content.Context;

import android.graphics.Color;

import android.os.Bundle;

import android.os.MemoryFile;

import android.text.Spannable;

import android.text.SpannableStringBuilder;

import android.text.style.BackgroundColorSpan;

import android.util.Log;

import android.widget.ArrayAdapter;

import android.widget.TextView;

import android.widget.Toast;

import com.iflytek.cloud.ErrorCode;

import com.iflytek.cloud.InitListener;

import com.iflytek.cloud.SpeechConstant;

import com.iflytek.cloud.SpeechError;

import com.iflytek.cloud.SpeechEvent;

import com.iflytek.cloud.SpeechSynthesizer;

import com.iflytek.cloud.SynthesizerListener;

import com.iflytek.cloud.msc.util.FileUtil;

import com.iflytek.cloud.msc.util.log.DebugLog;

import java.util.Vector;

/**

  • 语音工具类

  • @author llw

*/

public class SpeechUtil {

private static final String TAG = “SpeechUtil”;

private static Context mContext;

// 语音合成对象

public static SpeechSynthesizer mTts;

//播放的文字

private static String defaultText = “富强、明主、文明、和谐、自由、平等、公正、法制、爱国、敬业、诚信、友善。”;

// 引擎类型

private static String mEngineType = SpeechConstant.TYPE_CLOUD;

private static Vector<byte[]> container = new Vector<>();

//内存文件

private static MemoryFile memoryFile;

//总大小

public static volatile long mTotalSize = 0;

// 默认发音人

private static String voicer = “xiaoyan”;

//语速

private static String speedValue = “50”;

//音调

private static String pitchValue = “50”;

//音量

private static String volumeValue = “50”;

private static TextView tvState;

/**

  • 初始化监听。

*/

private static InitListener mTtsInitListener = code -> {

Log.i(TAG, "InitListener init() code = " + code);

if (code != ErrorCode.SUCCESS) {

Log.i(TAG, “初始化失败,错误码:” + code);

} else {

Log.i(TAG, “初始化成功”);

}

};

/**

  • 初始化

  • @param context

*/

public static void init(Context context) {

mContext = context;

// 初始化合成对象

mTts = SpeechSynthesizer.createSynthesizer(mContext, mTtsInitListener);

}

/**

  • 合成回调监听。

*/

private static SynthesizerListener mTtsListener = new SynthesizerListener() {

//开始播放

@Override

public void onSpeakBegin() {

Log.i(TAG, “开始播放”);

}

//暂停播放

@Override

public void onSpeakPaused() {

Log.i(TAG, “暂停播放”);

}

//继续播放

@Override

public void onSpeakResumed() {

Log.i(TAG, “继续播放”);

}

//合成进度

@Override

public void onBufferProgress(int percent, int beginPos, int endPos, String info) {

Log.i(TAG, “合成进度:” + percent + “%”);

}

//播放进度

@Override

public void onSpeakProgress(int percent, int beginPos, int endPos) {

// 播放进度

Log.i(TAG, “播放进度:” + percent + “%”);

tvState.setText(“播报中”);<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值