У меня есть камера внутри приложения, и я хочу, чтобы она автоматически фокусировалась так же, как это делает камера телефона. Я нашел режимы FOCUS_MODE_CONTINUOUS_VIDEO
и FOCUS_MODE_CONTINUOUS_PICTURE
, но они не поддерживаются некоторыми телефонами Gingerbread от HTC, на которых я тестирую.
Это то, что я делаю, чтобы определить, могу ли я использовать эти режимы:
Camera.Parameters parameters = mCamera.getParameters();
List<String> supportedFocusModes = parameters.getSupportedFocusModes();
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH &&
supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
}
else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
}
else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
// auto focus on request only
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
}
Запустив несколько разных телефонов Gingerbread HTC, я не получаю непрерывные режимы, но я получаю "авто". Это позволяет мне автоматически фокусироваться по требованию (когда я вызываю mCamera.autoFocus(null)
, но камера не будет перефокусироваться, если пользователь перемещает камеру.
Я не могу установить режим фокусировки на что-либо, что камера не поддерживает, если я это сделаю, это будет пустым.
Одно из решений, которое я пробовал, - вызвать mCamera.autoFocus(null)
на таймере. Но это заставляет камеру постоянно фокусироваться, даже если она уже находится в фокусе.
Есть ли способ реализовать непрерывный опыт автоматической фокусировки на этих телефонах? Когда я смотрю на приложение для камеры HTC на этих телефонах, у него есть непрерывная автофокусировка - когда вы перемещаетесь по фокусам камеры и не перефокусируете изображение, когда изображение находится в фокусе.