react-native-scanbot-barcode-scanner-sdk 3.0.0-beta7 → 3.1.0-alpha3
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/RNScanbotBarcodeSDK.podspec +1 -1
- package/android/.gradle/6.1.1/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.1.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.1.1/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.1.1/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/caches/build_file_checksums.ser +0 -0
- package/android/.idea/compiler.xml +6 -0
- package/android/.idea/gradle.xml +22 -0
- package/android/.idea/jarRepositories.xml +50 -0
- package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_3_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_rc01_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_camera2_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_core_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_lifecycle_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_camera_camera_view_1_0_0_alpha24_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml +9 -0
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_ktx_1_3_2_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_databinding_viewbinding_4_2_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_4_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_v4_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_ktx_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_media_media_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__com_commonsware_cwac_camera_camera_0_6_41_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_60_6_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_6_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_android_material_material_1_3_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_6.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_dagger_dagger_2_35.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_guava_listenablefuture_1_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +13 -0
- package/android/.idea/libraries/Gradle__commons_io_commons_io_2_4.xml +13 -0
- package/android/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_1_5.xml +13 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_barcode_scanner_sdk_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_barcode_scanner_sdk_ui_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_barcode_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_base_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_ui_barcode_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_ui_base_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_barcode_assets_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_barcode_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_barcode_native_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_sap_3_0_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_20.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_20.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_20.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_4_1.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_4_1.xml +13 -0
- package/android/.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_1.xml +13 -0
- package/android/.idea/misc.xml +9 -0
- package/android/.idea/modules/android.iml +133 -0
- package/android/.idea/modules.xml +8 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/.idea/workspace.xml +62 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/JSONUtils.java +74 -9
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkModule.java +2 -2
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkPackage.java +5 -1
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/EventEmitter.java +55 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewConfiguration.java +113 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewFragment.java +246 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewManager.java +160 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/common/ScanbotComponentFrameLayout.java +53 -0
- package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/common/ScanbotComponentRootView.java +159 -0
- package/android/src/main/res/layout/component_barcode_camera_view.xml +11 -0
- package/android/src/main/res/layout/fragment_barcode_scanner.xml +23 -0
- package/index.d.ts +4 -0
- package/index.js +3 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraView.h +54 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraView.m +235 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraViewManager.h +16 -0
- package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraViewManager.m +30 -0
- package/ios/ScanbotBarcodeSdk.m +1 -1
- package/package.json +4 -1
- package/src/components/barcode-camera-view/scanbot-barcode-camera-view-types.tsx +115 -0
- package/src/components/barcode-camera-view/scanbot-barcode-camera-view.tsx +163 -0
- package/src/components/barcode-camera-view/scanbot-native-barcode-camera-view.tsx +6 -0
- package/src/configuration.ts +2 -2
- package/src/enum.ts +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ChangeListManager">
|
|
4
|
+
<list default="true" id="1c2fd6f3-9709-40d2-ad2e-188494e80ebf" name="Default Changelist" comment="">
|
|
5
|
+
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
|
|
6
|
+
</list>
|
|
7
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
8
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
9
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
10
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
11
|
+
</component>
|
|
12
|
+
<component name="ExternalProjectsData">
|
|
13
|
+
<projectState path="$PROJECT_DIR$">
|
|
14
|
+
<ProjectState />
|
|
15
|
+
</projectState>
|
|
16
|
+
</component>
|
|
17
|
+
<component name="Git.Settings">
|
|
18
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
|
|
19
|
+
</component>
|
|
20
|
+
<component name="ProjectId" id="1vLzzU2l94lUfLDsbtvBItpPOV6" />
|
|
21
|
+
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
|
22
|
+
<component name="ProjectViewState">
|
|
23
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
24
|
+
<option name="showLibraryContents" value="true" />
|
|
25
|
+
</component>
|
|
26
|
+
<component name="PropertiesComponent">
|
|
27
|
+
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
|
28
|
+
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
|
29
|
+
<property name="android.sdk.path" value="$USER_HOME$/Library/Android/sdk" />
|
|
30
|
+
<property name="dart.analysis.tool.window.visible" value="false" />
|
|
31
|
+
<property name="settings.editor.selected.configurable" value="AndroidSdkUpdater" />
|
|
32
|
+
<property name="show.migrate.to.gradle.popup" value="false" />
|
|
33
|
+
</component>
|
|
34
|
+
<component name="RunManager">
|
|
35
|
+
<configuration default="true" type="AndroidJUnit" factoryName="Android JUnit">
|
|
36
|
+
<option name="TEST_OBJECT" value="class" />
|
|
37
|
+
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
|
38
|
+
<method v="2">
|
|
39
|
+
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
|
|
40
|
+
</method>
|
|
41
|
+
</configuration>
|
|
42
|
+
</component>
|
|
43
|
+
<component name="SvnConfiguration">
|
|
44
|
+
<configuration />
|
|
45
|
+
</component>
|
|
46
|
+
<component name="TaskManager">
|
|
47
|
+
<task active="true" id="Default" summary="Default task">
|
|
48
|
+
<changelist id="1c2fd6f3-9709-40d2-ad2e-188494e80ebf" name="Default Changelist" comment="" />
|
|
49
|
+
<created>1626356419354</created>
|
|
50
|
+
<option name="number" value="Default" />
|
|
51
|
+
<option name="presentableId" value="Default" />
|
|
52
|
+
<updated>1626356419354</updated>
|
|
53
|
+
</task>
|
|
54
|
+
<servers />
|
|
55
|
+
</component>
|
|
56
|
+
<component name="WindowStateProjectService">
|
|
57
|
+
<state x="-1661" y="125" width="761" height="574" key="find.popup" timestamp="1626356429471">
|
|
58
|
+
<screen x="-2560" y="-295" width="2560" height="1415" />
|
|
59
|
+
</state>
|
|
60
|
+
<state x="-1661" y="125" width="761" height="574" key="find.popup/-5120.-390.2560.1330/-2560.-295.2560.1415/0.25.1792.1095@-2560.-295.2560.1415" timestamp="1626356429471" />
|
|
61
|
+
</component>
|
|
62
|
+
</project>
|
package/android/build.gradle
CHANGED
|
@@ -15,7 +15,7 @@ def DEFAULT_BUILD_TOOLS_VERSION = '28.0.3'
|
|
|
15
15
|
def DEFAULT_MIN_SDK_VERSION = 21
|
|
16
16
|
def DEFAULT_TARGET_SDK_VERSION = 29
|
|
17
17
|
|
|
18
|
-
def sdkVersion = '3.0.
|
|
18
|
+
def sdkVersion = '3.0.5'
|
|
19
19
|
|
|
20
20
|
def safeExtGet(prop, fallback) {
|
|
21
21
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
@@ -7,6 +7,7 @@ package io.scanbot.barcodesdk.plugin.reactnative;
|
|
|
7
7
|
|
|
8
8
|
import android.graphics.PointF;
|
|
9
9
|
|
|
10
|
+
import androidx.annotation.NonNull;
|
|
10
11
|
import androidx.annotation.Nullable;
|
|
11
12
|
|
|
12
13
|
import com.facebook.react.bridge.Arguments;
|
|
@@ -14,6 +15,7 @@ import com.facebook.react.bridge.ReadableArray;
|
|
|
14
15
|
import com.facebook.react.bridge.ReadableMap;
|
|
15
16
|
import com.facebook.react.bridge.WritableArray;
|
|
16
17
|
import com.facebook.react.bridge.WritableMap;
|
|
18
|
+
import com.facebook.react.bridge.WritableNativeMap;
|
|
17
19
|
|
|
18
20
|
import org.jetbrains.annotations.NotNull;
|
|
19
21
|
|
|
@@ -33,6 +35,50 @@ public final class JSONUtils {
|
|
|
33
35
|
|
|
34
36
|
private JSONUtils() {}
|
|
35
37
|
|
|
38
|
+
public static class WritableMapBuilder {
|
|
39
|
+
|
|
40
|
+
private final WritableNativeMap _writableMap = new WritableNativeMap();
|
|
41
|
+
|
|
42
|
+
public WritableMapBuilder putBoolean(@NonNull String key, boolean value) {
|
|
43
|
+
_writableMap.putBoolean(key, value);
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public WritableMapBuilder putDouble(@NonNull String key, double value) {
|
|
48
|
+
_writableMap.putDouble(key, value);
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public WritableMapBuilder putInt(@NonNull String key, int value) {
|
|
53
|
+
_writableMap.putInt(key, value);
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public WritableMapBuilder putNull(@NonNull String key) {
|
|
58
|
+
_writableMap.putNull(key);
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public WritableMapBuilder putString(@NonNull String key, @Nullable String value) {
|
|
63
|
+
_writableMap.putString(key, value);
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public WritableMapBuilder putMap(@NonNull String key, @Nullable ReadableMap value) {
|
|
68
|
+
_writableMap.putMap(key, value);
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public WritableMapBuilder putArray(@NonNull String key, @Nullable ReadableArray value) {
|
|
73
|
+
_writableMap.putArray(key, value);
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public WritableMap build() {
|
|
78
|
+
return this._writableMap;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
36
82
|
public static WritableArray sdkPolygonToWritableArray(final List<PointF> polygon) {
|
|
37
83
|
WritableArray points = Arguments.createArray();
|
|
38
84
|
if (polygon != null) {
|
|
@@ -70,15 +116,9 @@ public final class JSONUtils {
|
|
|
70
116
|
return nativeBarcodeDocumentFormats;
|
|
71
117
|
}
|
|
72
118
|
|
|
73
|
-
public static @Nullable
|
|
119
|
+
public static @Nullable BarcodeScannerAdditionalConfig extractBarcodeScannerAdditionalConfig(final ReadableMap configuration) {
|
|
74
120
|
boolean changed = false;
|
|
75
121
|
|
|
76
|
-
boolean gs1DecodingEnabled = BarcodeScannerAdditionalConfig.DEFAULT_GS1_DECODING_ENABLED;
|
|
77
|
-
if (configuration.hasKey("gs1DecodingEnabled")) {
|
|
78
|
-
gs1DecodingEnabled = configuration.getBoolean("gs1DecodingEnabled");
|
|
79
|
-
changed = true;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
122
|
int minimumTextLength = BarcodeScannerAdditionalConfig.DEFAULT_MIN_TEXT_LENGTH;
|
|
83
123
|
if (configuration.hasKey("minimumTextLength")) {
|
|
84
124
|
minimumTextLength = configuration.getInt("minimumTextLength");
|
|
@@ -97,6 +137,12 @@ public final class JSONUtils {
|
|
|
97
137
|
changed = true;
|
|
98
138
|
}
|
|
99
139
|
|
|
140
|
+
boolean gs1DecodingEnabled = BarcodeScannerAdditionalConfig.DEFAULT_GS1_DECODING_ENABLED;
|
|
141
|
+
if (configuration.hasKey("gs1DecodingEnabled")) {
|
|
142
|
+
gs1DecodingEnabled = configuration.getBoolean("gs1DecodingEnabled");
|
|
143
|
+
changed = true;
|
|
144
|
+
}
|
|
145
|
+
|
|
100
146
|
EnumSet<MSIPlesseyChecksumAlgorithm> msiPlesseyChecksumAlgorithms =
|
|
101
147
|
BarcodeScannerAdditionalConfig.Companion.getDEFAULT_MSI_PLESSEY_CHECKSUM_ALGORITHMS();
|
|
102
148
|
if (configuration.hasKey("msiPlesseyChecksumAlgorithm")) {
|
|
@@ -106,12 +152,31 @@ public final class JSONUtils {
|
|
|
106
152
|
changed = true;
|
|
107
153
|
}
|
|
108
154
|
|
|
109
|
-
|
|
155
|
+
boolean stripCheckDigits = BarcodeScannerAdditionalConfig.DEFAULT_STRIP_CHECK_DIGITS;
|
|
156
|
+
if (configuration.hasKey("stripCheckDigits")) {
|
|
157
|
+
stripCheckDigits = configuration.getBoolean("stripCheckDigits");
|
|
158
|
+
changed = true;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return changed ? new BarcodeScannerAdditionalConfig(
|
|
110
162
|
minimumTextLength,
|
|
111
163
|
maximumTextLength,
|
|
112
164
|
minimum1DQuietZoneSize,
|
|
113
165
|
gs1DecodingEnabled,
|
|
114
|
-
msiPlesseyChecksumAlgorithms
|
|
166
|
+
msiPlesseyChecksumAlgorithms,
|
|
167
|
+
stripCheckDigits
|
|
168
|
+
) : null;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
public static @Nullable BarcodeScannerAdditionalConfiguration extractBarcodeScannerAdditionalConfiguration(final ReadableMap configuration) {
|
|
172
|
+
final BarcodeScannerAdditionalConfig config = extractBarcodeScannerAdditionalConfig(configuration);
|
|
173
|
+
return config != null ? new BarcodeScannerAdditionalConfiguration(
|
|
174
|
+
config.getMinimumTextLength(),
|
|
175
|
+
config.getMaximumTextLength(),
|
|
176
|
+
config.getMinimum1DQuietZoneSize(),
|
|
177
|
+
config.getGs1DecodingEnabled(),
|
|
178
|
+
config.getMsiPlesseyChecksumAlgorithms(),
|
|
179
|
+
config.getStripCheckDigits()
|
|
115
180
|
) : null;
|
|
116
181
|
}
|
|
117
182
|
|
package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkModule.java
CHANGED
|
@@ -181,7 +181,7 @@ public class ScanbotBarcodeSdkModule extends ReactContextBaseJavaModule implemen
|
|
|
181
181
|
|
|
182
182
|
final Bitmap bitmap = MediaStore.Images.Media.getBitmap(getReactApplicationContext().getContentResolver(), Uri.parse(imageUri));
|
|
183
183
|
final ScanbotBarcodeScannerSDK sdk = new ScanbotBarcodeScannerSDK(getReactApplicationContext());
|
|
184
|
-
final ScanbotBarcodeDetector detector = sdk.
|
|
184
|
+
final ScanbotBarcodeDetector detector = sdk.createBarcodeDetector();
|
|
185
185
|
|
|
186
186
|
detector.modifyConfig(new Function1<BarcodeScannerConfigBuilder, Unit>() {
|
|
187
187
|
@Override
|
|
@@ -324,7 +324,7 @@ public class ScanbotBarcodeSdkModule extends ReactContextBaseJavaModule implemen
|
|
|
324
324
|
|
|
325
325
|
debugLog("Cleaning Barcode SDK storage folder ...");
|
|
326
326
|
ScanbotBarcodeScannerSDK sdk = new ScanbotBarcodeScannerSDK(getReactApplicationContext());
|
|
327
|
-
sdk.
|
|
327
|
+
sdk.createBarcodeFileStorage().cleanupBarcodeImagesDirectory();
|
|
328
328
|
|
|
329
329
|
debugLog("Cleaning plugin storage folder ...");
|
|
330
330
|
StorageUtils.cleanupPluginStorageDirectory(getReactApplicationContext());
|
package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkPackage.java
CHANGED
|
@@ -14,6 +14,8 @@ import com.facebook.react.bridge.NativeModule;
|
|
|
14
14
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
15
15
|
import com.facebook.react.uimanager.ViewManager;
|
|
16
16
|
|
|
17
|
+
import io.scanbot.barcodesdk.plugin.reactnative.components.barcodecameraview.ScanbotBarcodeCameraViewManager;
|
|
18
|
+
|
|
17
19
|
public class ScanbotBarcodeSdkPackage implements ReactPackage {
|
|
18
20
|
@Override
|
|
19
21
|
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
|
@@ -22,6 +24,8 @@ public class ScanbotBarcodeSdkPackage implements ReactPackage {
|
|
|
22
24
|
|
|
23
25
|
@Override
|
|
24
26
|
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
|
25
|
-
return
|
|
27
|
+
return Arrays.asList(new ViewManager[]{
|
|
28
|
+
new ScanbotBarcodeCameraViewManager(reactContext)
|
|
29
|
+
});
|
|
26
30
|
}
|
|
27
31
|
}
|
package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/EventEmitter.java
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
package io.scanbot.barcodesdk.plugin.reactnative.components;
|
|
2
|
+
|
|
3
|
+
import android.view.ViewGroup;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.ReactContext;
|
|
6
|
+
import com.facebook.react.bridge.WritableMap;
|
|
7
|
+
import com.facebook.react.common.MapBuilder;
|
|
8
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter;
|
|
9
|
+
|
|
10
|
+
import java.util.Map;
|
|
11
|
+
|
|
12
|
+
public class EventEmitter {
|
|
13
|
+
|
|
14
|
+
public enum NativeEvent {
|
|
15
|
+
BARCODE_SCANNER_RESULT("onBarcodeScannerResult"),
|
|
16
|
+
REQUEST_COMPONENT_RELOAD("requestComponentReload");
|
|
17
|
+
|
|
18
|
+
private final String name;
|
|
19
|
+
NativeEvent(final String name) {
|
|
20
|
+
this.name = name;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public String getName() {
|
|
24
|
+
return name;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private final RCTEventEmitter jsEventEmitter;
|
|
29
|
+
private final ReactContext reactContext;
|
|
30
|
+
private final ViewGroup rootViewGroup;
|
|
31
|
+
|
|
32
|
+
public EventEmitter(final ReactContext reactContext, final ViewGroup rootViewGroup) {
|
|
33
|
+
this.reactContext = reactContext;
|
|
34
|
+
this.jsEventEmitter = reactContext.getJSModule(RCTEventEmitter.class);
|
|
35
|
+
this.rootViewGroup = rootViewGroup;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public void emitEvent(final NativeEvent event, final WritableMap data) {
|
|
39
|
+
assert reactContext != null;
|
|
40
|
+
jsEventEmitter.receiveEvent(
|
|
41
|
+
rootViewGroup.getId(),
|
|
42
|
+
event.getName(),
|
|
43
|
+
data);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public static Map<String, Object> getMapForNativeEvents(NativeEvent[] events) {
|
|
47
|
+
MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
|
|
48
|
+
|
|
49
|
+
for (NativeEvent event: events) {
|
|
50
|
+
builder.put(event.getName(), MapBuilder.of("registrationName", event.getName()));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return builder.build();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
package io.scanbot.barcodesdk.plugin.reactnative.components.barcodecameraview;
|
|
2
|
+
|
|
3
|
+
import android.graphics.Color;
|
|
4
|
+
|
|
5
|
+
import java.util.ArrayList;
|
|
6
|
+
import java.util.List;
|
|
7
|
+
|
|
8
|
+
import io.scanbot.sdk.barcode.entity.BarcodeDocumentFormat;
|
|
9
|
+
import io.scanbot.sdk.barcode.entity.BarcodeFormat;
|
|
10
|
+
import io.scanbot.sdk.barcode.entity.BarcodeScannerAdditionalConfig;
|
|
11
|
+
import io.scanbot.sdk.barcode.entity.EngineMode;
|
|
12
|
+
import io.scanbot.sdk.ui.camera.FinderAspectRatio;
|
|
13
|
+
|
|
14
|
+
@SuppressWarnings("unused")
|
|
15
|
+
public class ScanbotBarcodeCameraViewConfiguration {
|
|
16
|
+
|
|
17
|
+
public List<BarcodeFormat> barcodeFormats = new ArrayList<>();
|
|
18
|
+
public List<BarcodeDocumentFormat> acceptedDocumentFormats = new ArrayList<>();
|
|
19
|
+
public EngineMode engineMode;
|
|
20
|
+
public BarcodeScannerAdditionalConfig additionalConfiguration;
|
|
21
|
+
|
|
22
|
+
// Automatically mapped properties
|
|
23
|
+
private boolean shouldUseFinderView = false;
|
|
24
|
+
private int finderLineWidth = 1;
|
|
25
|
+
private int finderLineColor = Color.WHITE;
|
|
26
|
+
private int finderBackgroundColor = Color.BLACK;
|
|
27
|
+
private int finderMinimumPadding = 32;
|
|
28
|
+
private int finderVerticalOffset = 0;
|
|
29
|
+
private float finderBackgroundOpacity = 0.66f;
|
|
30
|
+
private float cameraZoomFactor = -1;
|
|
31
|
+
private boolean flashEnabled = false;
|
|
32
|
+
private FinderAspectRatio finderAspectRatio = new FinderAspectRatio(1, 1);
|
|
33
|
+
|
|
34
|
+
public void setShouldUseFinderView(boolean shouldUseFinderView) {
|
|
35
|
+
this.shouldUseFinderView = shouldUseFinderView;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public void setFinderLineWidth(int viewFinderLineWidth) {
|
|
39
|
+
this.finderLineWidth = viewFinderLineWidth;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public void setFinderLineColor(@androidx.annotation.ColorInt int viewFinderLineColor) {
|
|
43
|
+
this.finderLineColor = viewFinderLineColor;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public void setFinderBackgroundColor(@androidx.annotation.ColorInt int viewFinderBackgroundColor) {
|
|
47
|
+
this.finderBackgroundColor = viewFinderBackgroundColor;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public void setFinderMinimumPadding(int finderMinimumPadding) {
|
|
51
|
+
this.finderMinimumPadding = finderMinimumPadding;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public void setFinderVerticalOffset(int finderVerticalOffset) {
|
|
55
|
+
this.finderVerticalOffset = finderVerticalOffset;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public void setFinderAspectRatio(FinderAspectRatio finderAspectRatio) {
|
|
59
|
+
this.finderAspectRatio = finderAspectRatio;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public void setFinderBackgroundOpacity(float finderBackgroundOpacity) {
|
|
63
|
+
this.finderBackgroundOpacity = finderBackgroundOpacity;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public void setCameraZoomFactor(float cameraZoomFactor) {
|
|
67
|
+
this.cameraZoomFactor = cameraZoomFactor;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public void setFlashEnabled(boolean flashEnabled) {
|
|
71
|
+
this.flashEnabled = flashEnabled;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public boolean shouldUseFinderView() {
|
|
75
|
+
return shouldUseFinderView;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public int getFinderLineWidth() {
|
|
79
|
+
return finderLineWidth;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public int getFinderLineColor() {
|
|
83
|
+
return finderLineColor;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public int getFinderBackgroundColor() {
|
|
87
|
+
return finderBackgroundColor;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public int getFinderMinimumPadding() {
|
|
91
|
+
return finderMinimumPadding;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public int getFinderVerticalOffset() {
|
|
95
|
+
return finderVerticalOffset;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public float getFinderBackgroundOpacity() {
|
|
99
|
+
return finderBackgroundOpacity;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public float getCameraZoomFactor() {
|
|
103
|
+
return cameraZoomFactor;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
public boolean isFlashEnabled() {
|
|
107
|
+
return flashEnabled;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public FinderAspectRatio getFinderAspectRatio() {
|
|
111
|
+
return finderAspectRatio;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
package io.scanbot.barcodesdk.plugin.reactnative.components.barcodecameraview;
|
|
2
|
+
|
|
3
|
+
import android.Manifest;
|
|
4
|
+
import android.app.Activity;
|
|
5
|
+
import android.content.pm.PackageManager;
|
|
6
|
+
import android.graphics.Color;
|
|
7
|
+
import android.os.Bundle;
|
|
8
|
+
import android.view.View;
|
|
9
|
+
import android.view.ViewGroup;
|
|
10
|
+
|
|
11
|
+
import androidx.annotation.ColorInt;
|
|
12
|
+
import androidx.annotation.NonNull;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
import androidx.core.app.ActivityCompat;
|
|
15
|
+
import androidx.core.content.ContextCompat;
|
|
16
|
+
import androidx.fragment.app.Fragment;
|
|
17
|
+
|
|
18
|
+
import com.facebook.react.bridge.ReactContext;
|
|
19
|
+
import com.facebook.react.bridge.WritableArray;
|
|
20
|
+
import com.facebook.react.bridge.WritableMap;
|
|
21
|
+
import com.facebook.react.bridge.WritableNativeArray;
|
|
22
|
+
|
|
23
|
+
import org.jetbrains.annotations.NotNull;
|
|
24
|
+
|
|
25
|
+
import java.util.Collections;
|
|
26
|
+
import java.util.List;
|
|
27
|
+
|
|
28
|
+
import io.scanbot.barcodesdk.plugin.reactnative.JSONUtils;
|
|
29
|
+
import io.scanbot.barcodesdk.plugin.reactnative.R;
|
|
30
|
+
import io.scanbot.barcodesdk.plugin.reactnative.components.EventEmitter;
|
|
31
|
+
import io.scanbot.barcodesdk.plugin.reactnative.components.common.ScanbotComponentFrameLayout;
|
|
32
|
+
import io.scanbot.sdk.SdkLicenseError;
|
|
33
|
+
import io.scanbot.sdk.barcode.BarcodeDetectorFrameHandler;
|
|
34
|
+
import io.scanbot.sdk.barcode.DefaultScanbotBarcodeDetector;
|
|
35
|
+
import io.scanbot.sdk.barcode.ScanbotBarcodeDetector;
|
|
36
|
+
import io.scanbot.sdk.barcode.entity.BarcodeItem;
|
|
37
|
+
import io.scanbot.sdk.barcode.entity.BarcodeScannerConfigBuilder;
|
|
38
|
+
import io.scanbot.sdk.barcode.entity.BarcodeScanningResult;
|
|
39
|
+
import io.scanbot.sdk.camera.CameraOpenCallback;
|
|
40
|
+
import io.scanbot.sdk.camera.FrameHandlerResult;
|
|
41
|
+
import io.scanbot.sdk.camera.ScanbotCameraView;
|
|
42
|
+
import io.scanbot.sdk.ui.camera.FinderOverlayView;
|
|
43
|
+
import kotlin.Unit;
|
|
44
|
+
import kotlin.jvm.functions.Function1;
|
|
45
|
+
|
|
46
|
+
public class ScanbotBarcodeCameraViewFragment extends Fragment implements BarcodeDetectorFrameHandler.ResultHandler {
|
|
47
|
+
|
|
48
|
+
private static final int REQUEST_PERMISSION_CODE = 200;
|
|
49
|
+
|
|
50
|
+
private ReactContext callerContext;
|
|
51
|
+
private ViewGroup rootViewGroup;
|
|
52
|
+
private ScanbotComponentFrameLayout cameraLayout;
|
|
53
|
+
private ScanbotCameraView cameraView;
|
|
54
|
+
private FinderOverlayView finderOverlayView;
|
|
55
|
+
private ScanbotBarcodeDetector barcodeDetector;
|
|
56
|
+
private BarcodeDetectorFrameHandler frameHandler;
|
|
57
|
+
private ScanbotBarcodeCameraViewConfiguration configuration = new ScanbotBarcodeCameraViewConfiguration();
|
|
58
|
+
private boolean isInitialized = false;
|
|
59
|
+
private EventEmitter jsEventEmitter;
|
|
60
|
+
private float userDefinedCameraZoomFactor = -1;
|
|
61
|
+
|
|
62
|
+
public ScanbotBarcodeCameraViewFragment() {
|
|
63
|
+
super(R.layout.fragment_barcode_scanner);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public void instantiate(final ReactContext reactContext, final ViewGroup rootViewGroup) {
|
|
67
|
+
this.callerContext = reactContext;
|
|
68
|
+
this.rootViewGroup = rootViewGroup;
|
|
69
|
+
jsEventEmitter = new EventEmitter(reactContext, rootViewGroup);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@Override
|
|
73
|
+
public void onViewCreated(@NonNull final View view, @Nullable Bundle savedInstanceState) {
|
|
74
|
+
super.onViewCreated(view, savedInstanceState);
|
|
75
|
+
|
|
76
|
+
final Activity activity = getActivity();
|
|
77
|
+
final View rootView = getView();
|
|
78
|
+
assert activity != null;
|
|
79
|
+
assert rootView != null;
|
|
80
|
+
|
|
81
|
+
cameraLayout = rootView.findViewById(R.id.barcode_camera_layout);
|
|
82
|
+
cameraView = rootView.findViewById(R.id.barcode_camera);
|
|
83
|
+
finderOverlayView = rootView.findViewById(R.id.barcode_finder_overlay);
|
|
84
|
+
|
|
85
|
+
cameraView.post(new Runnable() {
|
|
86
|
+
@Override
|
|
87
|
+
public void run() {
|
|
88
|
+
checkPermissions();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
cameraView.onResume();
|
|
93
|
+
|
|
94
|
+
// Setup Frame Handler for Barcode Detection
|
|
95
|
+
barcodeDetector = new DefaultScanbotBarcodeDetector();
|
|
96
|
+
|
|
97
|
+
frameHandler = BarcodeDetectorFrameHandler.attach(cameraView, barcodeDetector);
|
|
98
|
+
frameHandler.setDetectionInterval(0);
|
|
99
|
+
frameHandler.addResultHandler(this);
|
|
100
|
+
|
|
101
|
+
cameraView.addFrameHandler(frameHandler);
|
|
102
|
+
|
|
103
|
+
cameraView.setCameraOpenCallback(new CameraOpenCallback() {
|
|
104
|
+
@Override
|
|
105
|
+
public void onCameraOpened() {
|
|
106
|
+
cameraView.continuousFocus();
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
applyConfiguration();
|
|
111
|
+
|
|
112
|
+
isInitialized = true;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private void applyConfiguration() {
|
|
116
|
+
finderOverlayView.setVisibility(configuration.shouldUseFinderView() ? View.VISIBLE : View.INVISIBLE);
|
|
117
|
+
finderOverlayView.setStrokeWidth(configuration.getFinderLineWidth());
|
|
118
|
+
finderOverlayView.setStrokeColor(configuration.getFinderLineColor());
|
|
119
|
+
finderOverlayView.setOverlayColor(colorWithAlpha(
|
|
120
|
+
configuration.getFinderBackgroundColor(),
|
|
121
|
+
configuration.getFinderBackgroundOpacity()));
|
|
122
|
+
finderOverlayView.setMinFinderPadding(configuration.getFinderMinimumPadding());
|
|
123
|
+
finderOverlayView.setVerticalOffset(configuration.getFinderVerticalOffset());
|
|
124
|
+
finderOverlayView.setRequiredAspectRatios(Collections.singletonList(configuration.getFinderAspectRatio()));
|
|
125
|
+
|
|
126
|
+
cameraView.useFlash(configuration.isFlashEnabled());
|
|
127
|
+
|
|
128
|
+
if (configuration.getCameraZoomFactor() != -1) {
|
|
129
|
+
if (configuration.getCameraZoomFactor() != userDefinedCameraZoomFactor || userDefinedCameraZoomFactor == -1) {
|
|
130
|
+
cameraView.setOpticalZoomLevel(configuration.getCameraZoomFactor());
|
|
131
|
+
userDefinedCameraZoomFactor = configuration.getCameraZoomFactor();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
barcodeDetector.modifyConfig(new Function1<BarcodeScannerConfigBuilder, Unit>() {
|
|
135
|
+
@Override
|
|
136
|
+
public Unit invoke(BarcodeScannerConfigBuilder b) {
|
|
137
|
+
if(!configuration.barcodeFormats.isEmpty()) {
|
|
138
|
+
b.setBarcodeFormats(configuration.barcodeFormats);
|
|
139
|
+
}
|
|
140
|
+
if(!configuration.acceptedDocumentFormats.isEmpty()) {
|
|
141
|
+
b.setAcceptedDocumentFormats(configuration.acceptedDocumentFormats);
|
|
142
|
+
}
|
|
143
|
+
b.setEngineMode(configuration.engineMode);
|
|
144
|
+
|
|
145
|
+
if(configuration.additionalConfiguration != null) {
|
|
146
|
+
b.setAdditionalConfig(configuration.additionalConfiguration);
|
|
147
|
+
}
|
|
148
|
+
return Unit.INSTANCE;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@Override
|
|
154
|
+
public void onStart() {
|
|
155
|
+
super.onStart();
|
|
156
|
+
if(cameraView != null) {
|
|
157
|
+
cameraView.onResume();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@Override
|
|
162
|
+
public void onResume() {
|
|
163
|
+
super.onResume();
|
|
164
|
+
if (cameraView != null) {
|
|
165
|
+
cameraView.onResume();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@Override
|
|
170
|
+
public void onPause() {
|
|
171
|
+
super.onPause();
|
|
172
|
+
if (cameraView != null) {
|
|
173
|
+
cameraView.onPause();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
public void updateWithConfiguration(ScanbotBarcodeCameraViewConfiguration configuration) {
|
|
178
|
+
this.configuration = configuration;
|
|
179
|
+
|
|
180
|
+
if (isInitialized) {
|
|
181
|
+
applyConfiguration();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@ColorInt
|
|
186
|
+
public static int colorWithAlpha(@ColorInt int color, float factor) {
|
|
187
|
+
int alpha = Math.round(Color.alpha(color) * factor);
|
|
188
|
+
int red = Color.red(color);
|
|
189
|
+
int green = Color.green(color);
|
|
190
|
+
int blue = Color.blue(color);
|
|
191
|
+
return Color.argb(alpha, red, green, blue);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
private void sendResult(final List<BarcodeItem> barcodeItems) {
|
|
195
|
+
|
|
196
|
+
if (barcodeItems == null || barcodeItems.size() == 0) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
final WritableArray barcodes = new WritableNativeArray();
|
|
201
|
+
|
|
202
|
+
for (BarcodeItem item: barcodeItems) {
|
|
203
|
+
final WritableMap barcode = new JSONUtils.WritableMapBuilder()
|
|
204
|
+
.putString("text", item.getText())
|
|
205
|
+
.putString("type", item.getBarcodeFormat().name())
|
|
206
|
+
.build();
|
|
207
|
+
barcodes.pushMap(barcode);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
final WritableMap result = new JSONUtils.WritableMapBuilder()
|
|
211
|
+
.putString("status", "OK")
|
|
212
|
+
.putArray("barcodes", barcodes)
|
|
213
|
+
.build();
|
|
214
|
+
|
|
215
|
+
final WritableMap data = new JSONUtils.WritableMapBuilder()
|
|
216
|
+
.putMap("result", result)
|
|
217
|
+
.build();
|
|
218
|
+
|
|
219
|
+
jsEventEmitter.emitEvent(EventEmitter.NativeEvent.BARCODE_SCANNER_RESULT, data);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
@Override
|
|
223
|
+
public boolean handle(@NotNull FrameHandlerResult<? extends BarcodeScanningResult, ? extends SdkLicenseError> frameHandlerResult) {
|
|
224
|
+
if (frameHandlerResult instanceof FrameHandlerResult.Success) {
|
|
225
|
+
handleSuccess((FrameHandlerResult.Success<BarcodeScanningResult>) frameHandlerResult);
|
|
226
|
+
}
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
private void handleSuccess(final FrameHandlerResult.Success<BarcodeScanningResult> result) {
|
|
231
|
+
if (result == null || result.getValue() == null) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
sendResult(result.getValue().getBarcodeItems());
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
private void checkPermissions() {
|
|
239
|
+
if (callerContext == null) { return; }
|
|
240
|
+
Activity activity = callerContext.getCurrentActivity();
|
|
241
|
+
|
|
242
|
+
if (activity != null && ContextCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
|
|
243
|
+
ActivityCompat.requestPermissions(activity, new String[] { Manifest.permission.CAMERA }, REQUEST_PERMISSION_CODE);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|