2011-03-29 13 views
11

Estoy tratando de ejecutar el grabador de voz que viene con el emulador de Android 2.2. El problema es que el momento en que haga clic en el botón "Grabar":.¿Por qué es imposible usar el grabador de voz en el emulador de Android?

enter image description here

Se aborta con un mensaje de error "La aplicación de voz Grabadora (proceso com.android.speechrecorder) ha detenido inesperadamente Por favor, inténtelo de nuevo. "

enter image description here

El problema es que intentarlo de nuevo no ayuda.

Ahora, busqué StackOverflow y analicé toda la Internet y encontré muchos informes del mismo problema, sin ninguna solución de trabajo.

Mi conclusión es que, por alguna extraña razón, el emulador de Android es capaz de usar el dispositivo de audio de Windows para la salida, pero no para la entrada.

¿Por qué es eso?

Sé que otro software de virtualización (por ejemplo, VMWare) no tiene ningún problema al usar tanto las secciones de salida como de entrada del dispositivo de audio del host.

Además, si Speech Recorder nunca funcionó para el emulador para nadie, ¿por qué ponerlo allí?

Sin duda, esto ha funcionado para alguien. ¿Hay alguna manera de hacer que Speech Recorder me funcione también?

Estoy usando Windows XP de 32 bits y mi AVD se define con una tarjeta SD (montada al inicio).

Actualización: Seguí la sugerencia de @Klaus para tratar de ver si se producen excepciones. Lo hice simplemente escribiendo ddms.bat en la línea de comandos para iniciar una versión independiente de DDMS (con una pantalla Logcat en la parte inferior). Efectivamente, recibo la siguiente excepción al hacer clic en el botón "Grabar":

03-29 14:16:58.195: ERROR/AudioRecord(303): Could not get audio input for record source 1 
03-29 14:16:58.195: ERROR/srec_jni(303): initCheck error -22 
03-29 14:16:58.205: DEBUG/SpeechRecorderActivity(303): run audio capture thread 
03-29 14:16:58.205: WARN/dalvikvm(303): threadid=8: thread exiting with uncaught exception (group=0x4001d800) 
03-29 14:16:58.215: ERROR/AndroidRuntime(303): FATAL EXCEPTION: Thread-9 
03-29 14:16:58.215: ERROR/AndroidRuntime(303): java.lang.NullPointerException 
03-29 14:16:58.215: ERROR/AndroidRuntime(303):  at com.android.speechrecorder.SpeechRecorderActivity$4.run(SpeechRecorderActivity.java:192) 
03-29 14:16:58.285: WARN/ActivityManager(59): Force finishing activity com.android.speechrecorder/.SpeechRecorderActivity 
03-29 14:16:58.904: DEBUG/dalvikvm(59): GC_FOR_MALLOC freed 13324 objects/656184 bytes in 197ms 
03-29 14:16:59.915: INFO/ARMAssembler(59): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x20db68:0x20dc24] in 1247352 ns 
03-29 14:17:05.251: DEBUG/SpeechRecorderActivity(303): stopRecording 

¿Cómo procedo desde aquí? No escribí la aplicación de voz del registrador, así que no sé lo que hace que el NullPointerException en la línea SpeechRecorderActivity.java 192. Creo que esto tiene algo que ver con un mensaje de Logcat anterior:

No se pudo obtener de audio input for record source 1

Pero la pregunta es por qué?

¿Por qué no fue posible "obtener entrada de audio para la fuente de grabación 1"?

+1

Errr ... ¿hay alguna excepción atrapada? Todo lo que pones es el mensaje Cerrar Fuerza, generalmente se detectan muchas excepciones antes de eso. Muéstrenos las excepciones (TODAS) de su salida de LogCat. – Klaus

+1

Podría haber jurado que tenía un comentario aquí; también se bloquea para mí: '03-29 14:13:38.075: ERROR/AudioRecord (282): Los parámetros de grabación no son compatibles: sampleRate 11025, channelCount 1, formato 1 03-29 14: 13: 38.075: ERROR/srec_jni (282): error initCheck -22 03-29 14: 13: 38.104: ERROR/AndroidRuntime (282): EXCEPCIÓN FATAL: Thread-8 03-29 14: 13: 38.104: ERROR/AndroidRuntime (282): java.lang.NullPointerException 03-29 14: 13: 38.104: ERROR/AndroidRuntime (282): en com.android.speechrecorder.SpeechRecorderActivity $ 4.run (SpeechRecorderActivity.java:192) 'No estoy seguro de por qué te importa. : 3 Sin código fuente. – Klaus

+0

@Klaus Sí, hubo una pregunta que publiqué pero la eliminé después de que me enteré de la respuesta (ver más arriba). Gracias y +1 nuevamente. :) – srf

Respuesta

3

La razón por la que está teniendo este problema es que el emulador no tiene una entrada de audio para enganchar. Su mejor opción es conectar un dispositivo real y hacer pruebas allí.

+2

http://developer.android.com/guide/topics/media/index.html - específicamente, el párrafo 3 dice 'Tenga en cuenta que el emulador no tiene hardware para capturar audio o video, pero es probable que los dispositivos móviles reales proporcione estas capacidades, accesibles a través de la clase MediaRecorder. –

+1

Si conecta un micrófono a su sistema, el emulador debería usarlo. Consulte esta discusión: http://groups.google.com/group/android-developers/browse_thread/thread/b4be83e1ce5ef8ac – Brian

+0

@Brian Ya tengo un micrófono conectado a mi sistema. No lo usa. @Chris Gracias y +2. – srf

Cuestiones relacionadas