Ошибка инициализации Android AudioRecord

Я создаю приложение для Android, которое слушает телефонный звонок. Проблема в том, что инициализация не удалась.

Мой журнал:

E/AudioRecord﹕ Could not get audio input for record source 3
E/AudioRecord-JNI﹕ Error creating AudioRecord instance: initialization check failed.
E/android.media.AudioRecord﹕ Error code -20 when initializing native AudioRecord object.

Мой код:

public AudioRecord recorder;

private int sampleRate = 16000;
private int channelConfig = AudioFormat.CHANNEL_IN_MONO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int minBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);

recorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_DOWNLINK, sampleRate, channelConfig, audioFormat, minBufSize * 10);
recorder.startRecording();

РЕДАКТИРОВАТЬ: я хочу только ВНИЗНУЮ ССЫЛКУ


person koca2000    schedule 10.07.2015    source источник
comment
Попробуйте использовать другие конфигурации (например, 8000 Гц вместо 16000 Гц). Вы также можете попробовать использовать VOICE_CALL в качестве источника звука вместо VOICE_DOWNLINK. Это также дало бы вам восходящий канал, но возможно, что устройство, на котором вы тестируете, просто не поддерживает запись только нисходящего канала, поскольку запись голосового вызова является функцией, зависящей от платформы.   -  person Michael    schedule 10.07.2015


Ответы (1)


Вы должны использовать MediaRecorder вместо AudioRecord, Hear — один из примеров для записи звука и сохранения на SD-карте.

    MediaRecorder myAudioRecorder;
    outputFile = Environment.getExternalStorageDirectory().getAbsolutePath()    + "/recording.3gp";
    myAudioRecorder=new MediaRecorder();
    myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
    myAudioRecorder.setOutputFile(outputFile);

Вы можете начать запись по событию нажатия кнопки, используя код ниже

           try {
                myAudioRecorder.prepare();
                myAudioRecorder.start();
            }

            catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
person Jaydeep Gadhia    schedule 10.07.2015
comment
Я не хочу сохранять его в файл. - person koca2000; 10.07.2015