Вызов Android.speech.recognizerIntent API Результаты в диалоговом окне ошибки подключения, показывает предупреждение «Calling_Package» в журнале
-
02-10-2019 - |
Вопрос
Я написал небольшое приложение, чтобы позволить пользователю выбрать, какой язык он использует голосовой поиск через кнопку, а не полагаясь на предпочтение языка пользователя (иногда вы хотите голосовать на японском языке, не переключая весь пользовательский интерфейс на японский).
Я проверяю приложение на моем HTC Desire / Android 2.1 (Softbank-X06HT). Однако, когда я вызывающую голосовой API, я получаю диалоговое окно «Не удалось» подключение к подключению [REPTRY / CANCEN], а 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 Voice Search, и он работает без проблем.
Согласно документам API http://developer.android.com/reference/android/speech/recognaizerintent.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());
}
}
Решение
У меня была такая же проблема и установила звонкую пакет на фактический призывающий пакет (не класс), а вещи, которые затем работали правильно. Android 2.2 на Tmobile G2.
Другие советы
Используйте этот код, чтобы получить имя вашего пакета
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
context.getPackageName());