【发布时间】:2012-06-28 05:28:08
【问题描述】:
我正在使用 Android 文本到语音引擎来阅读一些文本并且它正在工作。但我的文本包含数字,我希望这些数字被逐位读取。
我在文档中找不到任何内容,但我仍然希望有人知道我该怎么做。
【问题讨论】:
我正在使用 Android 文本到语音引擎来阅读一些文本并且它正在工作。但我的文本包含数字,我希望这些数字被逐位读取。
我在文档中找不到任何内容,但我仍然希望有人知道我该怎么做。
【问题讨论】:
API 不允许您指定应如何读取文本,因此您的代码必须修改文本输入,以便读取各个数字。
我建议在每个数字之间添加一个空格。这应该会导致TextToSpeech 读取各个数字。
如果您需要一些代码来帮助您检测数字,请使用:
private boolean isNumber(String word)
{
boolean isNumber = false;
try
{
Integer.parseInt(word);
isNumber = true;
} catch (NumberFormatException e)
{
isNumber = false;
}
return isNumber;
}
【讨论】:
接受的答案有一个小缺陷。如果数字有 '0' 作为其数字之一,它将被读作字母 'o' 而不是 Zero 。我会建议以下解决方案。
String number = "1230";
for(int i = 0 ; i < number.size(); i++) {
/* refer Speech API , Don't use QUEUE_FLUSH as it results in flushing
some characters in this case */
engine.speak(Character.toString(number.charAt(i)),QUEUE_ADD,null);
}
【讨论】:
/* refer Speech API , Don't use QUEUE_FLUSH as it results in flushing
some characters in this case */
for(int i = 0 ; i < number.size(); i++) {
engine.speak(Character.toString(number.charAt(i)),QUEUE_ADD,null);
}
【讨论】: