我写了一个小应用程序,允许用户通过按钮选择使用语音搜索的语言,而不是依赖于用户的语言偏好(有时您想用日语进行语音搜索,而无需将整个UI切换为日语).
我正在HTC Desire / Android 2.1(Softbank-x06ht)上测试该应用程序.但是,当我调用语音api时,会出现“连接失败”对话框[重试/取消],LogCat会显示以下警告:
09-12 11:26:13.583: INFO/RecognitionService(545): ssfe url=http://www.google.com/m/voice-search
09-12 10:49:45.683: WARN/RecognitionService(545): required parameter 'calling_package' is missing in IntentAPI request
请注意,我可以使用Google语音搜索应用,它可以正常运行.
根据API Docs http://developer.android.com/reference/android/speech/RecognizerIntent.html#EXTRA_CALLING_PACKAGE,开发人员请勿使用calling_package参数.好吧,如果是这种情况,为什么日志说它丢失了?
我尝试自己提供参数,但它根本没有改变结果.
private static final String TRIVOICE_CALLING_PACKAGE = "calling_package";
private void callSpeechWebSearch (String language) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
language);
intent.putExtra(TRIVOICE_CALLING_PACKAGE,
"org.filsa.trivoice");
//intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
try {
startActivity(intent);
} catch (ActivityNotFoundException anfe) {
makeToast("ANFE:" +anfe.getMessage());
}
}
解决方法:
我遇到了同样的问题,并将调用包设置为实际的调用包(不是类),然后一切正常. Tmobile G2上的Android 2.2.
标签:voice-recognition,android 来源: https://codeday.me/bug/20191209/2096711.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。