Home » Android » java – How can I intercept the audio stream on an android device?

java – How can I intercept the audio stream on an android device?

Posted by: admin May 14, 2020 Leave a comment


Let’s suppose that we have the following scenario: something is playing on an android device (an mp3 par example, but it could be anything that use the audio part of an android device). From an application (android application 🙂 ), I would like to intercept the audio stream to analyze it, to record it, etc. From this application (let’s say “the analyzer”) I don’t want to start an mp3 or something, all I want is to have access to the audio stream of android.

Any advice is appreciated, it could a Java or C++ solution.

How to&Answers:


    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.");


     * Stops a recording that has been previously started.
    public void stop() throws IOException {


Consider using the AudioPlaybackCapture API that was introduced in Android 10 if you want to get the audio stream for a particular app.