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.
Files changed (140) hide show
  1. package/RNScanbotBarcodeSDK.podspec +1 -1
  2. package/android/.gradle/6.1.1/executionHistory/executionHistory.bin +0 -0
  3. package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/6.1.1/fileChanges/last-build.bin +0 -0
  5. package/android/.gradle/6.1.1/fileHashes/fileHashes.bin +0 -0
  6. package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
  7. package/android/.gradle/6.1.1/gc.properties +0 -0
  8. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  9. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  10. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  11. package/android/.gradle/checksums/checksums.lock +0 -0
  12. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  13. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  14. package/android/.gradle/vcs-1/gc.properties +0 -0
  15. package/android/.idea/caches/build_file_checksums.ser +0 -0
  16. package/android/.idea/compiler.xml +6 -0
  17. package/android/.idea/gradle.xml +22 -0
  18. package/android/.idea/jarRepositories.xml +50 -0
  19. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_3_aar.xml +16 -0
  20. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml +11 -0
  21. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_rc01_aar.xml +13 -0
  22. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml +16 -0
  23. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml +13 -0
  24. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +11 -0
  25. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +13 -0
  26. package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +13 -0
  27. package/android/.idea/libraries/Gradle__androidx_camera_camera_camera2_1_0_0_aar.xml +16 -0
  28. package/android/.idea/libraries/Gradle__androidx_camera_camera_core_1_0_0_aar.xml +16 -0
  29. package/android/.idea/libraries/Gradle__androidx_camera_camera_lifecycle_1_0_0_aar.xml +13 -0
  30. package/android/.idea/libraries/Gradle__androidx_camera_camera_view_1_0_0_alpha24_aar.xml +16 -0
  31. package/android/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml +13 -0
  32. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +11 -0
  33. package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml +11 -0
  34. package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml +9 -0
  35. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml +16 -0
  36. package/android/.idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml +16 -0
  37. package/android/.idea/libraries/Gradle__androidx_core_core_ktx_1_3_2_aar.xml +13 -0
  38. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
  39. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
  40. package/android/.idea/libraries/Gradle__androidx_databinding_viewbinding_4_2_1_aar.xml +13 -0
  41. package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +13 -0
  42. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
  43. package/android/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml +13 -0
  44. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_4_aar.xml +16 -0
  45. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
  46. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +13 -0
  47. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +13 -0
  48. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_v4_1_0_0_aar.xml +13 -0
  49. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml +11 -0
  50. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_1_0_aar.xml +13 -0
  51. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +13 -0
  52. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml +13 -0
  53. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_ktx_2_3_1_aar.xml +13 -0
  54. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +13 -0
  55. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +13 -0
  56. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
  57. package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +13 -0
  58. package/android/.idea/libraries/Gradle__androidx_media_media_1_0_0_aar.xml +16 -0
  59. package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +16 -0
  60. package/android/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml +16 -0
  61. package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +13 -0
  62. package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +13 -0
  63. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
  64. package/android/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml +16 -0
  65. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +13 -0
  66. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +13 -0
  67. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +13 -0
  68. package/android/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml +16 -0
  69. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
  70. package/android/.idea/libraries/Gradle__com_commonsware_cwac_camera_camera_0_6_41_aar.xml +11 -0
  71. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +15 -0
  72. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +18 -0
  73. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +18 -0
  74. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +18 -0
  75. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +18 -0
  76. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +15 -0
  77. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +15 -0
  78. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +15 -0
  79. package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml +13 -0
  80. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_60_6_aar.xml +18 -0
  81. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_6_0_aar.xml +13 -0
  82. package/android/.idea/libraries/Gradle__com_google_android_material_material_1_3_0_aar.xml +16 -0
  83. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +13 -0
  84. package/android/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_6.xml +13 -0
  85. package/android/.idea/libraries/Gradle__com_google_dagger_dagger_2_35.xml +13 -0
  86. package/android/.idea/libraries/Gradle__com_google_guava_listenablefuture_1_0.xml +13 -0
  87. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1.xml +13 -0
  88. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1.xml +13 -0
  89. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +13 -0
  90. package/android/.idea/libraries/Gradle__commons_io_commons_io_2_4.xml +13 -0
  91. package/android/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1_aar.xml +15 -0
  92. package/android/.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_1_5.xml +13 -0
  93. package/android/.idea/libraries/Gradle__io_scanbot_scanbot_barcode_scanner_sdk_3_0_1_aar.xml +11 -0
  94. package/android/.idea/libraries/Gradle__io_scanbot_scanbot_barcode_scanner_sdk_ui_3_0_1_aar.xml +11 -0
  95. package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_barcode_3_0_1_aar.xml +11 -0
  96. package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_base_3_0_1_aar.xml +11 -0
  97. package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_ui_barcode_3_0_1_aar.xml +11 -0
  98. package/android/.idea/libraries/Gradle__io_scanbot_scanbot_sdk_ui_base_3_0_1_aar.xml +11 -0
  99. package/android/.idea/libraries/Gradle__io_scanbot_sdk_barcode_assets_3_0_1_aar.xml +11 -0
  100. package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_barcode_3_0_1_aar.xml +11 -0
  101. package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_barcode_native_3_0_1_aar.xml +11 -0
  102. package/android/.idea/libraries/Gradle__io_scanbot_sdk_core_sap_3_0_1_aar.xml +11 -0
  103. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +13 -0
  104. package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +13 -0
  105. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_20.xml +13 -0
  106. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_20.xml +13 -0
  107. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_20.xml +13 -0
  108. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_4_1.xml +13 -0
  109. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_4_1.xml +13 -0
  110. package/android/.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_1.xml +13 -0
  111. package/android/.idea/misc.xml +9 -0
  112. package/android/.idea/modules/android.iml +133 -0
  113. package/android/.idea/modules.xml +8 -0
  114. package/android/.idea/vcs.xml +6 -0
  115. package/android/.idea/workspace.xml +62 -0
  116. package/android/build.gradle +1 -1
  117. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/JSONUtils.java +74 -9
  118. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkModule.java +2 -2
  119. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/ScanbotBarcodeSdkPackage.java +5 -1
  120. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/EventEmitter.java +55 -0
  121. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewConfiguration.java +113 -0
  122. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewFragment.java +246 -0
  123. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/barcodecameraview/ScanbotBarcodeCameraViewManager.java +160 -0
  124. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/common/ScanbotComponentFrameLayout.java +53 -0
  125. package/android/src/main/java/io/scanbot/barcodesdk/plugin/reactnative/components/common/ScanbotComponentRootView.java +159 -0
  126. package/android/src/main/res/layout/component_barcode_camera_view.xml +11 -0
  127. package/android/src/main/res/layout/fragment_barcode_scanner.xml +23 -0
  128. package/index.d.ts +4 -0
  129. package/index.js +3 -0
  130. package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraView.h +54 -0
  131. package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraView.m +235 -0
  132. package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraViewManager.h +16 -0
  133. package/ios/Components/BarcodeCameraView/RNScanbotBarcodeCameraViewManager.m +30 -0
  134. package/ios/ScanbotBarcodeSdk.m +1 -1
  135. package/package.json +4 -1
  136. package/src/components/barcode-camera-view/scanbot-barcode-camera-view-types.tsx +115 -0
  137. package/src/components/barcode-camera-view/scanbot-barcode-camera-view.tsx +163 -0
  138. package/src/components/barcode-camera-view/scanbot-native-barcode-camera-view.tsx +6 -0
  139. package/src/configuration.ts +2 -2
  140. 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>
@@ -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.1'
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 BarcodeScannerAdditionalConfiguration extractBarcodeScannerAdditionalConfiguration(final ReadableMap configuration) {
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
- return changed ? new BarcodeScannerAdditionalConfiguration(
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
 
@@ -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.barcodeDetector();
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.barcodeFileStorage().cleanupBarcodeImagesDirectory();
327
+ sdk.createBarcodeFileStorage().cleanupBarcodeImagesDirectory();
328
328
 
329
329
  debugLog("Cleaning plugin storage folder ...");
330
330
  StorageUtils.cleanupPluginStorageDirectory(getReactApplicationContext());
@@ -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 Collections.emptyList();
27
+ return Arrays.asList(new ViewManager[]{
28
+ new ScanbotBarcodeCameraViewManager(reactContext)
29
+ });
26
30
  }
27
31
  }
@@ -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
+ }