Supponiamo di avere il seguente scenario: qualcosa sta giocando su un dispositivo Android (un esempio di mp3 par, ma potrebbe essere qualsiasi cosa che usi la parte audio di un dispositivo Android). Da un'applicazione (un'applicazione android :)), vorrei intercettare il flusso audio per analizzarlo, registrarlo, ecc. Da questa applicazione (diciamo "l'analizzatore") non voglio iniziare un mp3 o qualcosa del genere , tutto quello che voglio è avere accesso al flusso audio di Android.Come posso intercettare il flusso audio su un dispositivo Android?
Qualsiasi consiglio è apprezzato, potrebbe essere una soluzione Java o C++.
Sono abbastanza sicuro che questo non è possibile a meno che il dispositivo è stato radicato. Le chiusure che puoi ottenere è sperare che il microfono sia abbastanza sensibile da captare l'uscita, e sperare che l'utente non abbia inserito gli auricolari! – Dave
La direzione "logica" da osservare sarebbe AudioManager.setRouting - http://developer.android.com/reference/android/media/AudioManager.html#setRouting(int, int, int)). Ciò evidenzia due problemi: uno, è deprecato in favore di specifiche chiamate di funzione, e due, aveva già un elenco predefinito limitato di output. – MSalters
Questo non è consentito su un dispositivo sicuro (tipico consumatore), in base alla progettazione, sebbene sia possibile ottenere FFT di scarsa qualità non frequenti ai fini della creazione di un visualizzatore grafico. Per ottenere l'audio effettivo da altre app, è necessario installare il proprio fork di Android adattato ai propri obiettivi, oppure "hackerare" un'installazione esistente "radicandola" e modificando o intercettando i componenti di sistema. –