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

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

  •  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());
    }
}
Était-ce utile?

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());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top