Android> 4.0: Ideas para grabar / capturar audio interno (por ejemplo, STREAM_MUSIC)?

Hace algunos meses, con Android ICS (4.0), desarrollé un módulo de kernel android que interceptó el módulo "pcmC0D0p" para obtener todo el audio del sistema.

Mi objetivo es transmitir TODO el audio (o al menos la música reproducida) a un altavoz remoto a través de AirPlay.

El módulo del kernel funcionaba, pero allí había varios problemas (kernel-versions, root-privileges etc.) así que dejé de trabajar en esto.

Ahora, tenemos Android 4.1 y 4.2 y tengo nueva esperanza!

¿Quién tiene una idea de cómo capturar el audio en Android?

Tenía ideas siguientes:

  1. Conectarse a través de bluetooth al mismo teléfono, establecer el enrutamiento a BT y tomar el audio en el "otro extremo": esto no debería funcionar

  2. Interceptar el audio con un módulo del kernel como antes: hardcore, hacerlo funcionar pero no aplicable

  3. JACK Audio Connection Kit : tristemente Android utiliza "tinyALSA" y no "ALSA". TinyALSA no soporta ningún filtro como JACK (pero esto trajo la idea con el módulo del kernel)

  4. Utilice PulseAudio como sustituto de AudioFlinger, pero esto tampoco es aplicable


EDITAR (los olvidó):

  1. Compilé "tinymix" (versión para bebés de ALSA-mixer) de tinyALSA (la ALSA en Android) y traté de encaminar el audio-out a mic-in – pero sin éxito ( no comprensible para mí ). Y esto también necesita enraizamiento: no aplicable

  2. He probado OpenSL ES , pero no soy un C-crack y terminó en "Puedo grabar micrófono, pero no más" (tal vez estaba equivocado?)


Acabo de encontrar ROUTE_TYPE_LIVE_AUDIO :

Un dispositivo que admita el enrutamiento de audio en directo permitirá que el flujo de audio multimedia se enrute a los destinos admitidos. Esto puede incluir altavoces internos o tomas de audio en el propio dispositivo, dispositivos A2DP y mucho más.

Una vez iniciado este enrutamiento es transparente para la aplicación. Todo el audio reproducido en el flujo de medios se encamina al destino seleccionado.

Tal vez esto ayuda de alguna manera?

Me estoy quedando sin ideas, pero quiero "romper esta nuez", tal vez alguien me puede ayudar?

EDITAR:

Soy realmente nuevo en C & kernel-coding (pero he creado con éxito un cross-compilado de audio-interceptación-módulo) – pero no es de ninguna manera posible escuchar en el punto de los datos PCM va de userspace (JAVA , C-layer?) Al espacio del núcleo (tinyALSA, kernel-module), sin hackear y enraizar?

Debe pasar el tráfico de audio a través de su servidor de socket local:

  1. Crear servidor de socket local

  2. Modificar la dirección de flujo de audio http a la ruta es a través de su servidor de socket local, por ejemplo, para la dirección

    http://example.com/stream.mp3 -> http://127.0.0.1:8888/http://example.com/stream.mp3 

    Donde 8888 es su puerto de socket.

  3. Jugar

     http://127.0.0.1:8888/http://example.com/stream.mp3 

    Con reproductor multimedia predeterminado

  4. Lea todas las solicitudes entrantes al puerto 8888 en su servidor de socket local, analícelas y pase al servidor example.com.

  5. Leer la respuesta de example.com y pasarla al cliente local (reproductor de medios). AQUÍ puede capturar la transmisión de audio!

  • Android VpnService para capturar paquetes no captura paquetes
  • Captura de pantalla en andengine da al revés la imagen de espejo
  • Convertir todo el contenido en un ScrollView a un mapa de bits?
  • Captura una secuencia RTSP en un dispositivo Android
  • ¿Cómo TeamViewer toma capturas de pantalla y permite el control remoto sin root?
  • Visualización compartida de Android en otros dispositivos
  • Android toma la captura de pantalla mediante programación
  • Android sin memoria en la captura de imágenes
  • Cómo tomar una instantánea de la aplicación de pantalla no sólo en Android con código
  • Programar una captura de pantalla del servicio
  • Cargar la imagen capturada en Cloudinary directamente en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.