Android Camera Preview вопрос - PullRequest
       6

Android Camera Preview вопрос

1 голос
/ 22 июля 2010

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

Моя программа создаст объект SurfaceView в функции onCreate () основного действия (ActivityMain), а затем установит для него содержимое.

    super.onCreate(savedInstanceState);

    m_surface = new MyCameraSurface(this);        
    // remove title bar
    requestWindowFeature(Window.FEATURE_NO_TITLE);        
    setContentView(m_surface);

Тогда startPreview () будет вызываться при запуске surfaceChanged ().

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    Log.d(TAG, "*** surfaceChanged >>>>> ***");
    Log.d(TAG, "format=" + format + ", width=" + width + ", height=" + height);

    if(m_control.IsCameraClosed() == false) {
        if(m_control.IsPreviewRun() == false) {             
            m_control.startPreview();
        }
    }

    Log.d(TAG, "*** surfaceChanged <<<<< ***");
}

Моя проблема: в начале моя программа всегда получает ошибку «GetNextPreviewFrame Error / 1 frame: 0x0, buffer: 0x0» error:

07-22 06:47:46.727: DEBUG/MyCameraSurface(2313): *** surfaceChanged <<<<< ***
07-22 06:47:46.735: DEBUG/SurfaceFlinger(1276): commiting overlay changes
07-22 06:47:46.735: INFO/TIOverlay(1276): Nothing to do!
07-22 06:47:46.735: INFO/ActivityManager(1276): Displayed activity com.hykwok.CameraEffect/.ActivityMain: 7866 ms (total 7866 ms)
07-22 06:47:47.792: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0
07-22 06:47:48.477: DEBUG/dalvikvm(1276): GC freed 2299 objects / 119216 bytes in 143ms
07-22 06:47:48.793: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0
07-22 06:47:49.794: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0
07-22 06:47:50.794: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0

Однако, когда я переключаюсь на другое действие (ActivityCameraSetting) и затем возвращаюсь к основному действию, вывод становится нормальным.

Может ли кто-нибудь дать мне какое-нибудь предложение исправить это?

Я использую Motorola Milestone. Версия прошивки 2.1-обновление1, номер сборки SHOLS_U2.02.36.0.

Я не уверен, что другие телефоны Android имеют эту проблему или нет.

Другой вопрос: Можно ли получить данные кадра предварительного просмотра с помощью функции обратного вызова предварительного просмотра без установленного держателя поверхности?

Спасибо за вашу помощь.

Исходные коды можно скачать здесь:

Исходные коды ссылки

1 Ответ

0 голосов
/ 08 июня 2012

Трудно сказать точно, в чем проблема, без большего количества журналов, я бы предположил, основываясь на бите 0x0, что либо ваша поверхность еще не полностью создана, либо размер предварительного просмотра камеры установлен неправильноОдно из предложений, которое мне нужно было бы добавить:

m_holder.setFormat(PixelFormat.OPAQUE);

к вашему конструктору MyCameraSurface.Я получал некоторые столь же неоднозначные ошибки re: CameraHal, и это, казалось, решало большинство из них.Можете ли вы опубликовать немного больше ваших журналов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...