Chiamando android.speech.RecognizerIntent risultati API nella finestra di dialogo Errore di connessione, 'calling_package' spettacoli di avviso nel registro

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

  •  02-10-2019
  •  | 
  •  

Domanda

ho scritto una piccola applicazione per consentire all'utente di scegliere quale linguaggio che usa la Ricerca vocale tramite un pulsante, piuttosto che basarsi su preferenza di lingua dell'utente (a volte si desidera la ricerca vocale in giapponese senza cambiare tutta la vostra interfaccia utente per giapponese) .

sto testando l'applicazione sul mio HTC Desire / Android 2.1 (Softbank-X06HT). Tuttavia, quando ho chiamare l'API voce, ottengo una finestra di dialogo "Connessione non riuscita" [Riprova / Annulla], e spettacoli logcat questo avvertimento:

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

Si noti che posso usare il Google Voice Search app e funziona senza problemi.

Secondo la Documentazione API http://developer.android. com / riferimento / android / vocale / RecognizerIntent.html # EXTRA_CALLING_PACKAGE il parametro calling_package non deve essere utilizzato dagli sviluppatori. Beh, se questo è il caso, perché il registro dire che manca?

Ho cercato di fornire il parametro me stesso ma didnt cambiare il risultato a tutti.

 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());
    }
}
È stato utile?

Soluzione

ho avuto lo stesso problema e impostare il pacchetto chiamando al pacchetto effettivo di chiamata (non classe) e le cose poi ha lavorato in modo corretto. Android 2.2 su un Tmobile G2.

Altri suggerimenti

Utilizzare questo codice per ottenere il vostro nome del pacchetto

intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                context.getPackageName());
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top