barkoder-nativescript 1.6.4 → 1.6.7
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/barkoder-nativescript.android.ts +363 -5
- package/barkoder-nativescript.common.ts +11 -3
- package/barkoder-nativescript.ios.ts +354 -4
- package/package.json +1 -1
- package/platforms/android/barkoder.aar +0 -0
- package/platforms/ios/Barkoder.xcframework/Info.plist +5 -5
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/Barkoder +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/Headers/iBarkoder.h +36 -4
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/Info.plist +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/default.metallib +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/metadata.json +77 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/model/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.net +5331 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.shape +1740 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.weights +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/neural_network_optionals/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/metadata.json +77 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/model/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.net +5331 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.shape +1740 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.weights +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/neural_network_optionals/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/Barkoder +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/Headers/iBarkoder.h +36 -4
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/Info.plist +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/_CodeSignature/CodeResources +119 -53
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/default.metallib +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/metadata.json +77 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/model/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.net +5331 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.shape +1740 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.weights +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/neural_network_optionals/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/metadata.json +77 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.net +5331 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.shape +1740 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.weights +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/neural_network_optionals/coremldata.bin +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/BarkoderSDK +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Headers/BarkoderSDK-Swift.h +116 -12
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Info.plist +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.abi.json +2507 -1044
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +54 -4
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.swiftinterface +54 -4
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/templates.json +32 -23
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/BarkoderSDK +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Headers/BarkoderSDK-Swift.h +232 -24
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Info.plist +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +2507 -1044
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +54 -4
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +54 -4
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +2507 -1044
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +54 -4
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +54 -4
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/_CodeSignature/CodeResources +25 -25
- package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/templates.json +32 -23
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_384x256.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_384x256.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_384x256.mlmodelc/metadata.json +0 -88
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_384x256.mlmodelc/model.mil +0 -753
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_384x256.mlmodelc/weights/weight.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/metadata.json +0 -88
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/model.mil +0 -753
- package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/weights/weight.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_384x256.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_384x256.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_384x256.mlmodelc/metadata.json +0 -88
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_384x256.mlmodelc/model.mil +0 -753
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_384x256.mlmodelc/weights/weight.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/analytics/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/coremldata.bin +0 -0
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/metadata.json +0 -88
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/model.mil +0 -753
- package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/weights/weight.bin +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BarkoderConstants } from "./barkoder-nativescript.common";
|
|
2
2
|
import * as application from "@nativescript/core/application";
|
|
3
|
-
import { View } from "@nativescript/core";
|
|
3
|
+
import { Color, View } from "@nativescript/core";
|
|
4
4
|
import { BarkoderView } from "./barkoder-nativescript.common";
|
|
5
5
|
import { ImageSource } from '@nativescript/core';
|
|
6
6
|
|
|
@@ -35,6 +35,9 @@ export class BarkoderViewAndroid extends View {
|
|
|
35
35
|
this.nativeView = this.bkdView;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
38
41
|
/**
|
|
39
42
|
* Initiates the barcode scanning process, allowing the application to detect and decode barcodes from the device's camera feed
|
|
40
43
|
*/
|
|
@@ -44,16 +47,36 @@ export class BarkoderViewAndroid extends View {
|
|
|
44
47
|
const resultCallback = new com.barkoder.interfaces.BarkoderResultCallback({
|
|
45
48
|
scanningFinished: (
|
|
46
49
|
results: any[],
|
|
47
|
-
thumbnails: any
|
|
50
|
+
thumbnails: any, // not a true JS array!
|
|
48
51
|
resultImage: any
|
|
49
52
|
) => {
|
|
53
|
+
// Convert native array to JS array first
|
|
54
|
+
const jsThumbnails = [];
|
|
55
|
+
|
|
56
|
+
if(thumbnails != null) {
|
|
57
|
+
for (let i = 0; i < thumbnails.length; i++) {
|
|
58
|
+
jsThumbnails.push(thumbnails[i]);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
const convertedThumbnails = jsThumbnails.map((bitmap) => {
|
|
64
|
+
const imgSrc = new ImageSource();
|
|
65
|
+
imgSrc.setNativeSource(bitmap);
|
|
66
|
+
return imgSrc;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const convertedResultImage = new ImageSource();
|
|
70
|
+
convertedResultImage.setNativeSource(resultImage);
|
|
71
|
+
|
|
50
72
|
BarkoderResultCallback.scanningFinished(
|
|
51
73
|
results,
|
|
52
|
-
|
|
53
|
-
|
|
74
|
+
convertedThumbnails,
|
|
75
|
+
convertedResultImage
|
|
54
76
|
);
|
|
55
77
|
},
|
|
56
78
|
});
|
|
79
|
+
|
|
57
80
|
this.bkdView.startScanning(resultCallback);
|
|
58
81
|
}
|
|
59
82
|
|
|
@@ -101,6 +124,10 @@ export class BarkoderViewAndroid extends View {
|
|
|
101
124
|
this.bkdView.stopScanning();
|
|
102
125
|
}
|
|
103
126
|
|
|
127
|
+
captureImage(): void {
|
|
128
|
+
this.bkdView.captureImage();
|
|
129
|
+
}
|
|
130
|
+
|
|
104
131
|
pauseScanning(): void {
|
|
105
132
|
this.bkdView.pauseScanning();
|
|
106
133
|
}
|
|
@@ -127,6 +154,15 @@ export class BarkoderViewAndroid extends View {
|
|
|
127
154
|
this.bkdView.setFlashEnabled(enabled);
|
|
128
155
|
}
|
|
129
156
|
|
|
157
|
+
setARContinueScanningOnLimit(enabled: boolean): void {
|
|
158
|
+
this.bkdView.config.arConfig.setContinueScanningOnLimit(enabled);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
setAREmitResultsAtSessionEndOnly(enabled: boolean): void {
|
|
162
|
+
this.bkdView.config.arConfig.emitResultsAtSessionEndOnly = enabled;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
|
|
130
166
|
/**
|
|
131
167
|
* Retrieves the maximum available zoom factor for the device's camera
|
|
132
168
|
*/
|
|
@@ -244,6 +280,252 @@ export class BarkoderViewAndroid extends View {
|
|
|
244
280
|
this.bkdView.config.setRegionOfInterestVisible(enabled);
|
|
245
281
|
}
|
|
246
282
|
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Configures the flash button with custom settings, supporting NativeScript types.
|
|
289
|
+
*/
|
|
290
|
+
configureFlashButton(
|
|
291
|
+
visible: boolean,
|
|
292
|
+
position: number[],
|
|
293
|
+
iconSize: number,
|
|
294
|
+
tintColor: string | Color | null,
|
|
295
|
+
backgroundColor: string | Color | null,
|
|
296
|
+
cornerRadius: number,
|
|
297
|
+
padding: number,
|
|
298
|
+
useCustomIcon: boolean,
|
|
299
|
+
flashOnIconBase64: string,
|
|
300
|
+
flashOffIconBase64: string
|
|
301
|
+
): void {
|
|
302
|
+
|
|
303
|
+
let nativeTintColor: java.lang.Integer = null;
|
|
304
|
+
if (tintColor != null) {
|
|
305
|
+
const color = (tintColor instanceof Color)
|
|
306
|
+
? tintColor
|
|
307
|
+
: new Color(tintColor as string);
|
|
308
|
+
nativeTintColor = java.lang.Integer.valueOf(color.android);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
let nativeBackgroundColor: java.lang.Integer = null;
|
|
312
|
+
if (backgroundColor != null) {
|
|
313
|
+
const color = (backgroundColor instanceof Color)
|
|
314
|
+
? backgroundColor
|
|
315
|
+
: new Color(backgroundColor as string);
|
|
316
|
+
nativeBackgroundColor = java.lang.Integer.valueOf(color.android);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const nativePosition = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 2);
|
|
320
|
+
nativePosition[0] = position[0];
|
|
321
|
+
nativePosition[1] = position[1];
|
|
322
|
+
|
|
323
|
+
let nativeFlashOnBitmap = null;
|
|
324
|
+
let nativeFlashOffBitmap = null;
|
|
325
|
+
|
|
326
|
+
if (useCustomIcon) {
|
|
327
|
+
nativeFlashOnBitmap = this.decodeBase64ToBitmap(flashOnIconBase64);
|
|
328
|
+
nativeFlashOffBitmap = this.decodeBase64ToBitmap(flashOffIconBase64);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
this.bkdView.configureFlashButton(
|
|
332
|
+
visible,
|
|
333
|
+
nativePosition,
|
|
334
|
+
iconSize,
|
|
335
|
+
nativeTintColor,
|
|
336
|
+
nativeBackgroundColor,
|
|
337
|
+
cornerRadius,
|
|
338
|
+
padding,
|
|
339
|
+
useCustomIcon,
|
|
340
|
+
nativeFlashOnBitmap,
|
|
341
|
+
nativeFlashOffBitmap
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
private decodeBase64ToBitmap(base64String: string): android.graphics.Bitmap | null {
|
|
347
|
+
if (!base64String) {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
try {
|
|
351
|
+
// 1. Decode the Base64 string into a byte array
|
|
352
|
+
const decodedBytes = android.util.Base64.decode(base64String, android.util.Base64.DEFAULT);
|
|
353
|
+
|
|
354
|
+
// 2. Use BitmapFactory to create a Bitmap from the byte array
|
|
355
|
+
const bitmap = android.graphics.BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
|
|
356
|
+
|
|
357
|
+
return bitmap;
|
|
358
|
+
} catch (e) {
|
|
359
|
+
console.error("Error decoding Base64 string to Bitmap:", e);
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
configureCloseButton(
|
|
365
|
+
visible: boolean,
|
|
366
|
+
position: number[],
|
|
367
|
+
iconSize: number,
|
|
368
|
+
tintColor: string | Color | null,
|
|
369
|
+
backgroundColor: string | Color | null,
|
|
370
|
+
cornerRadius: number,
|
|
371
|
+
padding: number,
|
|
372
|
+
useCustomIcon: boolean,
|
|
373
|
+
customIcon: string,
|
|
374
|
+
onCloseCallback?: () => void
|
|
375
|
+
): void {
|
|
376
|
+
if (!this.bkdView) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// ✅ 1. Safely convert tintColor
|
|
381
|
+
let nativeTintColor: java.lang.Integer = null;
|
|
382
|
+
if (tintColor != null) {
|
|
383
|
+
const color = tintColor instanceof Color
|
|
384
|
+
? tintColor
|
|
385
|
+
: new Color(tintColor as string);
|
|
386
|
+
nativeTintColor = java.lang.Integer.valueOf(color.android);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// ✅ 2. Safely convert backgroundColor
|
|
390
|
+
let nativeBackgroundColor: java.lang.Integer = null;
|
|
391
|
+
if (backgroundColor != null) {
|
|
392
|
+
const color = backgroundColor instanceof Color
|
|
393
|
+
? backgroundColor
|
|
394
|
+
: new Color(backgroundColor as string);
|
|
395
|
+
nativeBackgroundColor = java.lang.Integer.valueOf(color.android);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// ✅ 3. Convert position to float[]
|
|
399
|
+
const nativePosition = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 2);
|
|
400
|
+
nativePosition[0] = position[0];
|
|
401
|
+
nativePosition[1] = position[1];
|
|
402
|
+
|
|
403
|
+
// ✅ 4. Decode base64 icon if needed
|
|
404
|
+
let customIconBitmap = null;
|
|
405
|
+
if (useCustomIcon && customIcon) {
|
|
406
|
+
customIconBitmap = this.decodeBase64ToBitmap(customIcon);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
// ✅ 5. Wrap the JS callback into a native Runnable
|
|
410
|
+
const nativeCallback = onCloseCallback
|
|
411
|
+
? new java.lang.Runnable({
|
|
412
|
+
run: () => {
|
|
413
|
+
onCloseCallback();
|
|
414
|
+
}
|
|
415
|
+
})
|
|
416
|
+
: null;
|
|
417
|
+
|
|
418
|
+
// ✅ 6. Call native Android method
|
|
419
|
+
this.bkdView.configureCloseButton(
|
|
420
|
+
visible,
|
|
421
|
+
nativePosition,
|
|
422
|
+
iconSize,
|
|
423
|
+
nativeTintColor,
|
|
424
|
+
nativeBackgroundColor,
|
|
425
|
+
cornerRadius,
|
|
426
|
+
padding,
|
|
427
|
+
useCustomIcon,
|
|
428
|
+
customIconBitmap,
|
|
429
|
+
nativeCallback
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
configureZoomButton(
|
|
435
|
+
visible: boolean,
|
|
436
|
+
position: number[], // [xDp, yDp]
|
|
437
|
+
iconSize: number,
|
|
438
|
+
tintColor: string | Color | null,
|
|
439
|
+
backgroundColor: string | Color | null,
|
|
440
|
+
cornerRadius: number,
|
|
441
|
+
padding: number,
|
|
442
|
+
useCustomIcon: boolean,
|
|
443
|
+
zoomInIconBase64: string,
|
|
444
|
+
zoomOutIconBase64: string,
|
|
445
|
+
zoomedInFactor: number,
|
|
446
|
+
zoomedOutFactor: number
|
|
447
|
+
): void {
|
|
448
|
+
if (!this.bkdView || !global.isAndroid) {
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
// ✅ 1. Safely convert tintColor
|
|
453
|
+
let nativeTintColor: java.lang.Integer = null;
|
|
454
|
+
if (tintColor != null) {
|
|
455
|
+
const color = tintColor instanceof Color
|
|
456
|
+
? tintColor
|
|
457
|
+
: new Color(tintColor as string);
|
|
458
|
+
nativeTintColor = java.lang.Integer.valueOf(color.android);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// ✅ 2. Safely convert backgroundColor
|
|
462
|
+
let nativeBackgroundColor: java.lang.Integer = null;
|
|
463
|
+
if (backgroundColor != null) {
|
|
464
|
+
const color = backgroundColor instanceof Color
|
|
465
|
+
? backgroundColor
|
|
466
|
+
: new Color(backgroundColor as string);
|
|
467
|
+
nativeBackgroundColor = java.lang.Integer.valueOf(color.android);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// ✅ 3. Convert Position (JS number[] -> Java float[])
|
|
471
|
+
const nativePosition = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 2);
|
|
472
|
+
nativePosition[0] = position[0];
|
|
473
|
+
nativePosition[1] = position[1];
|
|
474
|
+
|
|
475
|
+
// ✅ 4. Decode base64 icons if using custom icons
|
|
476
|
+
let nativeZoomInBitmap = null;
|
|
477
|
+
let nativeZoomOutBitmap = null;
|
|
478
|
+
|
|
479
|
+
if (useCustomIcon && zoomInIconBase64 && zoomOutIconBase64) {
|
|
480
|
+
nativeZoomInBitmap = this.decodeBase64ToBitmap(zoomInIconBase64);
|
|
481
|
+
nativeZoomOutBitmap = this.decodeBase64ToBitmap(zoomOutIconBase64);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// ✅ 5. Call native method
|
|
485
|
+
this.bkdView.configureZoomButton(
|
|
486
|
+
visible,
|
|
487
|
+
nativePosition,
|
|
488
|
+
iconSize,
|
|
489
|
+
nativeTintColor,
|
|
490
|
+
nativeBackgroundColor,
|
|
491
|
+
cornerRadius,
|
|
492
|
+
padding,
|
|
493
|
+
useCustomIcon,
|
|
494
|
+
nativeZoomInBitmap,
|
|
495
|
+
nativeZoomOutBitmap,
|
|
496
|
+
zoomedInFactor,
|
|
497
|
+
zoomedOutFactor
|
|
498
|
+
);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
// --- Placeholder for a Conversion Utility (Not part of the core wrapper, but essential) ---
|
|
503
|
+
private convertToNativeBitmap(imageSource: any): any /* android.graphics.Bitmap */ {
|
|
504
|
+
if (!imageSource) {
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
// If the imageSource is already a native Bitmap (from a previous conversion/cache)
|
|
509
|
+
if (imageSource.android instanceof com.google.zxing.qrcode.encoder.ByteMatrix) { // Incorrect type, placeholder
|
|
510
|
+
// return imageSource.android;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
// Example conversion (highly simplified - you'll need the correct NativeScript helpers)
|
|
514
|
+
/* if (imageSource instanceof ImageSource) {
|
|
515
|
+
const nativeBitmap = imageSource.android;
|
|
516
|
+
return nativeBitmap;
|
|
517
|
+
}
|
|
518
|
+
*/
|
|
519
|
+
|
|
520
|
+
// For a robust wrapper, you would need to:
|
|
521
|
+
// 1. Check if the input is a file path, Base64 string, or an ImageSource object.
|
|
522
|
+
// 2. Use NativeScript's image-loading utilities to load and convert it to an
|
|
523
|
+
// `android.graphics.Bitmap`.
|
|
524
|
+
|
|
525
|
+
console.warn("Image conversion placeholder called. Replace with actual logic.");
|
|
526
|
+
return null; // Return null if conversion fails
|
|
527
|
+
}
|
|
528
|
+
|
|
247
529
|
/**
|
|
248
530
|
* Defines the Region of Interest (ROI) on the camera preview for barcode scanning, specifying an area where the application focuses on detecting barcodes
|
|
249
531
|
*/
|
|
@@ -478,7 +760,11 @@ export class BarkoderViewAndroid extends View {
|
|
|
478
760
|
} else if (decodingSpeed == BarkoderConstants.DecodingSpeed.Normal) {
|
|
479
761
|
this.bkdView.config.getDecoderConfig().decodingSpeed =
|
|
480
762
|
com.barkoder.Barkoder.DecodingSpeed.Normal;
|
|
481
|
-
} else {
|
|
763
|
+
} else if (decodingSpeed == BarkoderConstants.DecodingSpeed.Rigorous) {
|
|
764
|
+
this.bkdView.config.getDecoderConfig().decodingSpeed =
|
|
765
|
+
com.barkoder.Barkoder.DecodingSpeed.Rigorous;
|
|
766
|
+
}
|
|
767
|
+
else {
|
|
482
768
|
console.log("Not avilbilable Decoding Speed");
|
|
483
769
|
}
|
|
484
770
|
}
|
|
@@ -504,6 +790,10 @@ export class BarkoderViewAndroid extends View {
|
|
|
504
790
|
this.bkdView.config.getDecoderConfig().formattingType =
|
|
505
791
|
com.barkoder.Barkoder.FormattingType.AAMVA;
|
|
506
792
|
break;
|
|
793
|
+
case BarkoderConstants.FormattingType.SADL:
|
|
794
|
+
this.bkdView.config.getDecoderConfig().formattingType =
|
|
795
|
+
com.barkoder.Barkoder.FormattingType.SADL;
|
|
796
|
+
break;
|
|
507
797
|
}
|
|
508
798
|
}
|
|
509
799
|
|
|
@@ -662,6 +952,10 @@ export class BarkoderViewAndroid extends View {
|
|
|
662
952
|
return this.bkdView.config.getDecoderConfig().KIX.enabled;
|
|
663
953
|
case BarkoderConstants.DecoderType.JapanesePost:
|
|
664
954
|
return this.bkdView.config.getDecoderConfig().JapanesePost.enabled;
|
|
955
|
+
case BarkoderConstants.DecoderType.MaxiCode:
|
|
956
|
+
return this.bkdView.config.getDecoderConfig().MaxiCode.enabled;
|
|
957
|
+
case BarkoderConstants.DecoderType.OCRText:
|
|
958
|
+
return this.bkdView.config.getDecoderConfig().OCRText.enabled;
|
|
665
959
|
}
|
|
666
960
|
}
|
|
667
961
|
|
|
@@ -707,6 +1001,8 @@ export class BarkoderViewAndroid extends View {
|
|
|
707
1001
|
this.bkdView.config.getDecoderConfig().RoyalMail.enabled = false;
|
|
708
1002
|
this.bkdView.config.getDecoderConfig().KIX.enabled = false;
|
|
709
1003
|
this.bkdView.config.getDecoderConfig().JapanesePost.enabled = false;
|
|
1004
|
+
this.bkdView.config.getDecoderConfig().MaxiCode.enabled = false;
|
|
1005
|
+
this.bkdView.config.getDecoderConfig().OCRText.enabled = false;
|
|
710
1006
|
decoders.forEach((dt: BarkoderConstants.DecoderType) => {
|
|
711
1007
|
switch (dt) {
|
|
712
1008
|
case BarkoderConstants.DecoderType.Aztec:
|
|
@@ -823,6 +1119,12 @@ export class BarkoderViewAndroid extends View {
|
|
|
823
1119
|
case BarkoderConstants.DecoderType.JapanesePost:
|
|
824
1120
|
this.bkdView.config.getDecoderConfig().JapanesePost.enabled = true;
|
|
825
1121
|
break;
|
|
1122
|
+
case BarkoderConstants.DecoderType.MaxiCode:
|
|
1123
|
+
this.bkdView.config.getDecoderConfig().MaxiCode.enabled = true;
|
|
1124
|
+
break;
|
|
1125
|
+
case BarkoderConstants.DecoderType.OCRText:
|
|
1126
|
+
this.bkdView.config.getDecoderConfig().OCRText.enabled = true;
|
|
1127
|
+
break;
|
|
826
1128
|
default:
|
|
827
1129
|
break;
|
|
828
1130
|
}
|
|
@@ -1072,6 +1374,10 @@ export class BarkoderViewAndroid extends View {
|
|
|
1072
1374
|
this.bkdView.config.getDecoderConfig().maximumResultsCount = maximumResultsCount;
|
|
1073
1375
|
}
|
|
1074
1376
|
|
|
1377
|
+
setARResultLimit(resultLimit: number): void {
|
|
1378
|
+
this.bkdView.config.arConfig.resultLimit = resultLimit;
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1075
1381
|
/**
|
|
1076
1382
|
* Sets the delay in milliseconds for considering duplicate barcodes during scanning
|
|
1077
1383
|
*/
|
|
@@ -1079,6 +1385,29 @@ export class BarkoderViewAndroid extends View {
|
|
|
1079
1385
|
this.bkdView.config.getDecoderConfig().duplicatesDelayMs = duplicateDelayMs;
|
|
1080
1386
|
}
|
|
1081
1387
|
|
|
1388
|
+
getSadlImageFromExtra(extra: any): ImageSource | null {
|
|
1389
|
+
if (!extra || !global.isAndroid) {
|
|
1390
|
+
return null;
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
try {
|
|
1394
|
+
const bitmap =
|
|
1395
|
+
com.barkoder.BarkoderHelper.sadlImage(extra);
|
|
1396
|
+
|
|
1397
|
+
if (!bitmap) {
|
|
1398
|
+
return null;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1401
|
+
const imageSource = new ImageSource();
|
|
1402
|
+
imageSource.setNativeSource(bitmap);
|
|
1403
|
+
return imageSource;
|
|
1404
|
+
|
|
1405
|
+
} catch (e) {
|
|
1406
|
+
console.error('Failed to extract SADL image:', e);
|
|
1407
|
+
return null;
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1082
1411
|
/**
|
|
1083
1412
|
* Sets the caching duration (in milliseconds) for multi-code results
|
|
1084
1413
|
*/
|
|
@@ -1107,6 +1436,26 @@ export class BarkoderViewAndroid extends View {
|
|
|
1107
1436
|
return this.bkdView.config.getDecoderConfig().duplicatesDelayMs;
|
|
1108
1437
|
}
|
|
1109
1438
|
|
|
1439
|
+
setARImageResultEnabled(enabled: boolean): void {
|
|
1440
|
+
this.bkdView.config.arConfig.imageResultEnabled = enabled
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
setARBarcodeThumbnailOnResultEnabled(enabled: boolean): void {
|
|
1444
|
+
this.bkdView.config.arConfig.barcodeThumbnailOnResult = enabled
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
isARImageResultEnabled(): any {
|
|
1448
|
+
return this.bkdView.config.arConfig.imageResultEnabled
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
isARBarcodeThumbnailOnResultEnabled(): any {
|
|
1452
|
+
return this.bkdView.config.arConfig.barcodeThumbnailOnResult
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
getCurrentZoomFactor(): any {
|
|
1456
|
+
return this.bkdView.getCurrentZoomFactor()
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1110
1459
|
/**
|
|
1111
1460
|
* Sets whether the Direct Part Marking (DPM) mode for Datamatrix barcodes is enabled.
|
|
1112
1461
|
*/
|
|
@@ -1278,6 +1627,10 @@ export class BarkoderViewAndroid extends View {
|
|
|
1278
1627
|
com.barkoder.Barkoder.SetCustomOption(this.bkdView.config.getDecoderConfig(), string, mode);
|
|
1279
1628
|
}
|
|
1280
1629
|
|
|
1630
|
+
setCustomOptionGlobal(string: string, mode: number): void {
|
|
1631
|
+
com.barkoder.Barkoder.SetCustomOptionGlobal(string, mode);
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1281
1634
|
setDynamicExposure(mode : number) : void {
|
|
1282
1635
|
this.bkdView.setDynamicExposure(mode);
|
|
1283
1636
|
}
|
|
@@ -1522,3 +1875,8 @@ export class BarkoderViewAndroid extends View {
|
|
|
1522
1875
|
}
|
|
1523
1876
|
}
|
|
1524
1877
|
}
|
|
1878
|
+
function bitmapToImageSource(bitmap: android.graphics.Bitmap): ImageSource {
|
|
1879
|
+
const imageSource = new ImageSource();
|
|
1880
|
+
imageSource.setNativeSource(bitmap); // This is the key method
|
|
1881
|
+
return imageSource;
|
|
1882
|
+
}
|
|
@@ -59,7 +59,9 @@ export enum DecoderType {
|
|
|
59
59
|
AustralianPost = 35,
|
|
60
60
|
RoyalMail = 36,
|
|
61
61
|
KIX = 37,
|
|
62
|
-
JapanesePost = 38
|
|
62
|
+
JapanesePost = 38,
|
|
63
|
+
MaxiCode = 39,
|
|
64
|
+
OCRText = 40
|
|
63
65
|
|
|
64
66
|
}
|
|
65
67
|
|
|
@@ -67,13 +69,15 @@ export enum FormattingType {
|
|
|
67
69
|
Disabled = 0,
|
|
68
70
|
Automatic = 1,
|
|
69
71
|
GS1 = 2,
|
|
70
|
-
AAMVA = 3
|
|
72
|
+
AAMVA = 3,
|
|
73
|
+
SADL = 4
|
|
71
74
|
}
|
|
72
75
|
|
|
73
76
|
export enum DecodingSpeed {
|
|
74
77
|
Fast = 0,
|
|
75
78
|
Normal = 1,
|
|
76
|
-
Slow = 2
|
|
79
|
+
Slow = 2,
|
|
80
|
+
Rigorous = 3
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
export enum BarkoderResolution {
|
|
@@ -235,6 +239,8 @@ export class DekoderConfig {
|
|
|
235
239
|
royalMail?: BarcodeConfig;
|
|
236
240
|
kix?: BarcodeConfig;
|
|
237
241
|
japanasePost?: BarcodeConfig;
|
|
242
|
+
maxicode?: BarcodeConfig;
|
|
243
|
+
ocrText?: BarcodeConfig;
|
|
238
244
|
general?: GeneralSettings;
|
|
239
245
|
|
|
240
246
|
constructor(config: Partial<DekoderConfig>) {
|
|
@@ -282,6 +288,8 @@ export class DekoderConfig {
|
|
|
282
288
|
'Royal Mail': this.royalMail?.toMap(),
|
|
283
289
|
'KIX': this.kix?.toMap(),
|
|
284
290
|
'Japanase Post': this.japanasePost?.toMap(),
|
|
291
|
+
'MaxiCode': this.maxicode?.toMap(),
|
|
292
|
+
'OCR Text': this.maxicode?.toMap(),
|
|
285
293
|
'general': this.general?.toMap()
|
|
286
294
|
}
|
|
287
295
|
|