У меня проблема с камерой в самой последней сборке Marshmallow, точнее на фонарике. В любой версии с предварительным указателем Marshmallow все, что мне нужно сделать, чтобы включить/выключить вспышку, было следующее:
private void turnFlashOn(final Camera camera, int flashLightDurationMs) {
if (!isFlashOn()) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(mParams);
}
}
}
и
private void turnFlashOff(Camera camera) {
if (camera != null) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(mParams);
}
}
}
К сожалению, устройства Marshmallow начали крутиться в дикой природе. Каким-то образом camera.getParameters()
и camera.setParameters()
начали сбой сообщениями, такими как:
RuntimeException: getParameters не удалось (пустые параметры)
RuntimeException: сбой setParameters
Я попытался запустить и остановить предварительный просмотр, прежде чем получать параметры, которые больше не вызывают ошибок. Однако предварительный просмотр не возобновляется, когда я вызываю camera.startPreview()
.
Я боюсь, что освобождение камеры и повторное открытие не могут быть решены, так как это занимает несколько секунд и приведет к плохим результатам.
Любые предложения по включению/выключению фонарика в Marshmallow?