@@ -13,10 +13,10 @@ import com.simplemobiletools.flashlight.models.Events
1313import org.greenrobot.eventbus.EventBus
1414
1515@RequiresApi(Build .VERSION_CODES .M )
16- internal class PostMarshmallowCamera (
16+ internal class MarshmallowPlusCameraFlash (
1717 private val context : Context ,
18- private val cameraTorchListener : CameraTorchListener ? = null ,
19- ) {
18+ private var cameraTorchListener : CameraTorchListener ? = null ,
19+ ) : CameraFlash {
2020
2121 private val manager = context.getSystemService(Context .CAMERA_SERVICE ) as CameraManager
2222 private var cameraId: String? = null
@@ -35,12 +35,13 @@ internal class PostMarshmallowCamera(
3535 }
3636 }
3737
38- fun toggleMarshmallowFlashlight (enable : Boolean ) {
38+ override fun toggleFlashlight (enable : Boolean ) {
3939 try {
40- manager.setTorchMode(cameraId!! , enable)
41- if (enable) {
40+ if (supportsBrightnessControl() && enable) {
4241 val brightnessLevel = getCurrentBrightnessLevel()
4342 changeTorchBrightness(brightnessLevel)
43+ } else {
44+ manager.setTorchMode(cameraId!! , enable)
4445 }
4546 } catch (e: Exception ) {
4647 context.showErrorToast(e)
@@ -51,13 +52,13 @@ internal class PostMarshmallowCamera(
5152 }
5253 }
5354
54- fun changeTorchBrightness (level : Int ) {
55+ override fun changeTorchBrightness (level : Int ) {
5556 if (isTiramisuPlus()) {
5657 manager.turnOnTorchWithStrengthLevel(cameraId!! , level)
5758 }
5859 }
5960
60- fun getMaximumBrightnessLevel (): Int {
61+ override fun getMaximumBrightnessLevel (): Int {
6162 return if (isTiramisuPlus()) {
6263 val characteristics = manager.getCameraCharacteristics(cameraId!! )
6364 characteristics.get(CameraCharacteristics .FLASH_INFO_STRENGTH_MAXIMUM_LEVEL ) ? : MIN_BRIGHTNESS_LEVEL
@@ -66,24 +67,28 @@ internal class PostMarshmallowCamera(
6667 }
6768 }
6869
69- fun supportsBrightnessControl (): Boolean {
70+ override fun supportsBrightnessControl (): Boolean {
7071 val maxBrightnessLevel = getMaximumBrightnessLevel()
7172 return maxBrightnessLevel > MIN_BRIGHTNESS_LEVEL
7273 }
7374
74- fun getCurrentBrightnessLevel (): Int {
75+ override fun getCurrentBrightnessLevel (): Int {
7576 var brightnessLevel = context.config.brightnessLevel
7677 if (brightnessLevel == DEFAULT_BRIGHTNESS_LEVEL ) {
7778 brightnessLevel = getMaximumBrightnessLevel()
7879 }
7980 return brightnessLevel
8081 }
8182
82- fun initialize () {
83+ override fun initialize () {
8384 manager.registerTorchCallback(torchCallback, Handler (context.mainLooper))
8485 }
8586
86- fun cleanUp () {
87+ override fun unregisterListeners () {
8788 manager.unregisterTorchCallback(torchCallback)
8889 }
90+
91+ override fun release () {
92+ cameraTorchListener = null
93+ }
8994}
0 commit comments