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.
- ¿Cómo fusionar un archivo de audio con una imagen o un archivo de vídeo en android?
- Android: captura de video en dispositivo o emulador
- Marco de vídeo de captura de android
- Camino a capturas de pantalla en Android
- Archivo en blanco se guarda cuando se utiliza screencap programatically en Android
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:
-
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
-
Interceptar el audio con un módulo del kernel como antes: hardcore, hacerlo funcionar pero no aplicable
-
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)
-
Utilice PulseAudio como sustituto de AudioFlinger, pero esto tampoco es aplicable
EDITAR (los olvidó):
-
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
-
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?
- Capture la pantalla de Android y cree el video programáticamente
- Convertir imágenes (mapa de bits) a un formato de vídeo popular en Android
- Captura de pantalla del código
- Cómo evitar la captura de pantalla en Android
- Android: captura la pantalla del teléfono como una película
- Grabación de video en un buffer circular en Android
- Cámara android cámara2 manejar zoom
- Cómo grabar todos los touch and acclerometer en un dispositivo Android en TODAS las aplicaciones
Debe pasar el tráfico de audio a través de su servidor de socket local:
-
Crear servidor de socket local
-
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.
-
Jugar
http://127.0.0.1:8888/http://example.com/stream.mp3
Con reproductor multimedia predeterminado
-
Lea todas las solicitudes entrantes al puerto 8888 en su servidor de socket local, analícelas y pase al servidor example.com.
-
Leer la respuesta de example.com y pasarla al cliente local (reproductor de medios). AQUÍ puede capturar la transmisión de audio!
- Android: copia recursiva con adb push
- ¿Cómo puedo mantener mi pantalla desbloqueada durante la depuración USB?