проблема с предварительным просмотром камеры в Android - PullRequest
3 голосов
/ 25 августа 2011

У меня следующая проблема: у меня есть приложение, в котором я использую камеру устройства Android. Я построил свою собственную камеру. BIG problem заключается в том, что при запуске предварительного просмотра все изображение выглядит измененным. Каждый объект выглядит длиннее, больше ...

в surfaceChanged() метод я сделал это:

List<Size> previews = p.getSupportedPreviewSizes();

Я зациклил это list previews, но я не нашел лучшего размера для предварительного просмотра. list previews имеет размер, равный 7, но ни один из этих элементов не позволяет моему изображению выглядеть лучше !!

Вот как выглядит мой метод:

 public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
            Log.e(TAG, "surfaceChanged");
            if (mPreviewRunning) {
                mCamera.stopPreview();
            }

            Camera.Parameters p = mCamera.getParameters();
            List<Size> sizes = p.getSupportedPictureSizes();
            List<Size> previews = p.getSupportedPreviewSizes();

            Size preview = previews.get(3);

    // the size of preview is 7 and looped each item....

         p.setPreviewSize(preview.width,preview.height);

         int f=p.getJpegQuality(); 
         Size   size = sizes.get(3);
         p.setJpegQuality(f);
         p.setPictureSize(size.width,size.height);

           mCamera.setParameters(p);
            try {
                mCamera.setPreviewDisplay(holder);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            mCamera.startPreview();
            mPreviewRunning = true;
        }

Кто-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 25 августа 2011

Взгляните на класс PreviewFrameLayout из приложения камеры по умолчанию. Используется для отображения SurfaceView с использованием соотношения сторон, которое должно быть.

0 голосов
/ 25 августа 2011

Вам необходимо сохранить соотношение сторон.

Попробуйте установить размер предварительного просмотра 640x480, если ваше устройство поддерживает его. Это сохранит соотношение сторон 4: 3.

Если ваш разработчик не поддерживает 640x480, попробуйте установить другое разрешение, которое поддерживает соотношение сторон 4: 3.

Вы можете установить размер предварительного просмотра на камеру, как это -

 mCameraDevPara.setPreviewSize(PREVIEW_WIDTH, PREVIEW_HEIGHT);
 mCameraDev.setParameters(mCameraDevPara);

Только после установки размера предварительного просмотра вы можете вызывать API mCameraDev.setPreviewDisplay(mSurfaceHolder); и mCameraDev.startPreview();

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