react-native-okaycam 1.1.10 → 1.1.22
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/README.md +15 -1
- package/android/.DS_Store +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.8/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.8/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/6.8/gc.properties +0 -0
- package/android/.gradle/6.8/javaCompile/classAnalysis.bin +0 -0
- package/android/.gradle/6.8/javaCompile/jarAnalysis.bin +0 -0
- package/android/.gradle/6.8/javaCompile/javaCompile.lock +0 -0
- package/android/.gradle/6.8/javaCompile/taskHistory.bin +0 -0
- package/android/.gradle/7.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.2/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
- 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/.idea/.gitignore +3 -0
- package/android/.idea/compiler.xml +6 -0
- package/android/.idea/gradle.xml +8 -4
- package/android/.idea/jarRepositories.xml +40 -0
- package/android/.idea/libraries/Gradle__androidx_activity_activity_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_1_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_collection_collection_1_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_1_3_1_aar.xml +16 -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_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_fragment_fragment_1_1_0_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_1_0.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_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_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_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_0_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_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_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__com_caverock_androidsvg_aar_1_4_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_0_8_1_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_20_1_aar.xml +19 -0
- package/android/.idea/libraries/Gradle__com_facebook_stetho_stetho_1_2_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_stetho_stetho_okhttp_1_2_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_fasterxml_jackson_core_jackson_core_2_2_3.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_googlecode_json_simple_json_simple_1_1_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_innov8tif_okaycam_OkayCam_1_1_9_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_nineoldandroids_library_2_4_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_parse_bolts_bolts_android_1_1_4.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp_okhttp_2_5_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp_okhttp_ws_2_5_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_6_0.xml +13 -0
- package/android/.idea/libraries/Gradle__commons_cli_commons_cli_1_2.xml +13 -0
- package/android/.idea/libraries/Gradle__junit_junit_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_1.xml +11 -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_21.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_21.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_21.xml +13 -0
- package/android/.idea/libraries/Gradle__org_webkit_android_jsc_r174650_aar.xml +11 -0
- package/android/.idea/misc.xml +1 -1
- package/android/.idea/modules/android.iml +93 -6
- package/android/build/generated/source/buildConfig/debug/com/innov8tif/RNOkayCam/BuildConfig.java +12 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +11 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json +27 -0
- package/android/build/intermediates/aar_main_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/annotations_typedef_file/debug/typedefs.txt +0 -0
- package/android/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +3230 -0
- package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
- package/android/build/intermediates/incremental/debug-mergeNativeLibs/merge-state +0 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +1 -0
- package/android/build/intermediates/incremental/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/classes/com/innov8tif/RNOkayCam/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/innov8tif/RNOkayCam/RNOkayCamModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/innov8tif/RNOkayCam/RNOkayCamPackage.class +0 -0
- package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +11 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +2 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +13 -0
- package/android/build/intermediates/merged_java_res/debug/out.jar +0 -0
- package/android/build/intermediates/merged_manifests/debug/output.json +27 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +2248 -0
- package/android/build/outputs/aar/android-debug.aar +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +37 -0
- package/android/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt +6 -0
- package/android/build.gradle +13 -5
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/android/gradle.properties +2 -0
- package/android/gradlew +185 -0
- package/android/gradlew.bat +89 -0
- package/android/src/main/java/com/innov8tif/RNOkayCam/RNOkayCamModule.java +355 -248
- package/index.ts +182 -152
- package/ios/RNOkayCam.swift +49 -0
- package/ios/RNOkayCam.xcodeproj/project.pbxproj +55 -2
- package/ios/RNOkayCam.xcodeproj/xcuserdata/thet.xcuserdatad/xcschemes/xcschememanagement.plist +1 -1
- package/ios/RNOkayCam.xcworkspace/contents.xcworkspacedata +3 -0
- package/ios/RNOkayCam.xcworkspace/xcuserdata/thet.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/package.json +1 -1
- package/react-native-okaycam.podspec +1 -1
- package/android/.idea/workspace.xml +0 -44
|
@@ -27,6 +27,7 @@ import com.innov8tif.okaycam.config.OkayCamCaptureConfig;
|
|
|
27
27
|
import com.innov8tif.okaycam.config.OkayCamConfig;
|
|
28
28
|
import com.innov8tif.okaycam.config.OkayCamFrameConfig;
|
|
29
29
|
import com.innov8tif.okaycam.config.OkayCamLabelConfig;
|
|
30
|
+
import com.innov8tif.okaycam.config.OkayCamPreviewConfig;
|
|
30
31
|
import com.innov8tif.okaycam.config.OkayCamTimerConfig;
|
|
31
32
|
import com.innov8tif.okaycam.config.OkaySelfieConfig;
|
|
32
33
|
import com.innov8tif.okaycam.config.OkaySelfieLabelConfig;
|
|
@@ -46,310 +47,416 @@ import java.net.URL;
|
|
|
46
47
|
|
|
47
48
|
public class RNOkayCamModule extends ReactContextBaseJavaModule {
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
private final ReactApplicationContext reactContext;
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
public RNOkayCamModule(ReactApplicationContext reactContext) {
|
|
53
|
+
super(reactContext);
|
|
54
|
+
this.reactContext = reactContext;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@Override
|
|
58
|
+
public String getName() {
|
|
59
|
+
return "RNOkayCam";
|
|
60
|
+
}
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
62
|
+
@ReactMethod
|
|
63
|
+
public void captureDocument(ReadableMap configs, Promise promise) {
|
|
64
|
+
String LICENSE_KEY = configs.getString("license");
|
|
60
65
|
|
|
61
|
-
|
|
62
|
-
public void captureDocument(ReadableMap configs, Promise promise) {
|
|
63
|
-
String LICENSE_KEY = configs.getString("license");
|
|
66
|
+
Boolean base64 = configs.getBoolean("base64");
|
|
64
67
|
|
|
65
|
-
|
|
68
|
+
ReadableMap userConfig = configs.getMap("config");
|
|
69
|
+
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
70
|
+
ReadableMap bottomLabel = userConfig.getMap("bottomLabel");
|
|
71
|
+
ReadableMap frame = userConfig.getMap("frame");
|
|
72
|
+
ReadableMap timer = userConfig.getMap("timer");
|
|
73
|
+
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
74
|
+
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
75
|
+
ReadableMap captureConfigPair = userConfig.getMap("captureConfigPair");
|
|
76
|
+
ReadableMap firstPhoto = captureConfigPair.getMap("firstPhoto");
|
|
77
|
+
ReadableMap secondPhoto = captureConfigPair.getMap("secondPhoto");
|
|
78
|
+
ReadableMap preview = userConfig.getMap("preview");
|
|
66
79
|
|
|
67
|
-
ReadableMap userConfig = configs.getMap("config");
|
|
68
|
-
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
69
|
-
ReadableMap bottomLabel = userConfig.getMap("bottomLabel");
|
|
70
|
-
ReadableMap frame = userConfig.getMap("frame");
|
|
71
|
-
ReadableMap timer = userConfig.getMap("timer");
|
|
72
|
-
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
73
|
-
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
74
|
-
ReadableMap captureConfigPair = userConfig.getMap("captureConfigPair");
|
|
75
|
-
ReadableMap firstPhoto = captureConfigPair.getMap("firstPhoto");
|
|
76
|
-
ReadableMap secondPhoto = captureConfigPair.getMap("secondPhoto");
|
|
77
80
|
|
|
78
|
-
|
|
81
|
+
OkayCamConfig okayCamConfig = OkayCamConfig.init(this.getCurrentActivity());
|
|
79
82
|
|
|
80
|
-
|
|
83
|
+
okayCamConfig.setShowOverlay(userConfig.getBoolean("showOverlay"));
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
okayCamConfig.setTorchBtnEnabled(userConfig.getBoolean("torchBtnEnabled"));
|
|
86
|
+
okayCamConfig.setCrop(userConfig.getBoolean("crop"));
|
|
84
87
|
|
|
85
|
-
|
|
86
|
-
|
|
88
|
+
if (userConfig.getInt("width") != -1) {
|
|
89
|
+
okayCamConfig.setWidth(userConfig.getInt("width"));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
okayCamConfig.setImageQuality((float) userConfig.getDouble("imageQuality"));
|
|
93
|
+
|
|
94
|
+
okayCamConfig.setTopLabel(new OkayCamLabelConfig(
|
|
95
|
+
topLabel.getString("text"),
|
|
96
|
+
Color.parseColor(topLabel.getString("color")),
|
|
97
|
+
topLabel.getInt("size")
|
|
98
|
+
));
|
|
99
|
+
okayCamConfig.setBottomLabel(new OkayCamLabelConfig(
|
|
100
|
+
bottomLabel.getString("text"),
|
|
101
|
+
Color.parseColor(bottomLabel.getString("color")),
|
|
102
|
+
bottomLabel.getInt("size")
|
|
103
|
+
));
|
|
104
|
+
|
|
105
|
+
OkayCamFrameConfig frameConfig = getFrameConfig(frame);
|
|
106
|
+
okayCamConfig.setFrame(frameConfig);
|
|
107
|
+
|
|
108
|
+
okayCamConfig.setCaptureBtnColor(Color.parseColor(userConfig.getString("captureBtnColor")));
|
|
109
|
+
okayCamConfig.setTimer(new OkayCamTimerConfig(
|
|
110
|
+
Color.parseColor(timer.getString("backgroundColor")),
|
|
111
|
+
Color.parseColor(timer.getString("textColor"))
|
|
112
|
+
));
|
|
113
|
+
|
|
114
|
+
okayCamConfig.setConfirmBtnConfig(new OkayCamBtnConfig(
|
|
115
|
+
Color.parseColor(confirmBtnConfig.getString("backgroundColor")),
|
|
116
|
+
Color.parseColor(confirmBtnConfig.getString("contentColor"))
|
|
117
|
+
));
|
|
118
|
+
|
|
119
|
+
okayCamConfig.setRetakeBtnConfig(new OkayCamBtnConfig(
|
|
120
|
+
Color.parseColor(retakeBtnConfig.getString("backgroundColor")),
|
|
121
|
+
Color.parseColor(retakeBtnConfig.getString("contentColor"))
|
|
122
|
+
));
|
|
123
|
+
|
|
124
|
+
okayCamConfig.setCaptureConfig(new CaptureConfigPair(
|
|
125
|
+
firstPhoto != null ? new OkayCamCaptureConfig(
|
|
126
|
+
firstPhoto.getInt("delay"),
|
|
127
|
+
firstPhoto.getBoolean("onFlash"),
|
|
128
|
+
firstPhoto.getString("outputPath")
|
|
129
|
+
) : null,
|
|
130
|
+
secondPhoto != null ? new OkayCamCaptureConfig(
|
|
131
|
+
secondPhoto.getInt("delay"),
|
|
132
|
+
secondPhoto.getBoolean("onFlash"),
|
|
133
|
+
secondPhoto.getString("outputPath")
|
|
134
|
+
) : null
|
|
135
|
+
));
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
okayCamConfig.setPreview(getPreviewConfig(preview, frameConfig));
|
|
139
|
+
|
|
140
|
+
OkayCamDoc.start(this.getCurrentActivity(), LICENSE_KEY, okayCamConfig, (success, images, exception) -> {
|
|
141
|
+
|
|
142
|
+
if (success) {
|
|
143
|
+
JSONObject results = new JSONObject();
|
|
144
|
+
try {
|
|
145
|
+
|
|
146
|
+
results.put("fullDocumentImage", convertImgToBase64(base64, images.get(0)));
|
|
147
|
+
|
|
148
|
+
if (images.size() > 1) {
|
|
149
|
+
results.put("fullDocumentImage2", convertImgToBase64(base64, images.get(1)));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (images.size() > 2) {
|
|
153
|
+
results.put("fullDocumentImage3", convertImgToBase64(base64, images.get(2)));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (images.size() > 3) {
|
|
157
|
+
results.put("fullDocumentImage4", convertImgToBase64(base64, images.get(3)));
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
promise.resolve(results.toString());
|
|
161
|
+
} catch (JSONException e) {
|
|
162
|
+
// TODO Auto-generated catch block
|
|
163
|
+
e.printStackTrace();
|
|
164
|
+
promise.reject(this.getError(e.getMessage()));
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
promise.reject(this.getError(exception.getMessage()));
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
});
|
|
87
171
|
}
|
|
88
172
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
));
|
|
96
|
-
okayCamConfig.setBottomLabel(new OkayCamLabelConfig(
|
|
97
|
-
bottomLabel.getString("text"),
|
|
98
|
-
Color.parseColor(bottomLabel.getString("color")),
|
|
99
|
-
bottomLabel.getInt("size")
|
|
100
|
-
));
|
|
101
|
-
|
|
102
|
-
okayCamConfig.setFrame(getFrameConfig(frame));
|
|
103
|
-
|
|
104
|
-
okayCamConfig.setCaptureBtnColor(Color.parseColor(userConfig.getString("captureBtnColor")));
|
|
105
|
-
okayCamConfig.setTimer(new OkayCamTimerConfig(
|
|
106
|
-
Color.parseColor(timer.getString("backgroundColor")),
|
|
107
|
-
Color.parseColor(timer.getString("textColor"))
|
|
108
|
-
));
|
|
109
|
-
|
|
110
|
-
okayCamConfig.setConfirmBtnConfig(new OkayCamBtnConfig(
|
|
111
|
-
Color.parseColor(confirmBtnConfig.getString("backgroundColor")),
|
|
112
|
-
Color.parseColor(confirmBtnConfig.getString("contentColor"))
|
|
113
|
-
));
|
|
114
|
-
|
|
115
|
-
okayCamConfig.setRetakeBtnConfig(new OkayCamBtnConfig(
|
|
116
|
-
Color.parseColor(retakeBtnConfig.getString("backgroundColor")),
|
|
117
|
-
Color.parseColor(retakeBtnConfig.getString("contentColor"))
|
|
118
|
-
));
|
|
119
|
-
|
|
120
|
-
okayCamConfig.setCaptureConfig(new CaptureConfigPair(
|
|
121
|
-
firstPhoto != null ? new OkayCamCaptureConfig(
|
|
122
|
-
firstPhoto.getInt("delay"),
|
|
123
|
-
firstPhoto.getBoolean("onFlash"),
|
|
124
|
-
firstPhoto.getString("outputPath")
|
|
125
|
-
) : null,
|
|
126
|
-
secondPhoto != null ? new OkayCamCaptureConfig(
|
|
127
|
-
secondPhoto.getInt("delay"),
|
|
128
|
-
secondPhoto.getBoolean("onFlash"),
|
|
129
|
-
secondPhoto.getString("outputPath")
|
|
130
|
-
) : null
|
|
131
|
-
));
|
|
132
|
-
|
|
133
|
-
OkayCamDoc.start(this.getCurrentActivity(), LICENSE_KEY, okayCamConfig, (success, images, exception) -> {
|
|
134
|
-
|
|
135
|
-
if (success) {
|
|
136
|
-
JSONObject results = new JSONObject();
|
|
137
|
-
try {
|
|
173
|
+
private OkayCamPreviewConfig getPreviewConfig(ReadableMap preview, OkayCamFrameConfig frameConfig) {
|
|
174
|
+
if (preview == null) return null;
|
|
175
|
+
OkayCamLabelConfig title = mapToLabelConfig(preview.getMap("title"));
|
|
176
|
+
OkayCamLabelConfig instr1 = mapToLabelConfig(preview.getMap("instruction1"));
|
|
177
|
+
OkayCamLabelConfig instr2 = mapToLabelConfig(preview.getMap("instruction2"));
|
|
178
|
+
OkayCamLabelConfig instr3 = mapToLabelConfig(preview.getMap("instruction3"));
|
|
138
179
|
|
|
139
|
-
|
|
180
|
+
int bgColor = Color.parseColor(preview.getString("backgroundColor"));
|
|
140
181
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
182
|
+
String refImage = preview.getString("refImage");
|
|
183
|
+
|
|
184
|
+
Size size = frameConfig.getSize();
|
|
185
|
+
int frameWidth = size.getWidth();
|
|
186
|
+
int frameHeight = size.getHeight();
|
|
144
187
|
|
|
145
|
-
promise.resolve(results.toString());
|
|
146
|
-
} catch (JSONException e) {
|
|
147
|
-
// TODO Auto-generated catch block
|
|
148
|
-
e.printStackTrace();
|
|
149
|
-
promise.reject(this.getError(e.getMessage()));
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
promise.reject(this.getError(exception.getMessage()));
|
|
154
|
-
}
|
|
155
|
-
return null;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
private OkayCamFrameConfig getFrameConfig(ReadableMap frameConfig) {
|
|
160
|
-
ReadableMap frameSizeMap = frameConfig.getMap("size");
|
|
161
|
-
String frameColor = frameConfig.getString("color");
|
|
162
|
-
String frameContent = frameConfig.getString("content");
|
|
163
|
-
|
|
164
|
-
int frameWidth = frameSizeMap.getInt("width");
|
|
165
|
-
int frameHeight = frameSizeMap.getInt("height");
|
|
166
|
-
Size frameSize = new Size(frameWidth, frameHeight);
|
|
167
|
-
|
|
168
|
-
try {
|
|
169
|
-
if (frameContent != null) {
|
|
170
188
|
Bitmap contentBmp = null;
|
|
189
|
+
try {
|
|
190
|
+
if (refImage != null) {
|
|
171
191
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
192
|
+
// In debug, the image is returned as URL
|
|
193
|
+
if (BuildConfig.DEBUG) {
|
|
194
|
+
InputStream inputStream = new URL(refImage).openStream();
|
|
175
195
|
|
|
176
|
-
|
|
196
|
+
if (refImage.contains("svg")) {
|
|
177
197
|
|
|
178
|
-
|
|
198
|
+
SVG svg = SVG.getFromInputStream(inputStream);
|
|
179
199
|
|
|
180
|
-
|
|
181
|
-
|
|
200
|
+
svg.setDocumentWidth(frameWidth);
|
|
201
|
+
svg.setDocumentHeight(frameHeight);
|
|
182
202
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
203
|
+
if (svg.getDocumentWidth() != -1) {
|
|
204
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
205
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
206
|
+
Bitmap.Config.ARGB_8888);
|
|
187
207
|
|
|
188
|
-
|
|
208
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
189
209
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
210
|
+
// Render our document onto our canvas
|
|
211
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
contentBmp = BitmapFactory.decodeStream(inputStream);
|
|
215
|
+
}
|
|
216
|
+
} else {
|
|
217
|
+
// In release, the image is returned as raw (svg) or drawable (png, jpeg and etc)
|
|
218
|
+
int resourceId = this.getCurrentActivity().getResources().getIdentifier(refImage, "raw", this.getCurrentActivity().getPackageName());
|
|
199
219
|
|
|
200
|
-
|
|
201
|
-
|
|
220
|
+
if (resourceId != 0) {
|
|
221
|
+
SVG svg = SVG.getFromResource(getReactApplicationContext(), resourceId);
|
|
202
222
|
|
|
203
|
-
|
|
204
|
-
|
|
223
|
+
svg.setDocumentWidth(frameWidth);
|
|
224
|
+
svg.setDocumentHeight(frameHeight);
|
|
205
225
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
226
|
+
if (svg.getDocumentWidth() != -1) {
|
|
227
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
228
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
229
|
+
Bitmap.Config.ARGB_8888);
|
|
210
230
|
|
|
211
|
-
|
|
231
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
212
232
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
233
|
+
// Render our document onto our canvas
|
|
234
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
resourceId = this.getCurrentActivity().getResources().getIdentifier(refImage, "drawable", this.getCurrentActivity().getPackageName());
|
|
238
|
+
contentBmp = BitmapFactory.decodeResource(getReactApplicationContext().getResources(), resourceId);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
216
241
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
242
|
+
} catch (SVGParseException | MalformedURLException e) {
|
|
243
|
+
e.printStackTrace();
|
|
244
|
+
} catch (IOException e) {
|
|
245
|
+
e.printStackTrace();
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
return new OkayCamPreviewConfig(
|
|
250
|
+
title,
|
|
251
|
+
generateFile(contentBmp, "ref.png"),
|
|
252
|
+
instr1,
|
|
253
|
+
instr2,
|
|
254
|
+
instr3,
|
|
255
|
+
bgColor
|
|
256
|
+
);
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
private OkayCamLabelConfig mapToLabelConfig(ReadableMap map) {
|
|
261
|
+
return new OkayCamLabelConfig(
|
|
262
|
+
map.getString("text"),
|
|
263
|
+
Color.parseColor(map.getString("color")),
|
|
264
|
+
map.getInt("size")
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
private OkayCamFrameConfig getFrameConfig(ReadableMap frameConfig) {
|
|
270
|
+
ReadableMap frameSizeMap = frameConfig.getMap("size");
|
|
271
|
+
String frameColor = frameConfig.getString("color");
|
|
272
|
+
String frameContent = frameConfig.getString("content");
|
|
273
|
+
|
|
274
|
+
int frameWidth = frameSizeMap.getInt("width");
|
|
275
|
+
int frameHeight = frameSizeMap.getInt("height");
|
|
276
|
+
Size frameSize = new Size(frameWidth, frameHeight);
|
|
277
|
+
|
|
278
|
+
try {
|
|
279
|
+
if (frameContent != null) {
|
|
280
|
+
Bitmap contentBmp = null;
|
|
281
|
+
|
|
282
|
+
// In debug, the image is returned as URL
|
|
283
|
+
if (BuildConfig.DEBUG) {
|
|
284
|
+
InputStream inputStream = new URL(frameContent).openStream();
|
|
285
|
+
|
|
286
|
+
if (frameContent.contains("svg")) {
|
|
287
|
+
|
|
288
|
+
SVG svg = SVG.getFromInputStream(inputStream);
|
|
289
|
+
|
|
290
|
+
svg.setDocumentWidth(frameWidth);
|
|
291
|
+
svg.setDocumentHeight(frameHeight);
|
|
292
|
+
|
|
293
|
+
if (svg.getDocumentWidth() != -1) {
|
|
294
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
295
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
296
|
+
Bitmap.Config.ARGB_8888);
|
|
297
|
+
|
|
298
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
299
|
+
|
|
300
|
+
// Render our document onto our canvas
|
|
301
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
302
|
+
}
|
|
303
|
+
} else {
|
|
304
|
+
contentBmp = BitmapFactory.decodeStream(inputStream);
|
|
305
|
+
}
|
|
306
|
+
} else {
|
|
307
|
+
// In release, the image is returned as raw (svg) or drawable (png, jpeg and etc)
|
|
308
|
+
int resourceId = this.getCurrentActivity().getResources().getIdentifier(frameContent, "raw", this.getCurrentActivity().getPackageName());
|
|
309
|
+
|
|
310
|
+
if (resourceId != 0) {
|
|
311
|
+
SVG svg = SVG.getFromResource(getReactApplicationContext(), resourceId);
|
|
312
|
+
|
|
313
|
+
svg.setDocumentWidth(frameWidth);
|
|
314
|
+
svg.setDocumentHeight(frameHeight);
|
|
315
|
+
|
|
316
|
+
if (svg.getDocumentWidth() != -1) {
|
|
317
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
318
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
319
|
+
Bitmap.Config.ARGB_8888);
|
|
320
|
+
|
|
321
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
322
|
+
|
|
323
|
+
// Render our document onto our canvas
|
|
324
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
325
|
+
}
|
|
326
|
+
} else {
|
|
327
|
+
resourceId = this.getCurrentActivity().getResources().getIdentifier(frameContent, "drawable", this.getCurrentActivity().getPackageName());
|
|
328
|
+
contentBmp = BitmapFactory.decodeResource(getReactApplicationContext().getResources(), resourceId);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return new OkayCamFrameConfig(frameSize, Color.parseColor(frameColor), generateFile(contentBmp, "content.png"));
|
|
220
332
|
}
|
|
333
|
+
} catch (SVGParseException | MalformedURLException e) {
|
|
334
|
+
e.printStackTrace();
|
|
335
|
+
} catch (IOException e) {
|
|
336
|
+
e.printStackTrace();
|
|
221
337
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
} catch (SVGParseException | MalformedURLException e) {
|
|
225
|
-
e.printStackTrace();
|
|
226
|
-
} catch (IOException e) {
|
|
227
|
-
e.printStackTrace();
|
|
338
|
+
|
|
339
|
+
return new OkayCamFrameConfig(frameSize, Color.parseColor(frameColor), null);
|
|
228
340
|
}
|
|
229
341
|
|
|
230
|
-
|
|
231
|
-
|
|
342
|
+
public String generateFile(Bitmap bitmap, String filename) {
|
|
343
|
+
try {
|
|
344
|
+
String resultedFolder = ".private";
|
|
345
|
+
File privateFolder = this.getReactApplicationContext().getExternalFilesDir(resultedFolder);
|
|
232
346
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
File privateFolder = this.getReactApplicationContext().getExternalFilesDir(resultedFolder);
|
|
347
|
+
if (!privateFolder.exists()) {
|
|
348
|
+
privateFolder.mkdir();
|
|
349
|
+
}
|
|
237
350
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
351
|
+
File file = new File(privateFolder, filename);
|
|
352
|
+
file.createNewFile();
|
|
241
353
|
|
|
242
|
-
|
|
243
|
-
|
|
354
|
+
FileOutputStream fos = new FileOutputStream(file.getAbsolutePath());
|
|
355
|
+
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
|
|
244
356
|
|
|
245
|
-
|
|
246
|
-
|
|
357
|
+
return file.getAbsolutePath();
|
|
358
|
+
} catch (IOException e) {
|
|
359
|
+
e.printStackTrace();
|
|
360
|
+
}
|
|
247
361
|
|
|
248
|
-
|
|
249
|
-
} catch (IOException e) {
|
|
250
|
-
e.printStackTrace();
|
|
362
|
+
return null;
|
|
251
363
|
}
|
|
252
364
|
|
|
253
|
-
|
|
254
|
-
|
|
365
|
+
@ReactMethod
|
|
366
|
+
public void captureSelfie(ReadableMap configs, Promise promise) {
|
|
367
|
+
String LICENSE_KEY = configs.getString("license");
|
|
255
368
|
|
|
256
|
-
|
|
257
|
-
public void captureSelfie(ReadableMap configs, Promise promise) {
|
|
258
|
-
String LICENSE_KEY = configs.getString("license");
|
|
369
|
+
Boolean base64 = configs.getBoolean("base64");
|
|
259
370
|
|
|
260
|
-
|
|
371
|
+
ReadableMap userConfig = configs.getMap("config");
|
|
372
|
+
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
373
|
+
ReadableMap switchBtnConfig = userConfig.getMap("switchBtnConfig");
|
|
374
|
+
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
375
|
+
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
261
376
|
|
|
262
|
-
|
|
263
|
-
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
264
|
-
ReadableMap switchBtnConfig = userConfig.getMap("switchBtnConfig");
|
|
265
|
-
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
266
|
-
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
377
|
+
OkaySelfieConfig okaySelfieConfig = OkaySelfieConfig.init(this.getCurrentActivity());
|
|
267
378
|
|
|
268
|
-
|
|
379
|
+
okaySelfieConfig.setTopLabel(new OkaySelfieLabelConfig(
|
|
380
|
+
topLabel.getString("text"),
|
|
381
|
+
Color.parseColor(topLabel.getString("color")),
|
|
382
|
+
topLabel.getInt("size")
|
|
383
|
+
));
|
|
384
|
+
okaySelfieConfig.setBottomFrameColor(Color.parseColor(userConfig.getString("bottomFrameColor")));
|
|
269
385
|
|
|
270
|
-
|
|
271
|
-
topLabel.getString("text"),
|
|
272
|
-
Color.parseColor(topLabel.getString("color")),
|
|
273
|
-
topLabel.getInt("size")
|
|
274
|
-
));
|
|
275
|
-
okaySelfieConfig.setBottomFrameColor(Color.parseColor(userConfig.getString("bottomFrameColor")));
|
|
386
|
+
okaySelfieConfig.setCaptureBtnColor(Color.parseColor(userConfig.getString("captureBtnColor")));
|
|
276
387
|
|
|
277
|
-
|
|
388
|
+
okaySelfieConfig.setSwitchBtnConfig(new OkaySelfieSwichBtnConfig(
|
|
389
|
+
Color.parseColor(switchBtnConfig.getString("color")),
|
|
390
|
+
switchBtnConfig.getBoolean("show")
|
|
391
|
+
));
|
|
278
392
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
393
|
+
okaySelfieConfig.setConfirmBtnConfig(new OkayCamBtnConfig(
|
|
394
|
+
Color.parseColor(confirmBtnConfig.getString("backgroundColor")),
|
|
395
|
+
Color.parseColor(confirmBtnConfig.getString("contentColor"))
|
|
396
|
+
));
|
|
283
397
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
398
|
+
okaySelfieConfig.setRetakeBtnConfig(new OkayCamBtnConfig(
|
|
399
|
+
Color.parseColor(retakeBtnConfig.getString("backgroundColor")),
|
|
400
|
+
Color.parseColor(retakeBtnConfig.getString("contentColor"))
|
|
401
|
+
));
|
|
288
402
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
403
|
+
if (userConfig.getString("defaultCameraFacing").equals("front")) {
|
|
404
|
+
okaySelfieConfig.setDefaultCameraFacing(CameraFacing.FRONT);
|
|
405
|
+
} else if (userConfig.getString("defaultCameraFacing").equals("back")) {
|
|
406
|
+
okaySelfieConfig.setDefaultCameraFacing(CameraFacing.BACK);
|
|
407
|
+
}
|
|
293
408
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
else if (userConfig.getString("defaultCameraFacing").equals("back")) {
|
|
298
|
-
okaySelfieConfig.setDefaultCameraFacing(CameraFacing.BACK);
|
|
299
|
-
}
|
|
409
|
+
if (userConfig.getInt("width") != -1) {
|
|
410
|
+
okaySelfieConfig.setWidth(userConfig.getInt("width"));
|
|
411
|
+
}
|
|
300
412
|
|
|
301
|
-
|
|
302
|
-
okaySelfieConfig.setWidth(userConfig.getInt("width"));
|
|
303
|
-
}
|
|
413
|
+
okaySelfieConfig.setImageQuality((float) userConfig.getDouble("imageQuality"));
|
|
304
414
|
|
|
305
|
-
|
|
415
|
+
OkayCamSelfie.start(this.getCurrentActivity(), LICENSE_KEY, okaySelfieConfig, (success, image, exception) -> {
|
|
306
416
|
|
|
307
|
-
|
|
417
|
+
if (success) {
|
|
418
|
+
|
|
419
|
+
JSONObject results = new JSONObject();
|
|
420
|
+
try {
|
|
421
|
+
results.put("selfieImage", convertImgToBase64(base64, image));
|
|
422
|
+
promise.resolve(results.toString());
|
|
423
|
+
} catch (JSONException e) {
|
|
424
|
+
// TODO Auto-generated catch block
|
|
425
|
+
e.printStackTrace();
|
|
426
|
+
promise.reject(this.getError(e.getMessage()));
|
|
427
|
+
}
|
|
428
|
+
} else {
|
|
429
|
+
promise.reject(this.getError(exception.getMessage()));
|
|
430
|
+
}
|
|
431
|
+
return null;
|
|
432
|
+
});
|
|
433
|
+
}
|
|
308
434
|
|
|
309
|
-
|
|
435
|
+
public String convertImgToBase64(Boolean base64, String image) {
|
|
436
|
+
String result = "file://" + image;
|
|
310
437
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
results.put("selfieImage", convertImgToBase64(base64, image));
|
|
314
|
-
promise.resolve(results.toString());
|
|
315
|
-
} catch (JSONException e) {
|
|
316
|
-
// TODO Auto-generated catch block
|
|
317
|
-
e.printStackTrace();
|
|
318
|
-
promise.reject(this.getError(e.getMessage()));
|
|
438
|
+
if (base64) {
|
|
439
|
+
result = BitmapUtils.INSTANCE.convertToBase64(image);
|
|
319
440
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
promise.reject(this.getError(exception.getMessage()));
|
|
323
|
-
}
|
|
324
|
-
return null;
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
public String convertImgToBase64(Boolean base64, String image) {
|
|
329
|
-
String result = "file://" + image;
|
|
330
|
-
|
|
331
|
-
if (base64) {
|
|
332
|
-
result = BitmapUtils.INSTANCE.convertToBase64(image);
|
|
441
|
+
|
|
442
|
+
return result;
|
|
333
443
|
}
|
|
334
444
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
errorString = "failed";
|
|
445
|
+
private Exception getError(String error) {
|
|
446
|
+
String errorString = "";
|
|
447
|
+
switch (error) {
|
|
448
|
+
case "Invalid license key":
|
|
449
|
+
errorString = "invalid license";
|
|
450
|
+
break;
|
|
451
|
+
case "User refused to grant permission.":
|
|
452
|
+
errorString = "camera permission denied";
|
|
453
|
+
break;
|
|
454
|
+
case "User cancelled the activity.":
|
|
455
|
+
errorString = "cancel";
|
|
456
|
+
break;
|
|
457
|
+
default:
|
|
458
|
+
errorString = "failed";
|
|
459
|
+
}
|
|
460
|
+
return new Exception(errorString);
|
|
352
461
|
}
|
|
353
|
-
return new Exception(errorString);
|
|
354
|
-
}
|
|
355
462
|
}
|