anyline-ocr-react-native-module 42.2.0 → 43.0.1

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 (69) hide show
  1. package/.idea/modules.xml +8 -0
  2. package/.idea/plugin.iml +9 -0
  3. package/.idea/vcs.xml +6 -0
  4. package/android/.gradle/6.7/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/7.0/dependencies-accessors/dependencies-accessors.lock +0 -0
  6. package/android/.gradle/7.0/dependencies-accessors/gc.properties +0 -0
  7. package/android/.gradle/7.0/executionHistory/executionHistory.lock +0 -0
  8. package/android/.gradle/7.0/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/7.0/fileHashes/fileHashes.bin +0 -0
  10. package/android/.gradle/7.0/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/7.0/gc.properties +0 -0
  12. package/android/.gradle/7.3/checksums/checksums.lock +0 -0
  13. package/android/.gradle/7.3/dependencies-accessors/dependencies-accessors.lock +0 -0
  14. package/android/.gradle/7.3/dependencies-accessors/gc.properties +0 -0
  15. package/android/.gradle/7.3/fileChanges/last-build.bin +0 -0
  16. package/android/.gradle/7.3/fileHashes/fileHashes.lock +0 -0
  17. package/android/.gradle/7.3/gc.properties +0 -0
  18. package/android/.gradle/7.4/checksums/checksums.lock +0 -0
  19. package/android/.gradle/7.4/checksums/md5-checksums.bin +0 -0
  20. package/android/.gradle/7.4/checksums/sha1-checksums.bin +0 -0
  21. package/android/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock +0 -0
  22. package/android/.gradle/7.4/dependencies-accessors/gc.properties +0 -0
  23. package/android/.gradle/7.4/executionHistory/executionHistory.lock +0 -0
  24. package/android/.gradle/7.4/fileChanges/last-build.bin +0 -0
  25. package/android/.gradle/7.4/fileHashes/fileHashes.bin +0 -0
  26. package/android/.gradle/7.4/fileHashes/fileHashes.lock +0 -0
  27. package/android/.gradle/7.4/fileHashes/resourceHashesCache.bin +0 -0
  28. package/android/.gradle/7.4/gc.properties +0 -0
  29. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  30. package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
  31. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  32. package/android/.gradle/checksums/checksums.lock +0 -0
  33. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  34. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  35. package/android/.idea/gradle.xml +1 -0
  36. package/android/.idea/jarRepositories.xml +5 -0
  37. package/android/.idea/misc.xml +1 -1
  38. package/android/.idea/vcs.xml +1 -0
  39. package/android/build.gradle +7 -3
  40. package/android/src/main/AndroidManifest.xml +9 -8
  41. package/android/src/main/assets/cow_tag_scanner.ale +46 -0
  42. package/android/src/main/java/com/anyline/reactnative/AnylinePackage.java +1 -2
  43. package/android/src/main/java/com/anyline/reactnative/AnylineSDKPlugin.java +25 -77
  44. package/android/src/main/java/com/anyline/reactnative/RotateButtonConfig.java +12 -2
  45. package/android/src/main/java/com/anyline/reactnative/ScanActivity.java +206 -0
  46. package/android/src/main/res/drawable/rotate_screen_background.xml +18 -0
  47. package/android/src/main/res/drawable/rotate_screen_white.png +0 -0
  48. package/android/src/main/res/layout/activity_scan.xml +27 -0
  49. package/android/src/main/res/values/anyline_sdk_plugin_strings.xml +2 -28
  50. package/ios/ALJsonUIConfiguration.h +29 -36
  51. package/ios/ALJsonUIConfiguration.m +136 -76
  52. package/ios/ALNFCScanViewController.h +3 -16
  53. package/ios/ALNFCScanViewController.m +361 -232
  54. package/ios/ALPluginHelper.h +19 -62
  55. package/ios/ALPluginHelper.m +208 -529
  56. package/ios/ALPluginScanViewController.h +5 -32
  57. package/ios/ALPluginScanViewController.m +339 -287
  58. package/ios/AnylineReact.podspec +4 -3
  59. package/ios/AnylineSDKPlugin.m +39 -82
  60. package/package.json +8 -8
  61. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  62. package/android/src/main/java/com/anyline/reactnative/Anyline4Activity.java +0 -621
  63. package/android/src/main/java/com/anyline/reactnative/AnylineBaseActivity.java +0 -267
  64. package/android/src/main/java/com/anyline/reactnative/AnylinePluginHelper.java +0 -324
  65. package/android/src/main/java/com/anyline/reactnative/AnylineUIConfig.java +0 -88
  66. package/android/src/main/java/com/anyline/reactnative/Document4Activity.java +0 -595
  67. package/android/src/main/res/layout/activity_scan_document.xml +0 -63
  68. package/android/src/main/res/layout/activity_scan_scanview.xml +0 -52
  69. package/android/src/main/res/values/com_crashlytics_export_strings.xml +0 -10
