Я использую Camera Package для разработки приложения для Android, чтобы включить вспышку, например:
Camera mCamera = Camera.open();
List<String> flashModes = mCamera.getParameters().getSupportedFlashModes();
if (flashModes != null && flashModes.contains(Parameters.FLASH_MODE_TORCH)){
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(parameters);
} else if (flashModes != null && flashModes.contains(Parameters.FLASH_MODE_ON)){
parameters.setFlashMode(Parameters.FLASH_MODE_ON);
mCamera.setParameters(parameters);
}
if (!previewing){
mCamera.startPreview();
previewing = true;
}
Он проверяет поддерживаемые режимы вспышки камеры и настраивает их. Он работает на устройствах Samsung Android и некоторых других, но не работает в LG V20, LG V30 и Mi Android. Я искал это и пробовал:
mCamera.autoFocus(Camera.AutoFocusCallback)
mCamera.setPreviewTexture(SurfaceTexture)
Но ничего не работает. Поэтому я использовал пакет Camera2 для api> 23, например:
CameraManager mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
mCameraManager.setTorchMode("0", true);
И это работает, но в устройстве Самсунг появляется уведомление «Фонарик включен» и это очень раздражает.
Итак, мне нужен способ включить фонарик для всех устройств с пакетом камеры или не отображать уведомление «Фонарик включен» с помощью пакета Camera2.
С нетерпением жду вашего ответа, спасибо.
Ответ в приведенной ниже ссылке спасает мне жизнь!
SurfaceView необходим для некоторых устройств.