Вызов Android.speech.recognizerIntent API Результаты в диалоговом окне ошибки подключения, показывает предупреждение «Calling_Package» в журнале

StackOverflow https://stackoverflow.com/questions/3693480

  •  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());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top