programacion - Problemas con el lanzamiento del micrófono interno de Android
manual programacion android español pdf (3)
Tengo un problema muy interesante.
Tenía la impresión de que cuando mi aplicación usa el micrófono y el proceso del sistema Android (como una llamada entrante o saliente) necesita el micrófono, mi aplicación lo libera sin ninguna consideración.
Pero supongo que ya no es el problema, ya que he recibido pocas quejas de que cuando se usa la aplicación y hay una llamada entrante, el otro lado de la llamada no puede escucharla.
¿Hay alguna forma de asegurar que cada vez que el proceso del sistema solicite que se lance el micrófono?
Actualmente, no hay forma de verificar si otra aplicación solicita el micrófono . Sin embargo, hay algunas soluciones:
- Si graba sonido en una actividad, simplemente suelte el micrófono en
onPause()
, para que la aplicación de primer plano pueda usarlo. Esto no funcionará si grabas audio en un servicio en segundo plano. - Pausa la grabación cuando hay una llamada entrante. Para detectar las llamadas entrantes (y salientes), eche un vistazo a esta excelente respuesta . Cuando termine la llamada, reanude la grabación.
- Un truco sucio: si la detección de llamadas entrantes no es suficiente, puede recorrer todas las aplicaciones en ejecución y ver si tienen el permiso del micrófono. En cuanto se ejecute una aplicación con permiso de micrófono, haga una pausa en la grabación. Obtener todas las aplicaciones en ejecución puede ser difícil. Para obtener más información, consulte here , here , here y aquí para consultar los permisos .
En mi caso, creé un hilo de fondo que verificaba los bits entrantes del micrófono. Si fueran cero (o varios segundos de retraso de datos) la aplicación interrumpiría el proceso. Sin embargo, por supuesto, esta no es una solución "buena", pero podría ser útil.
Por lo que sé, no hay forma de saber si el estado del micrófono está Ocupado, Disponible o si alguien lo está solicitando porque de alguna manera es responsabilidad del sistema administrar los procesos y los recursos, por lo que teniendo esto en cuenta, no puede mantenerlo. El micrófono para siempre y allí, así que no hay forma de controlarlo, significa que no puede administrar y detectar la solicitud de recursos. A continuación, hay información que podría ayudarlo.
Lo que puede intentar es superar todas las posibilidades cuando el sistema puede usar un micrófono, como configurar un receptor de difusión para las transmisiones de llamadas y cuando se activan, suelte el micrófono y cuando finalice la llamada, puede adquirirlo nuevamente.