Record Call in Android 2.2
Asked Answered
R

2

8

I have written this code for recording Calls. It works fine in Android 2.1. In Android 2.2, it creates an output file with 0 bytes.

How I can solve this?

MediaRecorder _recorder = new MediaRecorder();


public void start() throws IOException {
    try {
        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(Environment.getExternalStorageDirectory().getAbsolutePath()
                + "/sam.wav").getParentFile();
        if (!directory.exists() && !directory.mkdirs()) {
            throw new IOException("Path to file could not be created.");
        }


        _recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL );
        _recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
        _recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
        setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()
                + "/test.wav");
        _recorder.prepare();
        _recorder.start();

    } catch (Exception e) {
        e.printStackTrace();
    }
}
Require answered 27/7, 2011 at 3:57 Comment(0)
C
6

Use this snippet

_recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK 
| MediaRecorder.AudioSource.VOICE_UPLINK );

instead of

_recorder.setAudioSource(android.media.MediaRecorder.AudioSource.VOICE_CALL);
Commutable answered 27/7, 2011 at 6:13 Comment(1)
At least according to documentation, VOICE_UPLINK has the constant value of 2 and VOICE_DOWNLINK has the constant value of 3, so ORing them returns 3... Perhaps it works, but it would seem to me that it would only record DOWNLINK...Baltazar
P
2

Call recording only works on some Android phones. It might work on one phone running 2.1, but not on a different model running 2.2. Although the API will compile and run on all architectures, some devices have disabled this feature in the hardware.

See How can I record voice and record Call in Android? for more details.

Plagio answered 27/7, 2011 at 4:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.