ilabs-flir 1.0.3 → 1.0.5

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.
Files changed (33) hide show
  1. package/android/Flir/build.gradle.kts +14 -27
  2. package/android/Flir/libs/androidsdk-release.aar +0 -0
  3. package/android/Flir/libs/thermalsdk-release.aar +0 -0
  4. package/android/Flir/src/main/java/flir/android/FlirCommands.java +40 -15
  5. package/android/Flir/src/main/java/flir/android/FlirDownloadManager.kt +26 -46
  6. package/android/Flir/src/main/java/flir/android/FlirManager.kt +265 -42
  7. package/android/Flir/src/main/java/flir/android/FlirModule.kt +32 -0
  8. package/android/Flir/src/main/java/flir/android/FlirSDKLoader.kt +84 -195
  9. package/android/Flir/src/main/java/flir/android/FlirSdkManager.java +667 -797
  10. package/package.json +1 -1
  11. package/sdk-manifest.json +14 -7
  12. package/src/index.d.ts +21 -1
  13. package/android/Flir/libs/flir-stubs.jar +0 -0
  14. package/android/Flir/src/main/java/com/flir/thermalsdk/ErrorCodeException.java +0 -14
  15. package/android/Flir/src/main/java/com/flir/thermalsdk/image/ImageBuffer.java +0 -11
  16. package/android/Flir/src/main/java/com/flir/thermalsdk/image/JavaImageBuffer.java +0 -35
  17. package/android/Flir/src/main/java/com/flir/thermalsdk/image/Palette.java +0 -15
  18. package/android/Flir/src/main/java/com/flir/thermalsdk/image/PaletteManager.java +0 -16
  19. package/android/Flir/src/main/java/com/flir/thermalsdk/image/Point.java +0 -11
  20. package/android/Flir/src/main/java/com/flir/thermalsdk/image/ThermalImage.java +0 -23
  21. package/android/Flir/src/main/java/com/flir/thermalsdk/image/ThermalValue.java +0 -9
  22. package/android/Flir/src/main/java/com/flir/thermalsdk/live/CameraType.java +0 -8
  23. package/android/Flir/src/main/java/com/flir/thermalsdk/live/CommunicationInterface.java +0 -16
  24. package/android/Flir/src/main/java/com/flir/thermalsdk/live/Identity.java +0 -23
  25. package/android/Flir/src/main/java/com/flir/thermalsdk/live/IpSettings.java +0 -9
  26. package/android/Flir/src/main/java/com/flir/thermalsdk/live/connectivity/ConnectionStatusListener.java +0 -7
  27. package/android/Flir/src/main/java/com/flir/thermalsdk/live/remote/OnReceived.java +0 -5
  28. package/android/Flir/src/main/java/com/flir/thermalsdk/live/remote/OnRemoteError.java +0 -7
  29. package/android/Flir/src/main/java/flir/android/CameraHandler.java +0 -224
  30. package/android/Flir/src/main/java/flir/android/FlirConnectionManager.java +0 -354
  31. package/android/Flir/src/main/java/flir/android/FlirController.kt +0 -11
  32. package/android/Flir/src/main/java/flir/android/FlirDiscoveryManager.java +0 -236
  33. package/android/Flir/src/main/java/flir/android/FrameDataHolder.java +0 -14
@@ -14,21 +14,20 @@ android {
14
14
  testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
15
15
  }
16
16
 
