2011-03-11 108 views
9

Estoy intentando enviar una transmisión de audio a través de una llamada telefónica en Android.Transmitir audio a una llamada de teléfono Android

Por ejemplo, para crear una aplicación que reproduzca música personalizada en espera, o contestar una llamada y reproducir un archivo de grabación/audio. Sé que es posible que una aplicación responda automáticamente una llamada, pero ¿puede enviar audio a la persona que llama?

Si es posible, comuníqueme qué clases/funciones manejan esto.

Respuesta

-1

No es posible escribir en la transmisión de llamadas telefónicas, lo siento.

12

Es posible que se escriba en la secuencia de llamada de teléfono IS, pero no desde el nivel de la aplicación en un teléfono original (no rooteado).

Cuando se inicia una llamada telefónica, el micrófono es "típicamente" (realmente depende del teléfono específico) enrutado directamente a la banda base, es decir, omitiendo por completo el procesador principal.

Para el audio de salida: MIC> codec-> banda base Para el audio entrante: baseband-> codec-> Altavoz

Si siempre se encamina: MIC> codec-> mainprocessor-> codec-> banda base

Luego, la transmisión "presumiblemente" estaría disponible si las API (marcos) de Android admitieran el acceso a ella.

La razón por la que digo que es posible se debe a que el audio (para casi todos los teléfonos inteligentes ahora) está conectado a través de SlimBus Esto permite el cambio dinámico de las rutas de audio. Sin embargo, se realiza en el núcleo a través del controlador del códec que vive en ALSA.

Así que ... ¿estaba tan motivado, podría obtener el origen del kernel de Linux para un teléfono y modificar el controlador de códec/ALSA para permitirle cambiar lo que sucede cuando se configura la ruta de audio de la llamada.

Por supuesto, incurriría en latencia con la nueva ruta, rompiendo los estándares de llamada/latencia AT & T (que Audience los ayudó a escribir ...) y el chip de banda base podría rechazar su audio ya que no es oportuno.

Por último, necesitaría modificar la fuente de Android (frameworks) para hacer crecer la API para admitir la inyección de audio en esa secuencia. (Tendría que hacer grandes modificaciones a mediaserver, audioflinger en particular ...)

Es complicado, pero hay una respuesta. Cheers, :-)

0

La captura de la submezcla remota de audio requiere el permiso CAPTURE_AUDIO_OUTPUT. Este permiso está reservado para uso de los componentes del sistema y no está disponible para aplicaciones de terceros :(

0

Para obtener los datos de audio es muy posible, pero para escribir audio en el canal ascendente, eso no es posible

Cuestiones relacionadas