@@ -0,0 +1,206 @@
1
+ package com.anyline.reactnative;
2
+
3
+ import static com.anyline.reactnative.AnylineSDKPlugin.EXTRA_CONFIG_JSON;
4
+ import static com.anyline.reactnative.AnylineSDKPlugin.EXTRA_ERROR_MESSAGE;
5
+ import static com.anyline.reactnative.AnylineSDKPlugin.RESULT_ERROR;
6
+
7
+ import android.content.Intent;
8
+ import android.content.pm.ActivityInfo;
9
+ import android.os.Bundle;
10
+ import android.view.Gravity;
11
+ import android.view.View;
12
+
13
+ import androidx.annotation.NonNull;
14
+ import androidx.annotation.Nullable;
15
+ import androidx.appcompat.app.AppCompatActivity;
16
+ import androidx.coordinatorlayout.widget.CoordinatorLayout;
17
+
18
+ import com.anyline.reactnative.databinding.ActivityScanBinding;
19
+
20
+ import org.json.JSONArray;
21
+ import org.json.JSONException;
22
+ import org.json.JSONObject;
23
+
24
+ import io.anyline2.ScanResult;
25
+ import io.anyline2.view.ScanView;
26
+ import io.anyline2.viewplugin.ViewPluginBase;
27
+
28
+ public class ScanActivity extends AppCompatActivity {
29
+
30
+ private static final String KEY_DEFAULT_ORIENTATION_APPLIED = "default_orientation_applied";
31
+
32
+ private ActivityScanBinding binding;
33
+ private ScanView scanView;
34
+
35
+ private float dpFactor = 0;
36
+ private boolean defaultOrientationApplied;
37
+ private int orientation;
38
+
39
+ @Override
40
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
41
+ super.onCreate(savedInstanceState);
42
+ binding = ActivityScanBinding.inflate(getLayoutInflater());
43
+ setContentView(binding.getRoot());
44
+
45
+ dpFactor = getResources().getDisplayMetrics().density;
46
+
47
+ orientation = this.getResources().getConfiguration().orientation;
48
+
49
+ scanView = binding.scanView;
50
+
51
+ if (savedInstanceState != null) {
52
+ defaultOrientationApplied = savedInstanceState.getBoolean(KEY_DEFAULT_ORIENTATION_APPLIED);
53
+ }
54
+
55
+ if (getIntent().hasExtra(EXTRA_CONFIG_JSON)) {
56
+ // TODO check for throws clauses
57
+ try {
58
+ JSONObject configJSON = new JSONObject(getIntent().getStringExtra(EXTRA_CONFIG_JSON));
59
+
60
+ applyDefaultOrientation(configJSON);
61
+ setupChangeOrientationButton(configJSON);
62
+
63
+ scanView.init(configJSON);
64
+
65
+ ViewPluginBase viewPluginBase = scanView.getScanViewPlugin();
66
+
67
+ viewPluginBase.resultReceived = scanResult -> {
68
+ setResult(AnylineSDKPlugin.RESULT_OK);
69
+ JSONObject resultObject = getResultWithImagePath(scanResult);
70
+ ResultReporter.onResult(resultObject.toString(), true);
71
+ finish();
72
+ };
73
+
74
+ viewPluginBase.resultsReceived = scanResults -> {
75
+ JSONArray resultJSONArray = new JSONArray();
76
+
77
+ for (ScanResult scanResult : scanResults) {
78
+ JSONObject resultObject = getResultWithImagePath(scanResult);
79
+ resultJSONArray.put(resultObject);
80
+ }
81
+ setResult(AnylineSDKPlugin.RESULT_OK);
82
+ ResultReporter.onResult(resultJSONArray.toString(), true);
83
+ finish();
84
+ };
85
+ } catch (JSONException e) {
86
+ finishWithError("Error parsing view config: " + e.getMessage());
87
+ }
88
+ } else {
89
+ finishWithError("View config not found");
90
+ }
91
+ }
92
+
93
+ private void applyDefaultOrientation(JSONObject configJSON) {
94
+ if (defaultOrientationApplied) return;
95
+
96
+ JSONObject optionsJsonObject = configJSON.optJSONObject("options");
97
+
98
+ if (optionsJsonObject != null) {
99
+ String defaultOrientationJsonString = optionsJsonObject.optString("defaultOrientation", "");
100
+
101
+ if ("portrait".equals(defaultOrientationJsonString)) {
102
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
103
+ } else if ("landscape".equals(defaultOrientationJsonString)) {
104
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
105
+ }
106
+ }
107
+ defaultOrientationApplied = true;
108
+ }
109
+
110
+ private void setupChangeOrientationButton(JSONObject configJSON) {
111
+ binding.layoutChangeOrientation.setVisibility(View.GONE);
112
+ JSONObject optionsJsonObject = configJSON.optJSONObject("options");
113
+
114
+ if (optionsJsonObject != null) {
115
+
116
+ JSONObject rotateButtonJson = optionsJsonObject.optJSONObject("rotateButton");
117
+ if (rotateButtonJson != null) {
118
+ RotateButtonConfig rotateButtonConfig = new RotateButtonConfig(rotateButtonJson);
119
+
120
+ CoordinatorLayout.LayoutParams buttonLayoutParams = new CoordinatorLayout.LayoutParams(
121
+ CoordinatorLayout.LayoutParams.WRAP_CONTENT,
122
+ CoordinatorLayout.LayoutParams.WRAP_CONTENT);
123
+
124
+ buttonLayoutParams.gravity = Gravity.TOP | Gravity.RIGHT;
125
+ String alignment = rotateButtonConfig.getAlignment();
126
+ if (alignment.length() > 0) {
127
+ if (alignment.equals("top_left")) {
128
+ buttonLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
129
+ }
130
+ if (alignment.equals("top_right")) {
131
+ buttonLayoutParams.gravity = Gravity.TOP | Gravity.RIGHT;
132
+ }
133
+ if (alignment.equals("bottom_left")) {
134
+ buttonLayoutParams.gravity = Gravity.BOTTOM | Gravity.LEFT;
135
+ }
136
+ if (alignment.equals("bottom_right")) {
137
+ buttonLayoutParams.gravity = Gravity.BOTTOM | Gravity.RIGHT;
138
+ }
139
+ }
140
+ if (rotateButtonConfig.hasOffset()) {
141
+ buttonLayoutParams.setMargins(rotateButtonConfig.getOffset().getX(), rotateButtonConfig.getOffset().getY(), 0, 0);
142
+ }
143
+ binding.layoutChangeOrientation.setLayoutParams(buttonLayoutParams);
144
+ binding.layoutChangeOrientation.requestLayout();
145
+
146
+ binding.layoutChangeOrientation.setVisibility(View.VISIBLE);
147
+ binding.imageviewChangeOrientation.setOnClickListener(v -> {
148
+ if (orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
149
+ orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
150
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
151
+ } else {
152
+ orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
153
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
154
+ }
155
+ });
156
+ }
157
+ }
158
+ }
159
+
160
+ @NonNull
161
+ private JSONObject getResultWithImagePath(ScanResult scanResult) {
162
+ JSONObject resultObject = scanResult.getResult();
163
+
164
+ try {
165
+ String fullImagePath = scanResult.getImage().save();
166
+ String cutoutImagePath = scanResult.getCutoutImage().save();
167
+ resultObject.put("fullImagePath", fullImagePath);
168
+ resultObject.put("imagePath", cutoutImagePath);
169
+ } catch (Exception e) {
170
+ e.printStackTrace();
171
+ }
172
+ return resultObject;
173
+ }
174
+
175
+ private void finishWithError(String errorMessage) {
176
+ Intent intent = new Intent();
177
+ intent.putExtra(EXTRA_ERROR_MESSAGE, errorMessage);
178
+ setResult(RESULT_ERROR, intent);
179
+ finish();
180
+ }
181
+
182
+ @Override
183
+ protected void onSaveInstanceState(Bundle outState) {
184
+ super.onSaveInstanceState(outState);
185
+ outState.putBoolean(KEY_DEFAULT_ORIENTATION_APPLIED, defaultOrientationApplied);
186
+ }
187
+
188
+ @Override
189
+ protected void onResume() {
190
+ super.onResume();
191
+ scanView.start();
192
+ }
193
+
194
+ @Override
195
+ protected void onPause() {
196
+ scanView.stop();
197
+ scanView.getCameraView().releaseCameraInBackground();
198
+ super.onPause();
199
+ }
200
+
201
+ @Override
202
+ public void onBackPressed() {
203
+ ResultReporter.onCancel();
204
+ super.onBackPressed();
205
+ }
206
+ }
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+
3
+ <shape xmlns:android="http://schemas.android.com/apk/res/android">
4
+ <solid
5
+ android:color="#A5000000"/>
6
+ <stroke
7
+ android:color="@android:color/white"
8
+ android:width="1dp"/>
9
+ <corners
10
+ android:radius="30dp" />
11
+
12
+ <padding
13
+ android:left="4dp"
14
+ android:top="4dp"
15
+ android:right="4dp"
16
+ android:bottom="4dp" />
17
+
18
+ </shape>
@@ -0,0 +1,27 @@
1
+ <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
2
+ xmlns:app="http://schemas.android.com/apk/res-auto"
3
+ android:layout_width="match_parent"
4
+ android:layout_height="match_parent">
5
+
6
+ <io.anyline2.view.ScanView
7
+ android:id="@+id/scan_view"
8
+ android:layout_width="match_parent"
9
+ android:layout_height="match_parent"
10
+ app:api_2_enabled="false" />
11
+
12
+ <LinearLayout
13
+ android:id="@+id/layout_change_orientation"
14
+ android:layout_width="wrap_content"
15
+ android:layout_height="wrap_content"
16
+ android:layout_gravity="right|top"
17
+ android:gravity="center"
18
+ android:padding="40px">
19
+ <ImageView
20
+ android:id="@+id/imageview_change_orientation"
21
+ android:layout_width="40dp"
22
+ android:layout_height="40dp"
23
+ android:scaleType="fitStart"
24
+ android:background="@drawable/rotate_screen_background"
25
+ android:src="@drawable/rotate_screen_white" />
26
+ </LinearLayout>
27
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -1,34 +1,8 @@
1
1
  <resources>
