Android SurfaceView Preview Blurry

У меня есть быстрый вопрос. Я использую SurfaceView от Android, чтобы сделать снимок и сохранить его. Однако размер предварительного просмотра и качество изображения являются ужасными; Как в, он очень размытый. Нет никакой резкости к качеству изображения вообще.

Вот где я инициализирую свой surfaceView:

camera.setDisplayOrientation(90); Parameters parameters = camera.getParameters(); parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO); parameters.setExposureCompensation(0); parameters.setPictureFormat(ImageFormat.JPEG); parameters.setJpegQuality(100); Camera.Size picSize = getOptimalPreviewSize(parameters.getSupportedPreviewSizes(), getResources().getDisplayMetrics().widthPixels, getResources().getDisplayMetrics().heightPixels); parameters.setPictureSize(picSize.width, picSize.height); parameters.setPreviewSize(picSize.width, picSize.height); camera.setParameters(parameters); camera.setPreviewDisplay(holder); camera.startPreview(); 

GetOptimalPreviewSize () возвращает лучший размер, доступный из параметров.getSupportedPreviewSizes (). Размер, который он возвращает, составляет 1280×720, лучший размер, который мой телефон будет поддерживать. Тем не менее, поверхностьView по-прежнему очень размыта. Есть ли что-то явно неправильное, что я делаю, или есть способ оптимизировать поверхностьView? Благодарю.

Есть две причины, по которым ваш образ и предварительный просмотр могут выглядеть размытыми

1) то, как вы устанавливаете, размер изображения и размер предварительного просмотра ошибочны. Вы должны запросить поддерживаемые размеры и решить, какой из них самый лучший, и установить размер из списка, который у вас есть. Вы не можете дать значения арбитража. Проверьте это примерное приложение для деталей реализации – https://github.com/josnidhin/Android-Camera-Example

2) вы должны поместить свою камеру в режим авто foucs, чтобы она автоматически фокусировалась. (Лучше всего реализовать прикосновение к фокусу с правильным ui). Как только ваша камера начнет, просто установите ниже

 private void setCamFocusMode(){ if(null == mCamera) { return; } /* Set Auto focus */ Parameters parameters = mCamera.getParameters(); List<String> focusModes = parameters.getSupportedFocusModes(); if(focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)){ parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); } else if(focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)){ parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); } mCamera.setParameters(parameters); } 

Убедитесь, что у вас есть надлежащее разрешение в вашем манифесте

Надеюсь это поможет

С уважением, Shrish

Intereting Posts
Android PopupWindow и WRAP_CONTENT не работают вместе Как я могу создать локаль с обычным первым днем ​​недели? Визуальная студия / apache cordova – сборка выполнена успешно – но не создается apk Извлечь четкий текст с помощью Canvas.drawText в Android Выдвижная панель инструментов, использующая только HTML и CSS в браузере Android Подписанный apk не работает на моем устройстве Как сделать рисование маршрута более эффективным? Как разрешить java.lang.UnsupportedOperationException Android-браузер и браузер не удаляют файлы cookie сеансов на перезагрузке устройства Как получить имя друга, идентификатор, день рождения, местоположение и т. Д. Из API facebook в android? Как отображать список уведомлений по одному от активности? Создание объекта местоположения в Android со значениями широты и долготы TextureView против GLSurfaceView или Как использовать GLSurfaceView с EGL14 Создавайте загружаемую настраиваемую тему и применяйте ее во время выполнения Как проверить, установлен ли телефон Android?