17
- compileOptions {
18
- sourceCompatibility = JavaVersion.VERSION_17
19
- targetCompatibility = JavaVersion.VERSION_17
17
+ compileOptions {
18
+ sourceCompatibility = JavaVersion.VERSION_21
19
+ targetCompatibility = JavaVersion.VERSION_21
20
20
  }
21
21
 
22
22
  kotlinOptions {
23
- jvmTarget = "17"
23
+ jvmTarget = JavaVersion.VERSION_21.toString()
24
24
  }
25
-
26
- java {
27
- toolchain {
28
- languageVersion.set(JavaLanguageVersion.of(21))
29
- }
25
+
26
+ buildFeatures {
27
+ viewBinding = true
30
28
  }
31
29
 
30
+
32
31
  publishing {
33
32
  singleVariant("release") {
34
33
  withJavadocJar()
@@ -37,35 +36,23 @@ android {
37
36
  }
38
37
  }
39
38
 
40
- repositories {
41
- google()
42
- mavenCentral()
43
- // Resolve local AARs which will be installed into mavenLocal by CI (JitPack)
44
- mavenLocal()
45
- flatDir { dirs("libs") }
46
- }
47
-
48
39
  dependencies {
49
40
  // React Native
50
41
  implementation("com.facebook.react:react-native:+")
51
42
 
52
- // Kotlin coroutines for async downloads
43
+ // Kotlin coroutines
53
44
  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
54
45
 
55
- // Play Feature Delivery (optional - for Play Store SDK delivery)
56
- implementation("com.google.android.play:feature-delivery:2.1.0")
57
- implementation("com.google.android.play:feature-delivery-ktx:2.1.0")
58
-
59
- // FLIR SDK - Use stub JAR for compilation (AARs are Java 21, stubs work with Java 17)
60
- // The actual SDK AARs are downloaded on-demand at runtime via FlirDownload.download()
61
- compileOnly(files("libs/flir-stubs.jar"))
46
+ // FLIR SDK - Use the actual AAR files from libs folder
47
+ // Using 'api' to expose SDK classes to consumers and Java source files
48
+ // flatDir must be configured in settings.gradle or root build.gradle
49
+ api(files("libs/androidsdk-release.aar"))
50
+ api(files("libs/thermalsdk-release.aar"))
62
51
 
63
52
  // Minimal compile deps to satisfy source references
64
53
  implementation("androidx.annotation:annotation:1.5.0")
65
54
 
66
-
67
55
  // Prevent duplicate SLF4J classes when a consumer also brings `org.slf4j:slf4j-api`
68
- // The vendor AAR may embed slf4j classes; exclude the API from being pulled transitively
69
56
  configurations.all {
70
57
  exclude(group = "org.slf4j", module = "slf4j-api")
71
58
  }
@@ -3,8 +3,6 @@ package flir.android;
3
3
  import androidx.annotation.Nullable;
4
4
  import com.facebook.react.bridge.ReadableArray;
5
5
  import com.facebook.react.bridge.WritableMap;
6
- // import com.otaliastudios.cameraview.CameraView; // Removed dependency
7
- // import ilabs.libs.io.data.Var; // Removed dependency
8
6
 
9
7
  public final class FlirCommands {
10
8
 
@@ -27,19 +25,16 @@ public final class FlirCommands {
27
25
  String deviceId = args.getString(0);
28
26
  android.util.Log.i("CameraCommand", "[FLIR] Selecting device: " + deviceId);
29
27
 
30
- // Get device from discovery manager
31
- FlirDiscoveryManager discoveryMgr = FlirDiscoveryManager.getInstance();
32
-
33
- com.flir.thermalsdk.live.Identity identity = discoveryMgr.getDeviceById(deviceId);
34
-
35
- if (identity == null) {
28
+ // Get FlirManager instance and select device
29
+ FlirManager flirManager = FlirManager.INSTANCE;
30
+ if (flirManager == null) {
36
31
  resp.putString("status", "error");
37
- resp.putString("message", "Device not found: " + deviceId);
32
+ resp.putString("message", "FlirManager not initialized");
38
33
  return;
39
34
  }
40
35
 
41
- // Select and connect to device
42
- FlirConnectionManager.getInstance().selectDevice(identity);
36
+ // Select device by ID (triggers connection)
37
+ flirManager.switchToDevice(deviceId);
43
38
 
44
39
  resp.putString("status", "ok");
45
40
  resp.putString("message", "Device selected");
@@ -71,8 +66,15 @@ public final class FlirCommands {
71
66
  return;
72
67
  }
73
68
 
74
- // Set type in discovery manager
75
- FlirDiscoveryManager.getInstance().setEmulatorType(type);
69
+ // Get FlirManager instance and set emulator type
70
+ FlirManager flirManager = FlirManager.INSTANCE;
71
+ if (flirManager == null) {
72
+ resp.putString("status", "error");
73
+ resp.putString("message", "FlirManager not initialized");
74
+ return;
75
+ }
76
+
77
+ flirManager.setPreferredEmulatorType(type);
76
78
 
77
79
  android.util.Log.i("CameraCommand", "[FLIR] Emulator type set to: " + type);
78
80
 
@@ -96,8 +98,17 @@ public final class FlirCommands {
96
98
 
97
99
  android.util.Log.i("CameraCommand", "[FLIR] Setting palette acol=" + acol);
98
100
 
99
- // Set palette via FlirConnectionManager
100
- FlirConnectionManager.getInstance().setPalette(acol);
101
+ // Get FlirManager instance and set palette by index
102
+ FlirManager flirManager = FlirManager.INSTANCE;
103
+ if (flirManager == null) {
104
+ resp.putString("status", "error");
105
+ resp.putString("message", "FlirManager not initialized");
106
+ return;
107
+ }
108
+
109
+ // Map acol index to palette name
110
+ String paletteName = mapAcolToPaletteName(acol);
111
+ flirManager.setPalette(paletteName);
101
112
 
102
113
  resp.putString("status", "ok");
103
114
  resp.putString("message", "Palette set");
@@ -108,4 +119,18 @@ public final class FlirCommands {
108
119
  resp.putString("message", e.getMessage());
109
120
  }
110
121
  }
122
+
123
+ private static String mapAcolToPaletteName(int acol) {
124
+ switch (acol) {
125
+ case 0: return "gray";
126
+ case 1: return "iron";
127
+ case 2: return "rainbow";
128
+ case 3: return "lava";
129
+ case 4: return "arctic";
130
+ case 5: return "coldest";
131
+ case 6: return "hottest";
132
+ case 7: return "contrast";
133
+ default: return "iron";
134
+ }
135
+ }
111
136
  }
@@ -1,75 +1,55 @@
1
1
  package flir.android
2
2
 
3
3
  import com.facebook.react.bridge.*
4
- import com.facebook.react.modules.core.DeviceEventManagerModule
5
- import kotlinx.coroutines.*
6
4
 
5
+ /**
6
+ * FlirDownloadManager - React Native module for SDK status
7
+ *
8
+ * Since the SDK is now bundled in the AAR, this module just reports
9
+ * that the SDK is always available.
10
+ */
7
11
  class FlirDownloadManager(private val reactContext: ReactApplicationContext) :
8
12
  ReactContextBaseJavaModule(reactContext) {
9
13
 
10
- private var downloadJob: Job? = null
11
- private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob())
12
-
13
14
  override fun getName() = "FlirDownloadManager"
14
15
 
15
- override fun initialize() {
16
- FlirSDKLoader.init(reactContext)
17
- }
18
-
19
16
  @ReactMethod
20
17
  fun isFlirAvailable(promise: Promise) {
21
- promise.resolve(FlirSDKLoader.isSDKAvailable(reactContext))
18
+ // SDK is bundled - always available
19
+ promise.resolve(true)
22
20
  }
23
21
 
24
22
  @ReactMethod
25
23
  fun getDownloadSize(promise: Promise) {
26
- promise.resolve(FlirSDKLoader.getDownloadSize(reactContext).toDouble())
24
+ // No download needed
25
+ promise.resolve(0.0)
27
26
  }
28
27
 
29
28
  @ReactMethod
30
- fun downloadFlirSDK(promise: Promise) {
31
- downloadJob = scope.launch {
32
- val result = FlirSDKLoader.downloadDirect(reactContext) { downloaded, total ->
33
- sendEvent("FlirDownloadProgress", Arguments.createMap().apply {
34
- putDouble("bytesDownloaded", downloaded.toDouble())
35
- putDouble("totalBytes", total.toDouble())
36
- putDouble("percent", (downloaded.toDouble() / total) * 100)
37
- })
38
- }
39
-
40
- result.fold(
41
- onSuccess = {
42
- sendEvent("FlirDownloadComplete", Arguments.createMap())
43
- promise.resolve(true)
44
- },
45
- onFailure = { error ->
46
- sendEvent("FlirDownloadError", Arguments.createMap().apply {
47
- putString("error", error.message)
48
- })
49
- promise.reject("E_DOWNLOAD", error.message, error)
50
- }
51
- )
52
- }
29
+ fun getDeviceArch(promise: Promise) {
30
+ promise.resolve(FlirSDKLoader.getDeviceArch())
53
31
  }
54
32
 
55
33
  @ReactMethod
56
- fun cancelDownload() {
57
- downloadJob?.cancel()
34
+ fun downloadFlirSDK(promise: Promise) {
35
+ // SDK is bundled - no download needed
36
+ promise.resolve(true)
58
37
  }
59
38
 
60
39
  @ReactMethod
61
- fun deleteSDK(promise: Promise) {
62
- promise.resolve(FlirSDKLoader.deleteSDK(reactContext))
40
+ fun getSDKStatus(promise: Promise) {
41
+ val status = Arguments.createMap().apply {
42
+ putBoolean("available", true)
43
+ putBoolean("bundled", true)
44
+ putString("arch", FlirSDKLoader.getDeviceArch())
45
+ putString("version", "4.16.0")
46
+ }
47
+ promise.resolve(status)
63
48
  }
64
49
 
65
50
  @ReactMethod
66
- fun addListener(eventName: String) {}
67
-
68
- @ReactMethod
69
- fun removeListeners(count: Int) {}
70
-
71
- private fun sendEvent(name: String, params: WritableMap) {
72
- reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
73
- .emit(name, params)
51
+ fun cancelDownload(promise: Promise) {
52
+ // Nothing to cancel
53
+ promise.resolve(true)
74
54
  }
75
55
  }