Проблемы с настройкой источника звука в классе MediaRecorder - setAudioSource() - неподдерживаемый параметр

Я новичок в разработке Android, и у меня есть следующий вопрос/проблема.

Я играю с классом MediaRecorder, чтобы записывать только звук с микрофона. Я следую шагам, указанным на официальном сайте: http://developer.android.com/reference/android/media/MediaRecorder.html

Итак, у меня есть метод, который инициализирует и настраивает объект MediaRecorder, чтобы начать запись. Здесь у вас есть код:


        this.mr = new MediaRecorder();
        this.mr.setAudioSource(MediaRecorder.AudioSource.MIC);
        this.mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        this.mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        this.mr.setOutputFile(this.path + this.fileName);
        try {
            this.mr.prepare();
        } catch (IllegalStateException e) {
            Log.d("Syso", e.toString());
            e.printStackTrace();
        } catch (IOException e) {
            Log.d("Syso", e.toString());
            e.printStackTrace();
        }

Когда я выполняю этот код в симуляторе, благодаря logcat я вижу, что метод setAudioSource(MediaRecorder.AudioSource.MIC) при вызове выдает следующую ошибку (с тегом audio_ipunt):


ERROR/audio_input(34): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value
ERROR/audio_input(34): VerifyAndSetParameter failed

И затем, когда вызывается метод prepare(), я снова получаю другую ошибку:


ERROR/PVOMXEncNode(34): PVMFOMXEncNode-Audio_AMRNB::DoPrepare(): Got Component OMX.PV.amrencnb handle 

Если я начну запись, вызвав метод start()..., я получу много сообщений, говорящих:


AudioFlinger(34):RecordThread: buffer overflow

Затем... после остановки и отпускания... Я вижу, что файл был создан, но не похоже, чтобы он был хорошо записан. В любом случае, если я попробую это на реальном устройстве, я смогу записать без проблем, но я НЕ МОГУ воспроизвести то, что я только что записал.

Я предполагаю, что ключ находится в этих ошибках, которые я упоминал ранее. Как я могу их исправить? Любое предложение или помощь ??


person arakn0    schedule 09.06.2010    source источник
comment
Вы приняли ответ, который не решает эту проблему, поскольку она также возникает на устройствах (например, Galaxy S).   -  person Tom    schedule 28.01.2011


Ответы (3)


В симуляторе много проблем с записью звука. Допустим, это не работает. Лучше всего попробовать свой код на реальном устройстве!!!

person arakn0    schedule 14.06.2010

Примечание. Эмулятор Android не может записывать звук, но на реальных устройствах эти возможности могут быть реализованы.

Ссылка: http://developer.android.com/guide/topics/media/audio-capture.html

person Kaifei    schedule 26.01.2013

ну, я довольно новичок в этом программировании для Android, но я дам вам, ребята, то, что я узнал об этом. В некоторых ответах здесь говорится, что у них возникают проблемы на реальных устройствах, в основном на Galaxy S, и эмулятор/виртуальное устройство также не работает. Ну, я прочитал в Google, что виртуальное устройство сейчас не поддерживает запись звука. Это может или не может быть все еще точным. Тем не менее, значительно более опытный программист Android сказал мне, что нет никаких оснований полагать, что между устройствами есть сходство в отношении аппаратного обеспечения, поскольку Android в настоящее время доступен на очень многих устройствах. Кроме того, каждая ОС Android очень незначительно модифицируется, чтобы приспособиться к конкретному устройству, поэтому, хотя Droid и Droid X могут работать под управлением Android Froyo, версии Froyo немного отличаются. При всем при этом, возможно, у Galaxy S немного другой метод вызова микрофона или что-то в этом роде. Моим тестовым устройством оказался MotoDroid, поэтому я не могу быть в этом уверен, извините. Но я надеюсь, что это поможет немного!

РЕДАКТИРОВАТЬ: мой плохой, эмулятор поддерживает запись звука.

person Brandon    schedule 01.12.2010