Prevent null cameraId in CameraFlash

This commit is contained in:
Ensar Sarajčić
2023-09-20 11:11:21 +02:00
parent 1ce4c6ef65
commit 2a8d7c2a8c

View File

@ -15,7 +15,7 @@ internal class CameraFlash(
private var cameraTorchListener: CameraTorchListener? = null, private var cameraTorchListener: CameraTorchListener? = null,
) { ) {
private val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager private val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
private var cameraId: String? = null private val cameraId: String
private val torchCallback = object : CameraManager.TorchCallback() { private val torchCallback = object : CameraManager.TorchCallback() {
override fun onTorchModeChanged(cameraId: String, enabled: Boolean) { override fun onTorchModeChanged(cameraId: String, enabled: Boolean) {
@ -28,10 +28,11 @@ internal class CameraFlash(
} }
init { init {
try { cameraId = try {
cameraId = manager.cameraIdList[0] ?: "0" manager.cameraIdList[0] ?: "0"
} catch (e: Exception) { } catch (e: Exception) {
context.showErrorToast(e) context.showErrorToast(e)
"0"
} }
} }
@ -41,7 +42,7 @@ internal class CameraFlash(
val brightnessLevel = getCurrentBrightnessLevel() val brightnessLevel = getCurrentBrightnessLevel()
changeTorchBrightness(brightnessLevel) changeTorchBrightness(brightnessLevel)
} else { } else {
manager.setTorchMode(cameraId!!, enable) manager.setTorchMode(cameraId, enable)
} }
} catch (e: Exception) { } catch (e: Exception) {
context.showErrorToast(e) context.showErrorToast(e)
@ -54,13 +55,13 @@ internal class CameraFlash(
fun changeTorchBrightness(level: Int) { fun changeTorchBrightness(level: Int) {
if (isTiramisuPlus()) { if (isTiramisuPlus()) {
manager.turnOnTorchWithStrengthLevel(cameraId!!, level) manager.turnOnTorchWithStrengthLevel(cameraId, level)
} }
} }
fun getMaximumBrightnessLevel(): Int { fun getMaximumBrightnessLevel(): Int {
return if (isTiramisuPlus()) { return if (isTiramisuPlus()) {
val characteristics = manager.getCameraCharacteristics(cameraId!!) val characteristics = manager.getCameraCharacteristics(cameraId)
characteristics.get(CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL) ?: MIN_BRIGHTNESS_LEVEL characteristics.get(CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL) ?: MIN_BRIGHTNESS_LEVEL
} else { } else {
MIN_BRIGHTNESS_LEVEL MIN_BRIGHTNESS_LEVEL