Ошибка запуска Android Media Recorder

У меня проблема с медиа-рекордером в Android. Я записываю звук, который хорошо работает с LG P500, но тот же код не работает с Samsung GT - S5360. Я получаю сообщение об ошибке, поскольку запуск не удался -22.

Это код, который я использую:

final MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL‌​);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GP‌​P);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
try {
    recorder.prepare();
    recorder.start();
} catch (Exception e) { Log.d(TAG, "Exception : " + e); }

При отладке причина была нулевой в logcat.

Пожалуйста, предложите мне какое-нибудь решение.


person Promod Singh    schedule 04.04.2012    source источник
comment
любой код или logcat будут оценены. мы не можем предоставить решение просто так.   -  person Anurag Ramdasan    schedule 04.04.2012
comment
Вот код, который я использую: final MediaRecorder recorder = new MediaRecorder(); Recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); рекордер.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); рекордер.setOutputFile(путь); попробуйте { рекордер.подготовить(); рекордер.старт(); } catch(Exception e) { Log.d(TAG, Exception: + e) ​​}   -  person Promod Singh    schedule 04.04.2012
comment
Наконец, после долгих поисков я нашел решение, я добавил разрешение ‹uses-permission android:name=android.permission.STORAGE /›, и теперь мой код работает хорошо.   -  person Promod Singh    schedule 04.04.2012
comment
Где вы нашли такое разрешение? developer.android.com/reference/android/   -  person Nicolas Siver    schedule 12.08.2013
comment
Я поместил такое же разрешение в свой манифест, но приложение вылетает на рекордере.   -  person karan421    schedule 14.08.2013


Ответы (3)


У меня была такая же проблема, и я попытался установить диктофон из магазина игр, чтобы проверить. Это также не позволило мне записать VOICE_CALL. Из этого я понял, что некоторые производители устройств не поддерживают это. Поэтому записывайте с микрофоном, если устройство не поддерживает VOICE_CALL.

person Theebi Iyer    schedule 11.01.2017
comment
Для параметра VOICE_CALL требуется разрешение CAPTURE_AUDIO_OUTPUT, которое предоставляется только для привилегированные приложения. - person Liron Lavi; 02.05.2020

Разрешение, предложенное оп, у меня не сработало, наверное, потому, что его не существует :)

Если вы получаете эту ошибку, проверьте, как вы настраиваете медиа-рекордер. В моем случае это не удалось только на некоторых устройствах. Я делал это для всех устройств с версией ОС> API 10:

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);       
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);

Выяснилось, что неисправное устройство работало под управлением JB, но не поддерживало широкополосный доступ, поэтому сработало изменение его на необработанный/узкополосный:

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);      
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
person Mister Smith    schedule 16.10.2014

Основываясь на комментарии фактического автора... он предложил свой ответ в комментарии. Помещая это в реальный ответ, надеясь, что это поможет другим:

ОП добавил следующее разрешение, и его код у него хорошо работал:

<uses-permission android:name="android.permission.STORAGE" />

person Mahendra Liya    schedule 22.06.2012
comment
Это либо устарело, либо не существует. - person wieczorek1990; 14.04.2016