2
- <string name="error_unkown_scan_mode">Unkown scan mode: </string>
2
+ <string name="error_unknown_scan_mode">Unknown scan mode: </string>
3
3
  <string name="error_invalid_json_data">Config json is invalid.</string>
4
4
  <string name="error_invalid_segment_config">Semgent config not valid. Must have equal amount of titles and modes.</string>
5
5
  <string name="error_accessing_camera">Error while accessing camera.</string>
6
6
  <string name="error_licence_invalid">Error: Anyline license invalid.</string>
7
- <string name="error_occured">An error occured.</string>
8
-
9
- <string name="document_advanced_outline_detection">Advanced Outline Detection</string>
10
- <string name="document_fast_outline_detection">Fast Outline Detection</string>
11
- <string name="document_error_not_sharp">Document is not sharp. Please hold the camera steadily and ensure the document is in focus</string>
12
- <string name="document_error_skew_too_high">Document is skewed. Place the camera directly above the document</string>
13
- <string name="document_error_outline_not_found">Could not detect document outline</string>
14
-
15
- <string name="document_error_glare_detected">Please remove the glare</string>
16
- <string name="document_error_too_dark">The image is too dark. Please ensure there is enough light</string>
17
- <string name="document_error_unknown">Unknown Failure</string>
18
- <string name="document_picture_error">Error scanning full document:\n</string>
19
- <string name="document_preview_success">Scanning full document. Please hold still</string>
20
- <string name="document_picture_success">Document scanned successfully</string>
21
- <string name="document_using_fast_mode">Switched to fast detection mode</string>
22
- <string name="document_using_advanced_mode">Switched to advanced detection mode</string>
23
- <string name="document_processing_picture_header">Processing</string>
24
- <string name="document_processing_picture">Processing the Picture. Please wait</string>
25
- <string name="document_error_shake">Shake detected</string>
26
- <string name="document_error_closer">Come closer</string>
27
- <string name="document_error_format">Unrecognised format</string>
28
- <string name="document_image_saved_to">Image saved to</string>
29
-
30
- <string name="document_processing">Processing</string>
31
- <string name="document_processing_picture_please_wait">Processing the picture. Please wait.</string>
32
-
33
-
7
+ <string name="error_occurred">An error occurred.</string>
34
8
  </resources>
