MediaRecorder не удалось подготовить - PullRequest
2 голосов
/ 12 апреля 2010

Я новичок здесь. Я пытался создать приложение для захвата видео с помощью эмулятора Android без особого успеха. Насколько я знаю и просматривая все примеры и код в Интернете (этот сайт и другие), я все еще должен пропустить шаг.

Я пытался использовать этот пример в конце этой темы, созданной JonPro: http://www.anddev.org/viewtopic.php?p=24723#24723

и я пытался сделать свой собственный, но медиа-рекордер всегда выходил из строя на этапе подготовки с самым бесполезным сообщением «подготовка не удалась». Я понятия не имею, что мне не хватает. Кажется, у меня правильные разрешения, и SDCard монтируется в соответствии с эмулятором. Должен ли я использовать версию Android SDK, отличную от 2.1?

Несмотря на то, что код на этом форуме претендует на работу, я понял, что эта строка отсутствует: recorder.setCamera (камера);

Но все равно никакой радости, поскольку журналы показывают, что: «Не удалось получить параметры камеры (0x16b70)» когда метод prepare () вызывается, но все равно не имеет смысла, так как предварительный просмотр в порядке, но нет записи! Любая помощь или предложения будут оценены.

Редактировать: Кто-нибудь может подтвердить, что это может работать для SDK и эмулятора? или я трачу свое время, пытаясь заставить это работать в этой версии. Могу ли я получить исходный код для функции подготовки, как это OpenSource?

Ответы [ 2 ]

5 голосов
/ 21 мая 2010

Исправление этой проблемы - mCameraDevice.unlock () должен быть установлен перед подготовкой. Важно, чтобы это было установлено после mCameraDevice.setPreviewDisplay (mHolder);

пример:

/*--------------------------------------surfaceCreated---------------------------------------------*/
/**
 * Surface Created sets that the surface is created.
 */
 public void surfaceCreated(SurfaceHolder arg0) {
     // TODO Auto-generated method stu1595
        try {
            Log.d(LOG_TAG, "setPreviewDisplay enter");
            mCameraDevice.setPreviewDisplay(mHolder);
            Log.d(LOG_TAG, "setPreviewDisplay exit");
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        mCameraDevice.unlock();
        Log.d("*************", "***********unlock()****");
     isSurfaceCreated = true;


 }

BR P.N

0 голосов
/ 14 апреля 2011
recorder.setVideoSize(176, 144);
recorder.setVideoFrameRate(20);
recorder.setAudioChannels(1);
recorder.setPreviewDisplay( mHolder.getSurface());

это помогло мне. Посмотрите в logcat во время отладки

...