2011-07-27 11 views
10

Estoy ejecutando monkey exerciser para probar mi aplicación de Android. Como parte de mi aplicación, reproduzco archivos multimedia que dan la pronunciación de una palabra. Puse los archivos en un directorio donde no son legibles por el reproductor de música de Android. Sin embargo, el mono ejercitador arroja una secuencia de eventos que parecen activar el reproductor de música, que luego reproduce repetidamente el comienzo de otro archivo mp3 (que no es de mi aplicación) durante su prueba. ¿Cómo está haciendo esto, y es algo que debería preocuparme?Android Exerciser Monkey comienza a reproducir archivos de audio al azar

Información adicional: incluso cuando deshabilito MediaPlayer en mi aplicación, el problema persiste. Fwiw, aquí está la serie de salidas del mono deportista que conduce a la orden (la última) que genera el sonido:

// Rejecting start of Intent { act=android.intent.action.VIEW dat=http://www.myurl.com/ cmp=com.android.browser/.BrowserActivity } in package com.android.browser 
:Sending Pointer ACTION_DOWN x=437.0 y=183.0 
:Sending Pointer ACTION_UP x=450.0 y=158.0 
:Sending Pointer ACTION_DOWN x=5.0 y=58.0 
:Sending Pointer ACTION_UP x=-4.0 y=58.0 
:Sending Pointer ACTION_MOVE x=2.0 y=-2.0 <=== sound generated from this one 

Ésta es la salida de Logcat en el punto del problema:

I/AudioService( 101): AudioFocus requestAudioFocus() from [email protected][email protected] 
I/AudioService( 101): Remote Control registerMediaButtonEventReceiver() for ComponentInfo{com.google.android.music/com.android.music.MediaButtonIntentReceiver} 
W/AudioFlinger( 68): write blocked for 159 msecs, 26 delayed writes, thread 0xea00 
D/AudioHardwareQSD( 68): AudioHardware pcm playback is going to standby. 
D/dalvikvm( 319): GC_EXPLICIT freed 7K, 51% free 2839K/5767K, external 1625K/2137K, paused 74ms 

Respuesta

0

¿Tiene su aplicación alguna característica que inicie otros servicios o aplicaciones que reproducen música? Por ejemplo, si tiene un botón que inicia un intento de cambiar el volumen del timbre, el mono lo presionará causando ruidos de timbre. (En mi experiencia el mono con la configuración predeterminada sale de la aplicación y cambia la configuración del timbre de todos modos)

+0

Sí, usa el MediaPlayer. Sin embargo, incluso cuando desactivo el comando reproducir, que crea un reproductor multimedia, el problema aún ocurre. Además de eso, nunca llega a la actividad donde se invoca el reproductor multimedia. –

+0

Puede intentar ver el logcat mientras el mono se está ejecutando, y ver si le da información adicional cuando se reproduce un sonido. – HighLife

+0

Buena idea. He publicado los resultados en mi pregunta. –

7

Creo que esto tiene que ver con el hecho de que el mono envía varios códigos clave incluyendo claves para claves de hardware que ni siquiera pueden existir en el dispositivo bajo prueba.

Experimenté un problema similar con el mono y lo investigué proporcionando las opciones -v -v (repetidas -v aumenta el nivel de depuración) y disminuyendo la velocidad utilizando la opción -throttle que también experimenté para encuentre una pequeña cantidad de acciones que lo hicieron ocurrir.

Mi línea de comandos terminó la lectura:

adb shell monkey -p package.undertest.com -s 214765 --throttle 500 -v -v 130 

Esto reveló que justo antes de inicie el reproductor multimedia, que me dieron los siguientes logged:

Sleeping for 500 milliseconds 
:SendKey (ACTION_DOWN): 90 // KEYCODE_FORWARD 
:SendKey (ACTION_UP): 90 // KEYCODE_FORWARD 

que fue capaz de confirmar que KEYCODE_FORWARD hace iniciar mi reproductor multimedia (doubleTwist) en mi Galaxy S emitiendo el siguiente comando después de detener el reproductor multimedia:

adb shell input keyevent 90 

Tenga en cuenta que el 90 es el código clave que figura en el registro anterior.

Al cambiar mi línea de comando al mono para agregar "--pct-nav 0" que detuvo con éxito el inicio del reproductor multimedia.

No sé si podría ser un código de clave diferente en su caso, por lo que puede necesitar experimentar y puede no ser adecuado para sus propósitos al usar el mono para desactivar todos los eventos básicos de navegación configurando - pct-nav 0.

Cuestiones relacionadas