Llamando android.speech.RecognizerIntent resultados de la API de diálogo Error de conexión, calling_package '' es de advertencia en el registro

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

  •  02-10-2019
  •  | 
  •  

Pregunta

Me escribió una pequeña aplicación para permitir al usuario elegir el idioma que se utiliza la Búsqueda por voz a través de un botón, en lugar de depender de la preferencia de idioma del usuario (a veces uno quiere búsqueda por voz en japonés sin tener que cambiar toda la interfaz de usuario al japonés) .

Estoy probando la aplicación en mi HTC Desire / Android 2.1 (Softbank-X06HT). Sin embargo, cuando llamar a la API de voz, aparece un cuadro de diálogo "Error de conexión" [reintento / Cancelar], y muestra LogCat esta advertencia:

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

Tenga en cuenta que puedo utilizar la aplicación de Búsqueda de Google por voz y funciona sin problemas.

De acuerdo con la API Docs http://developer.android. com / referencia / android / habla / RecognizerIntent.html # EXTRA_CALLING_PACKAGE el parámetro calling_package no es para ser utilizado por los desarrolladores. Bueno, si ese es el caso, ¿por qué el registro dice que le falta?

He intentado proporcionar el parámetro de mí mismo, pero que aún no ha cambiar el resultado en absoluto.

 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());
    }
}
¿Fue útil?

Solución

Yo estaba teniendo el mismo problema y establecer el paquete llamando al paquete real de llamadas (no clase) y luego trabajó cosas correctamente. Android 2.2 en un Tmobile G2.

Otros consejos

Utilice este código para obtener el nombre del paquete

intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                context.getPackageName());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top