Skip to content

Commit b96e268

Browse files
committed
removing a redundant interface
1 parent b9f180d commit b96e268

File tree

3 files changed

+88
-103
lines changed

3 files changed

+88
-103
lines changed
Lines changed: 87 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,90 @@
11
package com.simplemobiletools.flashlight.helpers
22

3-
interface CameraFlash {
4-
fun initialize()
5-
fun toggleFlashlight(enable: Boolean)
6-
fun changeTorchBrightness(level: Int) {}
7-
fun getMaximumBrightnessLevel(): Int = DEFAULT_BRIGHTNESS_LEVEL
8-
fun supportsBrightnessControl(): Boolean = false
9-
fun getCurrentBrightnessLevel(): Int = DEFAULT_BRIGHTNESS_LEVEL
10-
fun unregisterListeners(){}
11-
fun release(){}
3+
import android.content.Context
4+
import android.hardware.camera2.CameraCharacteristics
5+
import android.hardware.camera2.CameraManager
6+
import android.os.Handler
7+
import com.simplemobiletools.commons.extensions.showErrorToast
8+
import com.simplemobiletools.commons.helpers.isTiramisuPlus
9+
import com.simplemobiletools.flashlight.extensions.config
10+
import com.simplemobiletools.flashlight.models.Events
11+
import org.greenrobot.eventbus.EventBus
12+
13+
internal class CameraFlash(
14+
private val context: Context,
15+
private var cameraTorchListener: CameraTorchListener? = null,
16+
) {
17+
private val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
18+
private var cameraId: String? = null
19+
20+
private val torchCallback = object : CameraManager.TorchCallback() {
21+
override fun onTorchModeChanged(cameraId: String, enabled: Boolean) {
22+
cameraTorchListener?.onTorchEnabled(enabled)
23+
}
24+
}
25+
26+
init {
27+
try {
28+
cameraId = manager.cameraIdList[0] ?: "0"
29+
} catch (e: Exception) {
30+
context.showErrorToast(e)
31+
}
32+
}
33+
34+
fun toggleFlashlight(enable: Boolean) {
35+
try {
36+
if (supportsBrightnessControl() && enable) {
37+
val brightnessLevel = getCurrentBrightnessLevel()
38+
changeTorchBrightness(brightnessLevel)
39+
} else {
40+
manager.setTorchMode(cameraId!!, enable)
41+
}
42+
} catch (e: Exception) {
43+
context.showErrorToast(e)
44+
val mainRunnable = Runnable {
45+
EventBus.getDefault().post(Events.CameraUnavailable())
46+
}
47+
Handler(context.mainLooper).post(mainRunnable)
48+
}
49+
}
50+
51+
fun changeTorchBrightness(level: Int) {
52+
if (isTiramisuPlus()) {
53+
manager.turnOnTorchWithStrengthLevel(cameraId!!, level)
54+
}
55+
}
56+
57+
fun getMaximumBrightnessLevel(): Int {
58+
return if (isTiramisuPlus()) {
59+
val characteristics = manager.getCameraCharacteristics(cameraId!!)
60+
characteristics.get(CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL) ?: MIN_BRIGHTNESS_LEVEL
61+
} else {
62+
MIN_BRIGHTNESS_LEVEL
63+
}
64+
}
65+
66+
fun supportsBrightnessControl(): Boolean {
67+
val maxBrightnessLevel = getMaximumBrightnessLevel()
68+
return maxBrightnessLevel > MIN_BRIGHTNESS_LEVEL
69+
}
70+
71+
fun getCurrentBrightnessLevel(): Int {
72+
var brightnessLevel = context.config.brightnessLevel
73+
if (brightnessLevel == DEFAULT_BRIGHTNESS_LEVEL) {
74+
brightnessLevel = getMaximumBrightnessLevel()
75+
}
76+
return brightnessLevel
77+
}
78+
79+
fun initialize() {
80+
manager.registerTorchCallback(torchCallback, Handler(context.mainLooper))
81+
}
82+
83+
fun unregisterListeners() {
84+
manager.unregisterTorchCallback(torchCallback)
85+
}
86+
87+
fun release() {
88+
cameraTorchListener = null
89+
}
1290
}

app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MarshmallowPlusCameraFlash.kt

Lines changed: 0 additions & 93 deletions
This file was deleted.

app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyCameraImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class MyCameraImpl private constructor(val context: Context, private var cameraT
132132
fun handleCameraSetup() {
133133
try {
134134
if (cameraFlash == null) {
135-
cameraFlash = MarshmallowPlusCameraFlash(context, cameraTorchListener)
135+
cameraFlash = CameraFlash(context, cameraTorchListener)
136136
}
137137
} catch (e: Exception) {
138138
EventBus.getDefault().post(Events.CameraUnavailable())

0 commit comments

Comments
 (0)