Все ответы в этой теме упоминают произвольную задержку, когда основная причина этой проблемы не рассматривается.
Камера в телефоне android выполняет операцию автофокуса после начала предварительного просмотра и перед захватом изображения. В фрагменте кода в вопросе упоминается звонок mCamera.takePicture(null, mPictureCallback,mPictureCallback);
сразу после mCamera.startPreview();
.
Выполнение снимка во время процесса автофокуса приводит к возникновению проблем с экспозицией в изображении, полученном в результате темных фотографий. Задержки, упомянутые в ответах, дают андроиду время для завершения автофокуса, и захваченное изображение идеально. Это может не случиться с каждым устройством, и произвольное число может привести к сбою на некоторых устройствах.
Моя рекомендация будет следующий фрагмент кода -
Camera.AutoFocusCallback autoFocusCallBack = new Camera.AutoFocusCallback();
static autoFocusCallBack(){
mCamera.takePicture(null, mPictureCallback,
mPictureCallback);
}
if (mCamera != null) {
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();
mCamera.autoFocus(autoFocusCallBack);
} catch (IOException e) {
e.printStackTrace();
}
}
Этот поток гарантирует, что takePicture()
вызывается в автофокусировкой обратного вызова предполагающей автофокусировку была успешной. Это даст правильное изображение с соответствующей экспозицией и яркостью.
Это также устранит произвольную задержку.
Прочитано this ссылка для Camera.AutoFocus()
.
Прочитано this Ссылка для Camera.takePicture()
.
Прочитано this ссылка для Camera.startPreview()
.
Не связано ли это с использованием 'SCENE_MODE_NIGHT'? Будучи фотографом, я ожидаю, что ночной режим будет затемнять фотографии, в основном, говорит, что экспозиция экспозиции камеры может быть намного более темной, чем обычная фотография. Что произойдет, если вы попробуете 'SCENE_MODE_AUTO' вместо этого? –
SCENE_MODE_AUTO сделать темное фото. –
Там, где вы находитесь? Серьезно, однако, не уверен, что происходит. Там есть [предыдущий вопрос] (http://stackoverflow.com/questions/19571378/android-image-taken-by-custom-camera-is-too-dark), спрашивающий об этом. Удивительно сложно, учитывая аппаратные варианты Android, чтобы дать твердый ответ на этот вопрос. –