几年前,我们使用Text to Speech API将语音提示添加到我们的应用程序中,并且一直运行良好。最近,我们开始收到升级到Android 4.2 Jelly Bean的用户的电子邮件,他们说语音提示不起作用,他们收到一条消息,语音数据丢失,需要下载。当他们点击下载时,他们可以选择下载英语以外的语言。
我们在Android开发人员的博客上按照这个post实现了text to speech。我们正在调用TextToSpeech.Engine.ACTION_CHECK_TTS_DATA intent,如果返回TextToSpeech.Engine.CHECK_VOICE_DATA_PASS以外的任何内容,我们都会调用TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA intent。
我们无法访问运行4.2版本的设备。我今天去了当地的一家商店,在一台安装了4.2的Nexus7平板电脑上下载了这款应用程序,并能够重现这个问题。但是,当我们基于Nexus 7创建AVD并运行仿真器时,语音提示工作正常,并且我们无法重现该问题。
发布于 2012-11-30 04:02:44
礼貌地说,使用Android OS4.1和OS4.2进行TTS检查是不同的。
OS 4.1不能正确处理安装数据的意图*
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA
OS 4.2不能正确处理检查语音数据的意图*
TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
*我的意思是,它不会像旧版本那样返回正确的状态码。例如,当CHECK_TTS_DATA确实安装了语音数据时,它会返回CHECK_VOICE_DATA_MISSING_DATA。现在可能还有一些其他的意图数据需要传递,但我不确定这是在哪里记录的。
在我的应用程序中,我不得不对较新的操作系统版本禁用这些检查。我怀疑谷歌这么做可能是因为他们现在使用Android的条款强制要求TTS (但我不能证实这一点--我相信有一个网站确切地描述了必须实现什么才能被称为“Android”)。
更新
正如我所怀疑的那样,Android OS4.1现在要求所有Android设备都必须包含文本到语音转换,因此现在的检查有些多余。从这个链接:Android 4.1 Compatibility Definition
3.11文本到语音转换
Android 4.1包括允许应用程序使用文本到语音( TTS )服务的API,并允许服务提供商提供TTS服务的实现资源,32。设备实现必须满足以下与Android TTS框架相关的要求:
发布于 2012-11-26 12:34:17
发布于 2012-11-26 12:22:47
我建议看看下面的代码演示。我会帮你。
http://code.google.com/p/simple-jellybean-tts-example/和
看见
http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html#KEY_FEATURE_NETWORK_SYNTHESIS和
http://developer.android.com/reference/android/speech/tts/TextToSpeech.html#speak(java.lang.String,int,java.util.HashMap)-- Jatin
https://stackoverflow.com/questions/13558337
复制相似问题