AudioFlinger (59): RecordThread: desbordamiento del búfer cuando la actividad está pausada?
Tengo una aplicación que consiste en un servicio y una actividad que puede ser iniciada por el servicio para ciertos eventos. El servicio puede crear y usar las clases AudioRecord y AudioTrack – en qué momento se muestra la Actividad de la aplicación. El problema es si la actividad está en pausa (es decir, onPause () se llama) Comienzo a obtener el RecordThread: errores de desbordamiento de búfer?
Mi conjetura es el AudioRecorder se está ejecutando en el hilo principal. Y, a pesar de que fue creado por el servicio, cuando la actividad detiene la lectura se detiene así el buffer desborda? ¿Debe la lectura de AudioRecorder ser hecha en un hilo de rosca separado aunque esté funcionando en el servicio?
- Reproducir varias canciones con MediaPlayer al mismo tiempo: solo una está jugando
- Guardar la entrada de audio del motor de reconocimiento de voz de Android Stock
- ¿Cómo puedo transferir el búfer de audio para reproducirlo directamente
- Cómo configurar correctamente el tipo de flujo de audio de MediaPlayer
- Android: Cargando archivos MIDI personalizados de DLS en Sonivox EAS
Cualquier ayuda sería muy apreciada, gracias.
- No se puede acceder a AudioRecorder
- Cómo comprimir archivos WAV en android
- Cómo simular la entrada de audio a micrófono utilizando el archivo .wav
- AudioRecord registra sonido intermitente en Android L Vista previa del desarrollador
- ¿Cómo emular el efecto Vinyl Scratch en el procesamiento de audio?
- Reproduce audio y video al mismo tiempo en Android
- Cómo reproducir una notificación de sonido con Chrome para Android con Javascript?
- Audio grabado mi Samsung no se reproduce en iOS
Los desbordamientos del búfer RecordThread ocurren cuando no está tirando los datos del objeto AudioRecord lo suficientemente rápido.
Definitivamente debe tener el bucle que extrae datos del objeto AudioRecord en un hilo de sperate y debe detener ese hilo si su actividad se detiene (a menos que quiera grabar en segundo plano).
Aquí hay algunos ejemplos de implementaciones de trabajo:
- Ejemplo de y-dev
- Ejemplo de StackOverflow
Aunque es una vieja pregunta, desearía conocer esta respuesta al comenzar a trabajar con Servicios, así que la registraré para futuras referencias por otros:
Un punto a menudo pasado por alto, pero muy importante con respecto a los servicios es el hecho de que no generan automáticamente sus propios hilos, pero se ejecuta en el hilo de la GUI principal. Esto es muy contra-intuitivo cuando se considera la palabra "servicio", pero sin embargo cierto. (Ver la primera sección de 'Atención' en http://developer.android.com/guide/topics/fundamentals/services.html ).
También puede considerar la posibilidad de extender la clase IntentService en lugar de la clase de servicio que "… creará [s] un subproceso de trabajo predeterminado que ejecuta todas las intenciones … separado del subproceso principal de la aplicación." (http://developer.android.com/guide/topics/fundamentals/services.html)
¡Espero que alguien encuentre esto útil!
- La galería onItemClick y onTouchEvent no funcionan juntas desde la versión android 3.0
- Almacenamiento de vídeo para uso sin conexión en aplicaciones PhoneGap / Chrome