@capgo/capacitor-flash 7.1.9 → 7.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,6 +7,19 @@
7
7
  </div>
8
8
  Switch the Flashlight / Torch of your device.
9
9
 
10
+ ## Why Capacitor Flash?
11
+
12
+ A simple, **free**, and **lightweight** flashlight control plugin:
13
+
14
+ - **Intensity control** - Adjust brightness levels (iOS with configurable intensity)
15
+ - **Status checking** - Query flashlight availability and current state
16
+ - **Toggle support** - Simple on/off switching with toggle method
17
+ - **Universal compatibility** - Works across all iOS and Android devices with flash hardware
18
+ - **Modern package management** - Supports both Swift Package Manager (SPM) and CocoaPods (SPM-ready for Capacitor 8)
19
+ - **Zero dependencies** - Minimal footprint, no bloat
20
+
21
+ Perfect for QR scanner apps, emergency torch features, camera apps, and utility tools.
22
+
10
23
  ## Documentation
11
24
 
12
25
  The most complete doc is available here: https://capgo.app/docs/plugins/flash/
@@ -19,7 +19,7 @@ import com.getcapacitor.annotation.PermissionCallback;
19
19
  @CapacitorPlugin(name = "CapacitorFlash", permissions = { @Permission(alias = "camera", strings = { Manifest.permission.CAMERA }) })
20
20
  public class CapacitorFlashPlugin extends Plugin {
21
21
 
22
- private final String pluginVersion = "7.1.9";
22
+ private final String pluginVersion = "7.1.11";
23
23
 
24
24
  private String cameraId;
25
25
  boolean isFlashStateOn = false;
@@ -68,7 +68,7 @@ public class CapacitorFlashPlugin extends Plugin {
68
68
  @RequiresApi(api = Build.VERSION_CODES.M)
69
69
  @PluginMethod
70
70
  public void switchOn(PluginCall call) {
71
- String value = call.getString("instensity"); // cannot be use in android
71
+ Float intensity = call.getFloat("intensity", 1.0f);
72
72
  JSObject ret = new JSObject();
73
73
  if (cameraManager == null) {
74
74
  ret.put("value", false);
@@ -76,7 +76,13 @@ public class CapacitorFlashPlugin extends Plugin {
76
76
  return;
77
77
  }
78
78
  try {
79
- cameraManager.setTorchMode(cameraId, true);
79
+ // Android 13+ (API 33) supports torch brightness control
80
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
81
+ switchOnWithIntensity(intensity);
82
+ } else {
83
+ // For older Android versions, only on/off is supported
84
+ cameraManager.setTorchMode(cameraId, true);
85
+ }
80
86
  isFlashStateOn = true;
81
87
  ret.put("value", true);
82
88
  } catch (Exception e) {
@@ -86,6 +92,33 @@ public class CapacitorFlashPlugin extends Plugin {
86
92
  call.resolve(ret);
87
93
  }
88
94
 
95
+ @RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
96
+ private void switchOnWithIntensity(Float intensity) throws CameraAccessException {
97
+ // Clamp intensity between 0.0 and 1.0
98
+ float clampedIntensity = Math.max(0.0f, Math.min(1.0f, intensity));
99
+
100
+ // Get max torch strength level using reflection for API 33+ compatibility
101
+ try {
102
+ // CameraCharacteristics.FLASH_INFO_STRENGTH_MAX_LEVEL is an API 33+ constant
103
+ java.lang.reflect.Field field = CameraCharacteristics.class.getField("FLASH_INFO_STRENGTH_MAX_LEVEL");
104
+ CameraCharacteristics.Key<Integer> key = (CameraCharacteristics.Key<Integer>) field.get(null);
105
+ Integer maxLevel = cameraManager.getCameraCharacteristics(cameraId).get(key);
106
+
107
+ if (maxLevel != null && maxLevel > 1) {
108
+ // Convert 0.0-1.0 range to device's torch level range (1 to maxLevel)
109
+ // Level 1 is minimum brightness, maxLevel is maximum
110
+ int torchLevel = Math.max(1, Math.round(clampedIntensity * maxLevel));
111
+ cameraManager.turnOnTorchWithStrengthLevel(cameraId, torchLevel);
112
+ } else {
113
+ // Fallback if max level is not available
114
+ cameraManager.setTorchMode(cameraId, true);
115
+ }
116
+ } catch (Exception e) {
117
+ // If reflection fails, fall back to simple on mode
118
+ cameraManager.setTorchMode(cameraId, true);
119
+ }
120
+ }
121
+
89
122
  @RequiresApi(api = Build.VERSION_CODES.M)
90
123
  @PluginMethod
91
124
  public void switchOff(PluginCall call) {
@@ -7,7 +7,7 @@ import Capacitor
7
7
  */
8
8
  @objc(CapacitorFlashPlugin)
9
9
  public class CapacitorFlashPlugin: CAPPlugin, CAPBridgedPlugin {
10
- private let pluginVersion: String = "7.1.9"
10
+ private let pluginVersion: String = "7.1.11"
11
11
  public let identifier = "CapacitorFlashPlugin"
12
12
  public let jsName = "CapacitorFlash"
13
13
  public let pluginMethods: [CAPPluginMethod] = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/capacitor-flash",
3
- "version": "7.1.9",
3
+ "version": "7.1.11",
4
4
  "description": "Switch the Flashlight / Torch of your device.",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",