@@ -1,11 +1,3 @@
1
- //
2
- // ALJsonUIConfiguration.h
3
- // FoodNotifyBussines
4
- //
5
- // Created by Matthias Gasser on 12/11/15.
6
- //
7
- //
8
-
9
1
  #import <Foundation/Foundation.h>
10
2
  #import <UIKit/UIKit.h>
11
3
 
@@ -21,41 +13,42 @@ typedef NS_ENUM(NSUInteger, ALButtonYAlignment) {
21
13
  ALButtonYAlignmentBottom=2
22
14
  };
23
15
 
24
-
25
16
  typedef NS_ENUM(NSUInteger, ALButtonType) {
26
17
  ALButtonTypeFullWidth=0,
27
18
  ALButtonTypeRect=1,
28
19
  };
29
20
 
30
21
 
31
- @interface ALJsonUIConfiguration : NSObject
22
+ @interface ALJSONUIConfiguration : NSObject
32
23
 
33
24
  // Done Button
34
- @property (nonatomic,strong) NSString *buttonDoneTitle;
35
- @property (nonatomic,assign) CGFloat buttonDoneFontSize;
36
- @property (nonatomic,strong) NSString *buttonDoneFontName;
37
- @property (nonatomic,strong) UIColor *buttonDoneTextColor;
38
- @property (nonatomic,strong) UIColor *buttonDoneTextColorHighlighted;
39
- @property (nonatomic,strong) UIColor *buttonDoneBackgroundColor;
40
- @property (nonatomic,assign) ALButtonType buttonType;
41
- @property (nonatomic,assign) CGFloat buttonDoneCornerRadius;
42
- @property (nonatomic,assign) ALButtonXAlignment buttonDoneXAlignment;
43
- @property (nonatomic,assign) ALButtonYAlignment buttonDoneYAlignment;
44
- @property (nonatomic,assign) CGFloat buttonDoneXPositionOffset;
45
- @property (nonatomic,assign) CGFloat buttonDoneYPositionOffset;
46
-
47
- @property (nonatomic,strong) NSArray<NSString *> *segmentTitles;
48
- @property (nonatomic,strong) NSArray<NSString *> *segmentModes;
49
- @property (nonatomic,strong) UIColor *segmentTintColor;
50
- @property (nonatomic,assign) CGFloat segmentXPositionOffset;
51
- @property (nonatomic,assign) CGFloat segmentYPositionOffset;
52
-
53
- @property (nonatomic,strong) NSString *labelText;
54
- @property (nonatomic,assign) CGFloat labelSize;
55
- @property (nonatomic,strong) UIColor *labelColor;
56
- @property (nonatomic,assign) CGFloat labelXPositionOffset;
57
- @property (nonatomic,assign) CGFloat labelYPositionOffset;
58
-
59
- -(instancetype) initWithDictionary:(NSDictionary*)dictionary;
25
+ @property (nonatomic, strong) NSString *buttonDoneTitle;
26
+ @property (nonatomic, assign) CGFloat buttonDoneFontSize;
27
+ @property (nonatomic, strong) NSString *buttonDoneFontName;
28
+ @property (nonatomic, strong) UIColor *buttonDoneTextColor;
29
+ @property (nonatomic, strong) UIColor *buttonDoneTextColorHighlighted;
30
+ @property (nonatomic, strong) UIColor *buttonDoneBackgroundColor;
31
+ @property (nonatomic, assign) ALButtonType buttonType;
32
+ @property (nonatomic, assign) CGFloat buttonDoneCornerRadius;
33
+ @property (nonatomic, assign) ALButtonXAlignment buttonDoneXAlignment;
34
+ @property (nonatomic, assign) ALButtonYAlignment buttonDoneYAlignment;
35
+ @property (nonatomic, assign) CGFloat buttonDoneXPositionOffset;
36
+ @property (nonatomic, assign) CGFloat buttonDoneYPositionOffset;
37
+
38
+ @property (nonatomic, strong) NSArray<NSString *> *segmentTitles;
39
+ @property (nonatomic, strong) NSArray<NSString *> *segmentModes;
40
+ @property (nonatomic, strong) UIColor *segmentTintColor;
41
+ @property (nonatomic, assign) CGFloat segmentXPositionOffset;
42
+ @property (nonatomic, assign) CGFloat segmentYPositionOffset;
43
+
44
+ @property (nonatomic, strong) NSString *labelText;
45
+ @property (nonatomic, assign) CGFloat labelSize;
46
+ @property (nonatomic, strong) UIColor *labelColor;
47
+ @property (nonatomic, assign) CGFloat labelXPositionOffset;
48
+ @property (nonatomic, assign) CGFloat labelYPositionOffset;
49
+
50
+ @property (nonatomic, strong) NSArray<NSString *> *nativeBarcodeFormats;
51
+
52
+ - (instancetype)initWithDictionary:(NSDictionary *)dictionary;
60
53
 
61
54
  @end