主要思路: 1.处理需要播报的金额 2.合成语音文件,对金额播报
其实很简单,两行代码直接搞定
List<String> list = new VoiceTemplate()
.prefix("success")
.numString(money)
.suffix("yuan")
.gen();
VoiceSpeaker.getInstance().speak(list);
步骤1.对播报的金额通过小数点判断,拆解为整数和小数部分
import android.text.TextUtils;
import java.util.ArrayList;
import java.util.List;
public class VoiceTemplate {
private static final String DOT = ".";
private String numString;
private String prefix;
private String suffix;
private static final char[] NUM = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
private static final char[] CHINESE_UNIT = {'元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'};
public VoiceTemplate() {
}
public VoiceTemplate prefix(String prefix) {
this.prefix = prefix;
return this;
}
public VoiceTemplate suffix(String suffix) {
this.suffix = suffix;
return this;
}
/**
* 处理执行的金额,目前只支持亿级别,想支持更大数据,自己改
*
* @param numString
* @return
*/
public VoiceTemplate numString(String numString) {
this.numString = numString;
return this;
}
public List<String> gen() {
return genVoiceList();
}
private List<String> genVoiceList() {
List<String> result = new ArrayList<>();
if (!TextUtils.isEmpty(prefix)) {
result.add(prefix);
}
if (!TextUtils.isEmpty(numString)) {
result.addAll(genReadableMoney(numString));
}
if (!TextUtils.isEmpty(suffix)) {
result.add(suffix);
}
return result;
}
/**