2011-02-03 8 views
5

Estoy comenzando a desarrollar para Android y estoy usando Eclipse con el complemento de Android y el SDK de Android.No se puede escuchar ningún audio del emulador de Android SDK lanzado desde eclipse

No importa lo que haga, no puedo hacer que el emulador emita ningún sonido.

He intentado encender el audio en la configuración del dispositivo virtual.

También he intentado varias líneas de comandos en la configuración de ejecución tales como:

  • -audio oss ==== este recibe un mensaje de error que no hay ninguna dorsal oss definido.
  • -useaudio === aparece como no es una opción válida
  • -audion -winaudio === comienza w/o error, pero aún no hay sonido

Si abro mi controlador de audio de Windows 7 en mi computadora portátil, veo que la máquina virtual de Android tiene su propio control deslizante de volumen, pero no suena nada cuando me muevo o hago clic en ese control deslizante de audio. (Los otros controles deslizantes de volumen producen el pitido normal.)

He estado buscando "emulador de Android sin sonido" durante horas, pero sin suerte.

¿Alguna idea?

Respuesta

2

El problema no era que el emulador no emitiera sonido (como lo confirma el hecho de que tampoco funcionaría en mi dispositivo), sino un problema no contabilizado con la clase SoundPool.

Miré en el logcat y encontré referencias como "muestra 1 no lista". Investigando esto, finalmente encontré un hilo oscuro en el que se mencionaba que toma un tiempo antes de que el conjunto de sonidos esté listo para ser utilizado (y, por lo tanto, todos los sonidos deben cargarse mucho antes de que se usen).

Modifiqué mi método playSound para controlar el valor de retorno de la llamada al método soundPool.play (...). Devuelve la identificación del flujo de sonido en ejecución, o 0 si falló (es decir, "muestra 1 no lista").

Lo que hice fue ponerlo en un bucle, y cuando el valor de retorno de la llamada al método soundPool.play (...) fue de 0, que tenía el sueño de hilo durante 1 milisegundo , inténtelo de nuevo. Con este método en su lugar, ahora siempre obtener un sonido.

Como nota al margen también he estado ejecutando tutoriales con mi SDK configurado para Android 2.2 en lugar de Android 2.3.1, porque Android 2.2 es lo que está instalado en mi dispositivo, un Sprint LG optimus S LS670.

He ejecutado mi código modificado tanto en un Android 2.2 como en un dispositivo Android 2.3.1 Virtual.

Cuando ejecuto el código en el anterior Android 2.2 VD, normalmente tomaba de 10 a 15 bucles (por lo tanto, un retraso de 10 a 15 ms) antes de que sounspool estuviera listo para reproducir el sonido.

Cuando ejecuté el mismo código en un dispositivo Android 2.3.1 VD, el retraso fue MUCHO peor, teniendo alrededor de un retraso de 350 ms antes de que se reprodujera, ¡sí, casi 35 veces más lento!

Cuando ejecuté el mismo código deplyed en mi dispositivo con Android 2.2, la delap de tiempo fue casi idéntica a ejecutarlo en el emulador.

+0

¿cómo hiciste para que funcione? ¿Qué es SoundPool? Mi programa no usa esta clase pero todavía tengo el mismo problema, es decir, el emulador no reproduce ningún sonido. Vea mi intento aquí: http://stackoverflow.com/questions/18143032/can-the-android-emulator-play-audio – user13267

+0

¿Hay algún código de muestra que funcione? ¿Qué puedo pegar en eclipse y ejecutar para reproducir el sonido a través del emulador? Antes de hacer cualquier otra cosa, quiero estar seguro de que el emulador puede reproducir cualquier sonido, y necesito asegurarme de que pueda obtener sonido si obtengo un dispositivo Android real. – user13267

Cuestiones relacionadas