ilabs-flir 1.0.4 → 1.0.6

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 (38) 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/AndroidManifest.xml +14 -0
  5. package/android/Flir/src/main/java/flir/android/FlirDownloadManager.kt +23 -44
  6. package/android/Flir/src/main/java/flir/android/FlirManager.kt +312 -313
  7. package/android/Flir/src/main/java/flir/android/FlirModule.kt +183 -0
  8. package/android/Flir/src/main/java/flir/android/FlirSDKLoader.kt +35 -194
  9. package/android/Flir/src/main/java/flir/android/FlirSdkManager.java +409 -1339
  10. package/package.json +1 -1
  11. package/src/index.d.ts +60 -1
  12. package/android/Flir/libs/flir-stubs.jar +0 -0
  13. package/android/Flir/src/main/java/com/flir/thermalsdk/ErrorCode.java +0 -13
  14. package/android/Flir/src/main/java/com/flir/thermalsdk/ErrorCodeException.java +0 -14
  15. package/android/Flir/src/main/java/com/flir/thermalsdk/ThermalSdkAndroid.java +0 -16
  16. package/android/Flir/src/main/java/com/flir/thermalsdk/androidsdk/image/BitmapAndroid.java +0 -20
  17. package/android/Flir/src/main/java/com/flir/thermalsdk/image/ImageBuffer.java +0 -11
  18. package/android/Flir/src/main/java/com/flir/thermalsdk/image/JavaImageBuffer.java +0 -35
  19. package/android/Flir/src/main/java/com/flir/thermalsdk/image/Palette.java +0 -15
  20. package/android/Flir/src/main/java/com/flir/thermalsdk/image/PaletteManager.java +0 -16
  21. package/android/Flir/src/main/java/com/flir/thermalsdk/image/Point.java +0 -11
  22. package/android/Flir/src/main/java/com/flir/thermalsdk/image/ThermalImage.java +0 -23
  23. package/android/Flir/src/main/java/com/flir/thermalsdk/image/ThermalValue.java +0 -9
  24. package/android/Flir/src/main/java/com/flir/thermalsdk/live/Camera.java +0 -26
  25. package/android/Flir/src/main/java/com/flir/thermalsdk/live/CameraType.java +0 -8
  26. package/android/Flir/src/main/java/com/flir/thermalsdk/live/CommunicationInterface.java +0 -16
  27. package/android/Flir/src/main/java/com/flir/thermalsdk/live/ConnectParameters.java +0 -16
  28. package/android/Flir/src/main/java/com/flir/thermalsdk/live/Identity.java +0 -23
  29. package/android/Flir/src/main/java/com/flir/thermalsdk/live/IpSettings.java +0 -9
  30. package/android/Flir/src/main/java/com/flir/thermalsdk/live/RemoteControl.java +0 -16
  31. package/android/Flir/src/main/java/com/flir/thermalsdk/live/connectivity/ConnectionStatusListener.java +0 -7
  32. package/android/Flir/src/main/java/com/flir/thermalsdk/live/discovery/DiscoveryEventListener.java +0 -14
  33. package/android/Flir/src/main/java/com/flir/thermalsdk/live/discovery/DiscoveryFactory.java +0 -33
  34. package/android/Flir/src/main/java/com/flir/thermalsdk/live/remote/OnReceived.java +0 -5
  35. package/android/Flir/src/main/java/com/flir/thermalsdk/live/remote/OnRemoteError.java +0 -7
  36. package/android/Flir/src/main/java/com/flir/thermalsdk/live/streaming/Stream.java +0 -8
  37. package/android/Flir/src/main/java/com/flir/thermalsdk/live/streaming/ThermalStreamer.java +0 -28
  38. package/android/Flir/src/main/java/com/flir/thermalsdk/live/streaming/VisualStreamer.java +0 -18
@@ -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
  }
@@ -25,6 +25,20 @@
25
25
  <!-- Required by ACE SDK architecture for local network communication -->
26
26
  <uses-permission android:name="android.permission.INTERNET" />
27
27
 
28
+ <!-- ============================================ -->
29
+ <!-- WiFi permissions for network discovery -->
30
+ <!-- Required for FLIR ONE Edge and network cams -->
31
+ <!-- ============================================ -->
32
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
33
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
34
+ <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
35
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
36
+ <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
37
+
38
+ <!-- Location permission required for WiFi scanning on Android 10+ -->
39
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
40
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
41
+
28
42
  <!-- Note: USB permissions are handled at runtime via UsbPermissionHandler -->
29
43
  <!-- No additional USB permissions needed in manifest -->
30
44
 
@@ -1,25 +1,28 @@
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
16
  @ReactMethod
16
17
  fun isFlirAvailable(promise: Promise) {
17
- promise.resolve(FlirSDKLoader.isSDKAvailable(reactContext))
18
+ // SDK is bundled - always available
19
+ promise.resolve(true)
18
20
  }
19
21
 
20
22
  @ReactMethod
21
23
  fun getDownloadSize(promise: Promise) {
22
- promise.resolve(FlirSDKLoader.getDownloadSize(reactContext).toDouble())
24
+ // No download needed
25
+ promise.resolve(0.0)
23
26
  }
24
27
 
25
28
  @ReactMethod
@@ -29,48 +32,24 @@ class FlirDownloadManager(private val reactContext: ReactApplicationContext) :
29
32
 
30
33
  @ReactMethod
31
34
  fun downloadFlirSDK(promise: Promise) {
32
- downloadJob = scope.launch {
33
- val result = FlirSDKLoader.downloadSDK(reactContext) { downloaded, total ->
34
- sendEvent("FlirDownloadProgress", Arguments.createMap().apply {
35
- putDouble("bytesDownloaded", downloaded.toDouble())
36
- putDouble("totalBytes", total.toDouble())
37
- putDouble("percent", (downloaded.toDouble() / total) * 100)
38
- })
39
- }
40
-
41
- result.fold(
42
- onSuccess = {
43
- sendEvent("FlirDownloadComplete", Arguments.createMap())
44
- promise.resolve(true)
45
- },
46
- onFailure = { error ->
47
- sendEvent("FlirDownloadError", Arguments.createMap().apply {
48
- putString("error", error.message)
49
- })
50
- promise.reject("E_DOWNLOAD", error.message, error)
51
- }
52
- )
53
- }
54
- }
55
-
56
- @ReactMethod
57
- fun cancelDownload() {
58
- downloadJob?.cancel()
35
+ // SDK is bundled - no download needed
36
+ promise.resolve(true)
59
37
  }
60
38
 
61
39
  @ReactMethod
62
- fun deleteSDK(promise: Promise) {
63
- 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)
64
48
  }
65
49
 
66
50
  @ReactMethod
67
- fun addListener(eventName: String) {}
68
-
69
- @ReactMethod
70
- fun removeListeners(count: Int) {}
71
-
72
- private fun sendEvent(name: String, params: WritableMap) {
73
- reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
74
- .emit(name, params)
51
+ fun cancelDownload(promise: Promise) {
52
+ // Nothing to cancel
53
+ promise.resolve(true)
75
54
  }
76
55
  }