Запись звонка в Android 2.2

Я написал этот код для записи звонков. Он отлично работает в Android 2.1. В Android 2.2 он создает выходной файл размером 0 байт.

Как я могу это решить?

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();
    }
}

person Kartik Bhatt    schedule 27.07.2011    source источник


Ответы (2)


Используйте этот фрагмент

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

вместо

_recorder.setAudioSource(android.media.MediaRecorder.AudioSource.VOICE_CALL);
person Nikunj    schedule 27.07.2011
comment
По крайней мере, согласно документации, VOICE_UPLINK имеет постоянное значение 2, а VOICE_DOWNLINK имеет постоянное значение 3, поэтому операция OR возвращает 3... Возможно, это работает, но мне кажется, что будет записываться только DOWNLINK... - person Itai Bar-Haim; 20.03.2012

Запись звонков работает только на некоторых телефонах Android. Это может работать на одном телефоне с версией 2.1, но не на другой модели с версией 2.2. Хотя API будет компилироваться и работать на всех архитектурах, некоторые устройства отключили эту функцию в аппаратном обеспечении.

См. Как я могу записывать голос и записывать звонки в Android? для более подробной информации.

person David    schedule 27.07.2011