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.
- package/android/Flir/build.gradle.kts +14 -27
- package/android/Flir/libs/androidsdk-release.aar +0 -0
- package/android/Flir/libs/thermalsdk-release.aar +0 -0
- package/android/Flir/src/main/java/flir/android/FlirCommands.java +40 -15
- package/android/Flir/src/main/java/flir/android/FlirDownloadManager.kt +26 -46
- package/android/Flir/src/main/java/flir/android/FlirManager.kt +265 -42
- package/android/Flir/src/main/java/flir/android/FlirModule.kt +32 -0
- package/android/Flir/src/main/java/flir/android/FlirSDKLoader.kt +84 -195
- package/android/Flir/src/main/java/flir/android/FlirSdkManager.java +667 -797
- package/package.json +1 -1
- package/sdk-manifest.json +14 -7
- package/src/index.d.ts +21 -1
- package/android/Flir/libs/flir-stubs.jar +0 -0
- package/android/Flir/src/main/java/com/flir/thermalsdk/ErrorCodeException.java +0 -14
- package/android/Flir/src/main/java/com/flir/thermalsdk/image/ImageBuffer.java +0 -11
- package/android/Flir/src/main/java/com/flir/thermalsdk/image/JavaImageBuffer.java +0 -35
- package/android/Flir/src/main/java/com/flir/thermalsdk/image/Palette.java +0 -15
- package/android/Flir/src/main/java/com/flir/thermalsdk/image/PaletteManager.java +0 -16
- package/android/Flir/src/main/java/com/flir/thermalsdk/image/Point.java +0 -11
- package/android/Flir/src/main/java/com/flir/thermalsdk/image/ThermalImage.java +0 -23
- package/android/Flir/src/main/java/com/flir/thermalsdk/image/ThermalValue.java +0 -9
- package/android/Flir/src/main/java/com/flir/thermalsdk/live/CameraType.java +0 -8
- package/android/Flir/src/main/java/com/flir/thermalsdk/live/CommunicationInterface.java +0 -16
- package/android/Flir/src/main/java/com/flir/thermalsdk/live/Identity.java +0 -23
- package/android/Flir/src/main/java/com/flir/thermalsdk/live/IpSettings.java +0 -9
- package/android/Flir/src/main/java/com/flir/thermalsdk/live/connectivity/ConnectionStatusListener.java +0 -7
- package/android/Flir/src/main/java/com/flir/thermalsdk/live/remote/OnReceived.java +0 -5
- package/android/Flir/src/main/java/com/flir/thermalsdk/live/remote/OnRemoteError.java +0 -7
- package/android/Flir/src/main/java/flir/android/CameraHandler.java +0 -224
- package/android/Flir/src/main/java/flir/android/FlirConnectionManager.java +0 -354
- package/android/Flir/src/main/java/flir/android/FlirController.kt +0 -11
- package/android/Flir/src/main/java/flir/android/FlirDiscoveryManager.java +0 -236
- 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
|
-
|
|
18
|
-
sourceCompatibility = JavaVersion.
|
|
19
|
-
targetCompatibility = JavaVersion.
|
|
17
|
+
compileOptions {
|
|
18
|
+
sourceCompatibility = JavaVersion.VERSION_21
|
|
19
|
+
targetCompatibility = JavaVersion.VERSION_21
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
kotlinOptions {
|
|
23
|
-
jvmTarget =
|
|
23
|
+
jvmTarget = JavaVersion.VERSION_21.toString()
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
43
|
+
// Kotlin coroutines
|
|
53
44
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
|
|
54
45
|
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
|
31
|
-
|
|
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", "
|
|
32
|
+
resp.putString("message", "FlirManager not initialized");
|
|
38
33
|
return;
|
|
39
34
|
}
|
|
40
35
|
|
|
41
|
-
// Select
|
|
42
|
-
|
|
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
|
-
//
|
|
75
|
-
|
|
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
|
-
//
|
|
100
|
-
|
|
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
|
-
|
|
18
|
+
// SDK is bundled - always available
|
|
19
|
+
promise.resolve(true)
|
|
22
20
|
}
|
|
23
21
|
|
|
24
22
|
@ReactMethod
|
|
25
23
|
fun getDownloadSize(promise: Promise) {
|
|
26
|
-
|
|
24
|
+
// No download needed
|
|
25
|
+
promise.resolve(0.0)
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
@ReactMethod
|
|
30
|
-
fun
|
|
31
|
-
|
|
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
|
|
57
|
-
|
|
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
|
|
62
|
-
|
|
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
|
|
67
|
-
|
|
68
|
-
|
|
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
|
}
|