У меня проблемы с использованием RecognizerIntent API на Android 2.2. Когда я вызываю API, используя этот код:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
startActivityForResult(intent, REQUEST_CODE_VOICE_SEARCH);
, который выглядит так, как будто он должен работать, всплывающее окно поиска говорит "Неизвестная проблема" на устройстве, и в журналах говорится:
01-17 14:25:30.433: ERROR/RecognitionActivity(9118): ACTION_RECOGNIZE_SPEECH intent called incorrectly. Maybe you called startActivity, but you should have called startActivityForResult (or otherwise included a pending intent).
01-17 14:25:30.433: INFO/RecognitionControllerImpl(9118): startRecognition(#Intent;action=android.speech.action.RECOGNIZE_SPEECH;launchFlags=0x800000;component=com.google.android.voicesearch/.IntentApiActivity;B.fullRecognitionResultsRequest=true;S.android.speech.extra.LANGUAGE_MODEL=free_form;end)
01-17 14:25:30.433: INFO/RecognitionControllerImpl(9118): State change: STARTING -> STARTING
01-17 14:25:30.443: ERROR/RecognitionControllerImpl(9118): required extra 'calling_package' missing in voice search intent
01-17 14:25:30.443: ERROR/RecognitionControllerImpl(9118): ERROR_CLIENT
01-17 14:25:30.443: ERROR/RecognitionControllerImpl(9118): ERROR_CLIENT
Похоже, проблема в том, что отсутствует дополнительная функция "call_package"; на странице RecognizerIntent говорится, что это дополнительно:
Дополнительная клавиша, используемая в целях распознавания речи для голоса
поиск. Обычно не используется
Разработчики. Диалог поиска системы
использует это, например, чтобы установить
вызывая пакет для идентификации
API голосового поиска. Если это дополнительно
устанавливается кем-либо, кроме системного процесса,
это должно быть отменено голосом
реализация поиска.
Насколько я могу судить, мне не нужно переопределять это дополнительное, так почему я получаю эту ошибку? Как я могу исправить свой код?