Там странная ситуация. Я взял стандартный образец Google camera2API
.
Мне нужно, чтобы вспышка работала постоянно, вне зависимости от внешнего освещения.
Для этого я изменил одну строку кода:
private void setAutoFlash(CaptureRequest.Builder requestBuilder) {
if (mFlashSupported) {
// requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
}
}
Это было CONTROL_AE_MODE_ON_AUTO_FLASH
, я изменил его на CONTROL_AE_MODE_ON_ALWAYS_FLASH
.
И я столкнулся с проблемой, когда я нажимаю кнопку Сделать снимок, камера мигает, и все. Приложение отправляется в стек...
Что я делаю не так?
ИЗМЕНИТЬ
дальше разбираюсь:
я попробовал крачку на флэш-памяти на трех разных устройствах Meizu MX5
, Samsung S5
и Samsung S6
.
Два из них Meizu MX5
, Samsung S5
корректно работают с кодом выше, и приложение не работает в стеке.
Проблема возникает с Samsung S6
, НО...
Метод setAutoFlash()
вызывается внутри кода 3 раза в разных местах
captureStillPicture()
unlockFocus()
onConfigured()
И хитрость в том, что если я отключу setAutoFlash()
в captureStillPicture()
для Samsung S6
, это перестанет складываться, и вспышка начнет работать, но если я попробую этот подход для Meizu MX5
, Samsung S5
вспышка не работает...