¿Cómo puedo interceptar el flujo de audio en un dispositivo Android?

Supongamos que tenemos el siguiente escenario: algo está jugando en un dispositivo android (un par ejemplo mp3, pero podría ser cualquier cosa que use la parte de audio de un dispositivo android). Desde una aplicación (aplicación de Android), me gustaría interceptar el flujo de audio para analizar, para grabar, etc Desde esta aplicación (digamos "el analizador") no quiero iniciar un mp3 o algo , Todo lo que quiero es tener acceso a la corriente de audio de android.

Cualquier consejo es apreciado, podría una solución de Java o C + +.

http://developer.android.com/reference/android/media/MediaRecorder.html

public class AudioRecorder { final MediaRecorder recorder = new MediaRecorder(); final String path; /** * Creates a new audio recording at the given path (relative to root of SD * card). */ public AudioRecorder(String path) { this.path = sanitizePath(path); } private String sanitizePath(String path) { if (!path.startsWith("/")) { path = "/" + path; } if (!path.contains(".")) { path += ".3gp"; } return Environment.getExternalStorageDirectory().getAbsolutePath() + path; } /** * Starts a new recording. */ public void start() throws IOException { String state = android.os.Environment.getExternalStorageState(); if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) { throw new IOException("SD Card is not mounted. It is " + state + "."); } // make sure the directory we plan to store the recording in exists File directory = new File(path).getParentFile(); if (!directory.exists() && !directory.mkdirs()) { throw new IOException("Path to file could not be created."); } recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(path); recorder.prepare(); recorder.start(); } /** * Stops a recording that has been previously started. */ public void stop() throws IOException { recorder.stop(); recorder.release(); } } 
  • Excepción de host desconocido de Java
  • Analizar elementos de la lista de archivos XML con XML simple en Android
  • ¿Cómo obtener una vista desde dentro de Espresso para pasar a un IdlingResource?
  • Muestra el teclado virtual cuando el dispositivo está en modo horizontal
  • ¿Cómo puedo supervisar la base de datos de otra aplicación para los cambios?
  • Apache Commons NET: ¿Debo crear un nuevo objeto FTPClient en cada conexión o reutilizar uno?
  • Notificación Push de Android C2DM
  • No se puede establecer el volumen en BlackBerry Playbook
  • Por qué y cuándo anular el registro de observadores de contenido en android
  • Cómo corregir "lienzo: intentando utilizar un error de mapa de bits reciclado"?
  • Acceso dev machine localhost a través de usb
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.