L'appel des résultats de l'API android.speech.RecognizerIntent dans le dialogue d'erreur de connexion, de la calling_package 'montre avertissement dans le journal
-
02-10-2019 - |
Question
J'ai écrit une petite application pour permettre à l'utilisateur de choisir la langue qu'il utilise la recherche vocale via un bouton, plutôt que de compter sur la préférence de langue de l'utilisateur (parfois vous voulez la recherche vocale en japonais sans passer toute votre interface utilisateur Japonais) .
Je teste l'application sur mon HTC Desire / Android 2.1 (Softbank-X06HT). Cependant, quand je l'appelle l'api de voix, je reçois un « Échec de la connexion » boîte de dialogue [nouvelle tentative / résilie], et montre de LogCat cet avertissement:
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
Notez que je peux utiliser l'application Google Voice Search et il fonctionne sans problème.
Selon l'API Docs http://developer.android. com / référence / android / parole / RecognizerIntent.html # EXTRA_CALLING_PACKAGE le paramètre calling_package ne doit pas être utilisé par les développeurs. Eh bien, si tel est le cas, pourquoi ne dit le journal il manque?
J'ai essayé de fournir le paramètre moi-même, mais il n'a pas changer le résultat du tout.
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());
}
}
La solution
Je faisais le même problème et mis le paquet appelant au paquet d'appel réel (pas de classe) et les choses ensuite travaillé correctement. 2.2 Applications sur un Tmobile G2.
Autres conseils
Utilisez ce code pour obtenir votre nom de package
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
context.getPackageName());