我正在构建一个应用程序,该应用程序会显示包含当前时间的自定义消息。我注意到有些声音似乎可以正确地解析时间-也就是说,当我传递类似“现在是7:07的时间”的字符串时,实际上它说的是“七-七-”。
但是,其他声音坚持说“现在的时间是七个冒号零七个。”编写一个可以自己解析的函数就足够简单了,但是我正在尝试找到内置函数,因此我不必担心本地化。我可以在TTS(也许是与归因字符串相关的内容)中甚至在Java库中为我提供一段时间的本地化“文本”字符串吗?我已经浏览了TTS文档,却一无所获,而且我所看到的所有Java时间格式化模式都是纯数字的,没有单词。
我正在构建一个应用程序,该应用程序会显示包含当前时间的自定义消息。我注意到有些声音似乎可以正确解析时间,也就是说,当我传入类似“现在是现在的时间……”的字符串时,
var h:Int = Calendar.getInstance().get(Calendar.HOUR)
if (DateFormat.is24HourFormat(ApplicationContext))
h = Calendar.getInstance().get(Calendar.HOUR_OF_DAY)
val m:Int = Calendar.getInstance().get(Calendar.MINUTE)
val whenStr = getFormattedTime() // internal function I'm using to format it visually
wholeString = message.replace("|TIME|",whenStr) // my time doesn't always appear at the same place in the custom message
val spannedMsg:Spannable = SpannableString(wholeString)
val span:TtsSpan = TtsSpan.TimeBuilder(h, m).build()
spannedMsg.setSpan(span, wholeString.inexOf(whenStr),wholeString.indexOf(whenStr) + whenStr.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
tts.speak(spannedMsg, TextToSpeech.QUEUE_FLUSH, params, "UTT_ID")