Aufruf android.speech.RecognizerIntent API Ergebnisse in Connection Error Dialog, zeigt 'calling_package' Warnung in log

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

  •  02-10-2019
  •  | 
  •  

Frage

Ich schrieb eine kleine App dem Benutzer zu erlauben, zu entscheiden, welche Sprache er die Sprachsuche über eine Taste verwendet, anstatt sich auf die bevorzugte Sprache des Benutzers (manchmal Sie auf Japanisch Sprachsuche möchten, ohne Ihre gesamte Benutzeroberfläche japanische schaltend) .

Ich teste die App auf meinem HTC Desire / Android 2.1 (Softbank-X06HT). Allerdings, wenn ich die Stimme api nennen, erhalte ich ein „Verbindung fehlgeschlagen“ Dialogfeld [Retry / Abbrechen] und LogCat zeigt diese Warnung:

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

Beachten Sie, dass ich die Google Voice Search App verwenden können, und es funktioniert ohne Probleme.

Nach der API-Dokumentation http://developer.android. com / reference / android / Sprache / RecognizerIntent.html # EXTRA_CALLING_PACKAGE die calling_package Parameter von den Entwicklern nicht verwendet werden soll. Nun, wenn das der Fall ist, warum sagt das Protokoll es fehlt?

Ich habe versucht, den Parameter selbst zu schaffen, aber es hat nicht das Ergebnis überhaupt zu ändern.

 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());
    }
}
War es hilfreich?

Lösung

Ich habe das gleiche Problem und stellen Sie den Aufruf Paket zum eigentlichen Berufung Paket (nicht-Klasse) und die Dinge dann richtig funktionierte. Android 2.2 auf einem Tmobile G2.

Andere Tipps

Sie diesen Code verwenden, um Ihre Paketnamen

intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                context.getPackageName());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top