Держите фонарик включенным, пока камера открыта
Я хочу создать приложение, которое будет держать переднюю светодиодную вспышку / фонарик во время съемки. Итак, у меня есть следующий код, который открывает камеру с неявным намерением:
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, requestImageCapture)
И код для включения и выключения факела / вспышки телефона:
if(isLightOn) {
val manager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraId = manager.cameraIdList[0]
manager.setTorchMode(cameraId, false)
isLightOn = false
} else {
val manager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraId = manager.cameraIdList[0]
manager.setTorchMode(cameraId, true)
isLightOn = true
}
Я установил слушателям 2 кнопки для выполнения этих действий. Хотя они работают хорошо сами по себе, фонарик / вспышка не остается включенным, когда камера открывается с намерением. Есть ли способ, которым я могу добиться этого поведения?
1 ответ
Код для факела работает, но он работает только для вашего приложения. После startActivityForResult(intent, requestImageCapture)
выполняется, вы больше не в вашем приложении. Вы находитесь в любом приложении камеры вы выбираете. Ваше приложение теряет доступ к камере, а приложение "Камера" получает его.
Теперь вспышкой можно управлять для приложения "Камера". Приложение камеры, вероятно, имеет элементы управления для вспышки.
Если вы хотите включить вспышку и сделать снимок, вам нужно будет создать собственное приложение для камеры. Вы можете сделать это с нуля, следуя этому руководству, или вы можете использовать библиотеку камеры, такую как Fotoapparat или Material -Camera.