@arfuhad/react-native-smart-camera 0.1.0 → 0.1.2
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/CHANGELOG.md +58 -0
- package/README.md +222 -70
- package/android/build/.transforms/e0a0b120a9ccc3a8de4f5784bc36b161/results.bin +1 -0
- package/android/build/.transforms/e0a0b120a9ccc3a8de4f5784bc36b161/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/expo/modules/smartcamera/BuildConfig.java +10 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +7 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/java_res/debug/out/META-INF/arfuhad-react-native-smart-camera_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/classes/expo/modules/smartcamera/BuildConfig.class +0 -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 +7 -0
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +7 -0
- package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +1 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +16 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/arfuhad-react-native-smart-camera_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/DetectedFace.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceBounds.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceContoursData.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceDetectionOptions.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceLandmarksData.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader$loadImage$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector$detectFaces$2$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector$detectFaces$2$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetectorKt$sam$com_google_android_gms_tasks_OnSuccessListener$0.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetectorKt.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/PointData.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$1$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$3$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$4$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$FunctionWithoutArgs$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$FunctionWithoutArgs$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnActivityEntersBackground$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnActivityEntersForeground$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnDestroy$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/WebRTCFrameBridge$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/WebRTCFrameBridge.class +0 -0
- package/android/build.gradle +8 -1
- package/package.json +3 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.2] - 2024-12-24
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Fixed compatibility with `react-native-vision-camera` v4 (`OutputOrientation` type change)
|
|
14
|
+
- Fixed compatibility with `react-native-worklets-core` v1.3+ (`useRunOnJS` hook instead of `runOnJS`)
|
|
15
|
+
- Fixed `expo-modules-core` EventEmitter usage for newer versions
|
|
16
|
+
- Fixed TypeScript config to use `expo-module-scripts/tsconfig.base` instead of deprecated `tsconfig.module`
|
|
17
|
+
- Fixed Expo config plugin to use `withDangerousMod` instead of deprecated `withPodfile`
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Updated example app to Expo SDK 51 and React Native 0.74
|
|
21
|
+
- Updated example app imports to use scoped package name `@arfuhad/react-native-smart-camera`
|
|
22
|
+
|
|
23
|
+
## [0.1.1] - 2024-12-24
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- Added missing CameraX dependencies for Android (`androidx.camera:camera-core`, `camera-camera2`, `camera-lifecycle`, `camera-view`)
|
|
27
|
+
|
|
28
|
+
## [0.1.0] - 2024-12-24
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- Initial release
|
|
32
|
+
- Camera preview via VisionCamera integration
|
|
33
|
+
- Real-time face detection with Google ML Kit
|
|
34
|
+
- Blink detection with configurable sensitivity
|
|
35
|
+
- Native WebRTC bridge for video calling and streaming
|
|
36
|
+
- Expo config plugin for zero-config setup
|
|
37
|
+
- Static image face detection
|
|
38
|
+
- TypeScript support with full type definitions
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
- `SmartCamera` component with face/blink detection
|
|
42
|
+
- `useSmartCamera` hook for camera permissions and device management
|
|
43
|
+
- `useFaceDetection` hook for face detection state
|
|
44
|
+
- `useBlinkDetection` hook for blink counting with debouncing
|
|
45
|
+
- `useSmartCameraWebRTC` hook for WebRTC streaming
|
|
46
|
+
- `detectFacesInImage` function for static image analysis
|
|
47
|
+
- iOS and Android native modules
|
|
48
|
+
|
|
49
|
+
### Supported Platforms
|
|
50
|
+
- iOS (requires Expo Dev Client or Bare Workflow)
|
|
51
|
+
- Android (requires Expo Dev Client or Bare Workflow)
|
|
52
|
+
|
|
53
|
+
[Unreleased]: https://github.com/arfuhad/react-native-smart-camera/compare/v0.1.2...HEAD
|
|
54
|
+
[0.1.2]: https://github.com/arfuhad/react-native-smart-camera/compare/v0.1.1...v0.1.2
|
|
55
|
+
[0.1.1]: https://github.com/arfuhad/react-native-smart-camera/compare/v0.1.0...v0.1.1
|
|
56
|
+
[0.1.0]: https://github.com/arfuhad/react-native-smart-camera/releases/tag/v0.1.0
|
|
57
|
+
|
|
58
|
+
|
package/README.md
CHANGED
|
@@ -1,61 +1,35 @@
|
|
|
1
1
|
# react-native-smart-camera
|
|
2
2
|
|
|
3
|
-
Expo-compatible native module
|
|
3
|
+
An Expo-compatible native module that provides camera preview via VisionCamera, comprehensive face detection using Google ML Kit, blink detection, and a native WebRTC bridge for video calling and streaming.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Requirements
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- 📡 Native WebRTC bridge for video calling and streaming
|
|
11
|
-
- 🔌 Expo config plugin for zero-config setup
|
|
12
|
-
- 📱 Static image face detection
|
|
13
|
-
|
|
14
|
-
## Expo Compatibility
|
|
7
|
+
- Expo SDK ≥ 49
|
|
8
|
+
- Expo Dev Client (required)
|
|
9
|
+
- EAS Build
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
| --------------- | --------- | ---------------------------------- |
|
|
18
|
-
| Expo Managed | ❌ No | Requires native code |
|
|
19
|
-
| Expo Dev Client | ✅ Yes | Recommended for development |
|
|
20
|
-
| Expo Bare | ✅ Yes | Full native control |
|
|
11
|
+
> **Important**: This package does NOT work with Expo Go. You must use Expo Dev Client or Bare Workflow.
|
|
21
12
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
| Expo Workflow | Supported | Why |
|
|
14
|
+
|---------------|-----------|-----|
|
|
15
|
+
| Expo Managed (Go) | ❌ No | WebRTC + VisionCamera need native code |
|
|
16
|
+
| Expo Dev Client | ✅ Yes | Allows custom native modules |
|
|
17
|
+
| Expo Bare | ✅ Yes | Full native control |
|
|
26
18
|
|
|
27
19
|
## Installation
|
|
28
20
|
|
|
29
21
|
```bash
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# Install peer dependencies
|
|
34
|
-
npx expo install react-native-vision-camera react-native-webrtc react-native-worklets-core
|
|
35
|
-
|
|
36
|
-
# Rebuild native code
|
|
37
|
-
npx expo prebuild
|
|
38
|
-
npx expo run:ios
|
|
22
|
+
expo install react-native-smart-camera
|
|
23
|
+
expo prebuild
|
|
24
|
+
expo run:ios
|
|
39
25
|
# or
|
|
40
|
-
|
|
26
|
+
expo run:android
|
|
41
27
|
```
|
|
42
28
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Add to your `app.json` or `app.config.js`:
|
|
29
|
+
Or with EAS Build:
|
|
46
30
|
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
"plugins": [
|
|
50
|
-
[
|
|
51
|
-
"react-native-smart-camera",
|
|
52
|
-
{
|
|
53
|
-
"cameraPermissionText": "Allow camera access for face detection",
|
|
54
|
-
"microphonePermissionText": "Allow microphone for audio streaming"
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
]
|
|
58
|
-
}
|
|
31
|
+
```bash
|
|
32
|
+
eas build --profile development
|
|
59
33
|
```
|
|
60
34
|
|
|
61
35
|
## Usage
|
|
@@ -65,7 +39,7 @@ Add to your `app.json` or `app.config.js`:
|
|
|
65
39
|
```tsx
|
|
66
40
|
import { SmartCamera } from 'react-native-smart-camera';
|
|
67
41
|
|
|
68
|
-
|
|
42
|
+
function App() {
|
|
69
43
|
return (
|
|
70
44
|
<SmartCamera
|
|
71
45
|
camera="front"
|
|
@@ -75,14 +49,18 @@ export default function App() {
|
|
|
75
49
|
}
|
|
76
50
|
```
|
|
77
51
|
|
|
78
|
-
### Face Detection
|
|
52
|
+
### Face Detection with Blink Detection
|
|
79
53
|
|
|
80
54
|
```tsx
|
|
81
|
-
import { SmartCamera
|
|
55
|
+
import { SmartCamera } from 'react-native-smart-camera';
|
|
82
56
|
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
console.log(
|
|
57
|
+
function App() {
|
|
58
|
+
const handleBlink = (event) => {
|
|
59
|
+
console.log('Blink detected!', event);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const handleFaceDetected = (faces) => {
|
|
63
|
+
console.log('Faces:', faces);
|
|
86
64
|
};
|
|
87
65
|
|
|
88
66
|
return (
|
|
@@ -94,34 +72,120 @@ export default function App() {
|
|
|
94
72
|
landmarkMode: 'all',
|
|
95
73
|
classificationMode: 'all',
|
|
96
74
|
}}
|
|
97
|
-
|
|
75
|
+
blinkDetection
|
|
76
|
+
onBlinkDetected={handleBlink}
|
|
77
|
+
onFaceDetected={handleFaceDetected}
|
|
98
78
|
style={{ flex: 1 }}
|
|
99
79
|
/>
|
|
100
80
|
);
|
|
101
81
|
}
|
|
102
82
|
```
|
|
103
83
|
|
|
104
|
-
###
|
|
84
|
+
### WebRTC Video Calling
|
|
105
85
|
|
|
106
86
|
```tsx
|
|
107
|
-
import { SmartCamera
|
|
87
|
+
import { SmartCamera } from 'react-native-smart-camera';
|
|
88
|
+
import { RTCPeerConnection } from 'react-native-webrtc';
|
|
108
89
|
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
console.log('Blink detected!', event);
|
|
112
|
-
};
|
|
90
|
+
function VideoCall() {
|
|
91
|
+
const peerConnection = new RTCPeerConnection(config);
|
|
113
92
|
|
|
114
93
|
return (
|
|
115
94
|
<SmartCamera
|
|
116
95
|
camera="front"
|
|
117
|
-
|
|
118
|
-
|
|
96
|
+
webrtc={{
|
|
97
|
+
enabled: true,
|
|
98
|
+
peerConnection,
|
|
99
|
+
mode: 'call',
|
|
100
|
+
}}
|
|
119
101
|
style={{ flex: 1 }}
|
|
120
102
|
/>
|
|
121
103
|
);
|
|
122
104
|
}
|
|
123
105
|
```
|
|
124
106
|
|
|
107
|
+
## API Reference
|
|
108
|
+
|
|
109
|
+
### SmartCamera Props
|
|
110
|
+
|
|
111
|
+
```tsx
|
|
112
|
+
interface SmartCameraProps {
|
|
113
|
+
// Camera settings
|
|
114
|
+
camera?: 'front' | 'back';
|
|
115
|
+
fps?: number;
|
|
116
|
+
style?: ViewStyle;
|
|
117
|
+
|
|
118
|
+
// Face Detection Options
|
|
119
|
+
faceDetection?: FaceDetectionConfig;
|
|
120
|
+
|
|
121
|
+
// Blink Detection
|
|
122
|
+
blinkDetection?: boolean;
|
|
123
|
+
onBlinkDetected?: (event: BlinkEvent) => void;
|
|
124
|
+
|
|
125
|
+
// Face Detection Callback
|
|
126
|
+
onFaceDetected?: (faces: Face[]) => void;
|
|
127
|
+
|
|
128
|
+
// WebRTC Configuration
|
|
129
|
+
webrtc?: WebRTCConfig;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Face Detection Options
|
|
134
|
+
|
|
135
|
+
#### Common Options (Frame Processor and Static Images)
|
|
136
|
+
|
|
137
|
+
| Option | Description | Default | Options |
|
|
138
|
+
|--------|-------------|---------|---------|
|
|
139
|
+
| `performanceMode` | Favor speed or accuracy when detecting faces | `'fast'` | `'fast'`, `'accurate'` |
|
|
140
|
+
| `landmarkMode` | Whether to identify facial landmarks: eyes, ears, nose, cheeks, mouth | `'none'` | `'none'`, `'all'` |
|
|
141
|
+
| `contourMode` | Whether to detect contours of facial features. Contours are detected for only the most prominent face in an image | `'none'` | `'none'`, `'all'` |
|
|
142
|
+
| `classificationMode` | Whether to classify faces into categories such as 'smiling' and 'eyes open' | `'none'` | `'none'`, `'all'` |
|
|
143
|
+
| `minFaceSize` | Sets the smallest desired face size, expressed as the ratio of the width of the head to width of the image | `0.15` | `number` |
|
|
144
|
+
| `trackingEnabled` | Whether to assign faces an ID to track faces across images. Note: Don't enable with contourMode for best performance | `false` | `boolean` |
|
|
145
|
+
|
|
146
|
+
#### Frame Processor Options
|
|
147
|
+
|
|
148
|
+
| Option | Description | Default | Options |
|
|
149
|
+
|--------|-------------|---------|---------|
|
|
150
|
+
| `cameraFacing` | Current active camera | `'front'` | `'front'`, `'back'` |
|
|
151
|
+
| `autoMode` | Handle auto scale (face bounds, contour, landmarks) and rotation on native side. If disabled, results are relative to frame coordinates, not screen/preview. Disable when using Skia Frame Processor | `false` | `boolean` |
|
|
152
|
+
| `windowWidth` | Required when using `autoMode`. Screen width for coordinate scaling | `1.0` | `number` |
|
|
153
|
+
| `windowHeight` | Required when using `autoMode`. Screen height for coordinate scaling | `1.0` | `number` |
|
|
154
|
+
|
|
155
|
+
#### Static Images
|
|
156
|
+
|
|
157
|
+
| Option | Description | Default | Options |
|
|
158
|
+
|--------|-------------|---------|---------|
|
|
159
|
+
| `image` | Image source for static face detection | - | `number`, `string`, `{ uri: string }` |
|
|
160
|
+
|
|
161
|
+
### Types
|
|
162
|
+
|
|
163
|
+
```tsx
|
|
164
|
+
interface BlinkEvent {
|
|
165
|
+
timestamp: number;
|
|
166
|
+
leftEyeOpen: number; // 0.0 - 1.0
|
|
167
|
+
rightEyeOpen: number; // 0.0 - 1.0
|
|
168
|
+
isBlink: boolean;
|
|
169
|
+
faceId?: number;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
interface Face {
|
|
173
|
+
bounds: { x: number; y: number; width: number; height: number };
|
|
174
|
+
landmarks?: FaceLandmarks;
|
|
175
|
+
contours?: FaceContours;
|
|
176
|
+
smilingProbability?: number;
|
|
177
|
+
leftEyeOpenProbability?: number;
|
|
178
|
+
rightEyeOpenProbability?: number;
|
|
179
|
+
trackingId?: number;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
interface WebRTCConfig {
|
|
183
|
+
enabled: boolean;
|
|
184
|
+
peerConnection?: RTCPeerConnection;
|
|
185
|
+
mode?: 'call' | 'stream';
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
125
189
|
### Static Image Detection
|
|
126
190
|
|
|
127
191
|
```tsx
|
|
@@ -134,21 +198,109 @@ const faces = await detectFacesInImage({
|
|
|
134
198
|
});
|
|
135
199
|
```
|
|
136
200
|
|
|
137
|
-
##
|
|
201
|
+
## Hooks
|
|
138
202
|
|
|
139
|
-
|
|
140
|
-
| ------------------ | ----------------------------------------------- | --------- | --------------------- |
|
|
141
|
-
| `performanceMode` | Speed vs accuracy trade-off | `'fast'` | `'fast'`, `'accurate'`|
|
|
142
|
-
| `landmarkMode` | Detect facial landmarks | `'none'` | `'none'`, `'all'` |
|
|
143
|
-
| `contourMode` | Detect facial contours | `'none'` | `'none'`, `'all'` |
|
|
144
|
-
| `classificationMode` | Classify smiling/eyes open | `'none'` | `'none'`, `'all'` |
|
|
145
|
-
| `minFaceSize` | Minimum face size ratio | `0.15` | `number` |
|
|
146
|
-
| `trackingEnabled` | Track faces across frames | `false` | `boolean` |
|
|
203
|
+
### useSmartCamera
|
|
147
204
|
|
|
148
|
-
|
|
205
|
+
```tsx
|
|
206
|
+
import { useSmartCamera } from 'react-native-smart-camera';
|
|
207
|
+
|
|
208
|
+
const {
|
|
209
|
+
hasPermission,
|
|
210
|
+
requestPermission,
|
|
211
|
+
device,
|
|
212
|
+
switchCamera,
|
|
213
|
+
} = useSmartCamera();
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### useFaceDetection
|
|
217
|
+
|
|
218
|
+
```tsx
|
|
219
|
+
import { useFaceDetection } from 'react-native-smart-camera';
|
|
220
|
+
|
|
221
|
+
const { faces, isDetecting } = useFaceDetection({
|
|
222
|
+
performanceMode: 'fast',
|
|
223
|
+
classificationMode: 'all',
|
|
224
|
+
});
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### useBlinkDetection
|
|
228
|
+
|
|
229
|
+
```tsx
|
|
230
|
+
import { useBlinkDetection } from 'react-native-smart-camera';
|
|
231
|
+
|
|
232
|
+
const { lastBlink, blinkCount } = useBlinkDetection({
|
|
233
|
+
debounceMs: 300,
|
|
234
|
+
});
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### useSmartCameraWebRTC
|
|
238
|
+
|
|
239
|
+
```tsx
|
|
240
|
+
import { useSmartCameraWebRTC } from 'react-native-smart-camera';
|
|
241
|
+
|
|
242
|
+
const {
|
|
243
|
+
videoTrack,
|
|
244
|
+
startStreaming,
|
|
245
|
+
stopStreaming,
|
|
246
|
+
switchCamera,
|
|
247
|
+
} = useSmartCameraWebRTC({
|
|
248
|
+
peerConnection,
|
|
249
|
+
mode: 'call',
|
|
250
|
+
});
|
|
251
|
+
```
|
|
149
252
|
|
|
150
|
-
|
|
253
|
+
## Expo Config Plugin
|
|
254
|
+
|
|
255
|
+
This package includes an Expo config plugin that automatically configures permissions and native dependencies.
|
|
256
|
+
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"expo": {
|
|
260
|
+
"plugins": ["react-native-smart-camera"]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
The plugin automatically adds:
|
|
266
|
+
- Camera permission (iOS & Android)
|
|
267
|
+
- Microphone permission (iOS & Android)
|
|
268
|
+
- Required iOS frameworks
|
|
269
|
+
- Android ProGuard rules for ML Kit
|
|
270
|
+
|
|
271
|
+
## Architecture
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
Expo App
|
|
275
|
+
├── SmartCamera (JS Component)
|
|
276
|
+
├── VisionCamera (native camera)
|
|
277
|
+
├── Frame Processor (worklet)
|
|
278
|
+
│ └── ML Kit Face Detection
|
|
279
|
+
├── Native WebRTC Bridge
|
|
280
|
+
│ ├── iOS (Swift)
|
|
281
|
+
│ └── Android (Kotlin)
|
|
282
|
+
└── react-native-webrtc
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Peer Dependencies
|
|
286
|
+
|
|
287
|
+
This package requires the following peer dependencies:
|
|
288
|
+
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"react-native-vision-camera": ">=3.0.0",
|
|
292
|
+
"react-native-webrtc": ">=118.0.0",
|
|
293
|
+
"react-native-worklets-core": ">=1.0.0"
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Limitations
|
|
298
|
+
|
|
299
|
+
- ❌ Not supported in Expo Go
|
|
300
|
+
- ❌ Requires Expo Dev Client or Bare Workflow
|
|
301
|
+
- ❌ Native build required (via `expo run:ios/android` or EAS Build)
|
|
151
302
|
|
|
152
303
|
## License
|
|
153
304
|
|
|
154
305
|
MIT
|
|
306
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
o/classes
|
|
Binary file
|
package/android/build/generated/source/buildConfig/debug/expo/modules/smartcamera/BuildConfig.java
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automatically generated file. DO NOT MODIFY
|
|
3
|
+
*/
|
|
4
|
+
package expo.modules.smartcamera;
|
|
5
|
+
|
|
6
|
+
public final class BuildConfig {
|
|
7
|
+
public static final boolean DEBUG = Boolean.parseBoolean("true");
|
|
8
|
+
public static final String LIBRARY_PACKAGE_NAME = "expo.modules.smartcamera";
|
|
9
|
+
public static final String BUILD_TYPE = "debug";
|
|
10
|
+
}
|
package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"artifactType": {
|
|
4
|
+
"type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
|
|
5
|
+
"kind": "Directory"
|
|
6
|
+
},
|
|
7
|
+
"applicationId": "expo.modules.smartcamera",
|
|
8
|
+
"variantName": "debug",
|
|
9
|
+
"elements": [
|
|
10
|
+
{
|
|
11
|
+
"type": "SINGLE",
|
|
12
|
+
"filters": [],
|
|
13
|
+
"attributes": [],
|
|
14
|
+
"outputFile": "AndroidManifest.xml"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"elementType": "File"
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#Wed Dec 24 04:54:56 BDT 2025
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>
|
|
Binary file
|
package/android/build/intermediates/javac/debug/classes/expo/modules/smartcamera/BuildConfig.class
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
expo.modules.smartcamera
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i
ADDED
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len
ADDED
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i
ADDED
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin
ADDED
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Merging decision tree log ---
|
|
2
|
+
manifest
|
|
3
|
+
ADDED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml:1:1-2:12
|
|
4
|
+
INJECTED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml:1:1-2:12
|
|
5
|
+
package
|
|
6
|
+
INJECTED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml
|
|
7
|
+
xmlns:android
|
|
8
|
+
ADDED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml:1:11-69
|
|
9
|
+
uses-sdk
|
|
10
|
+
INJECTED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml reason: use-sdk injection requested
|
|
11
|
+
INJECTED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml
|
|
12
|
+
INJECTED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml
|
|
13
|
+
android:targetSdkVersion
|
|
14
|
+
INJECTED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml
|
|
15
|
+
android:minSdkVersion
|
|
16
|
+
INJECTED from /Users/arfuhad/Development/personal/rn-expo/rn-expo-package/react-native-smart-camera/android/src/main/AndroidManifest.xml
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceContoursData.class
ADDED
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceDetectionOptions.class
ADDED
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceLandmarksData.class
ADDED
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader$Companion.class
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector.class
ADDED
|
Binary file
|
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetectorKt.class
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule.class
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/WebRTCFrameBridge.class
ADDED
|
Binary file
|
package/android/build.gradle
CHANGED
|
@@ -3,7 +3,7 @@ apply plugin: 'kotlin-android'
|
|
|
3
3
|
apply plugin: 'maven-publish'
|
|
4
4
|
|
|
5
5
|
group = 'expo.modules.smartcamera'
|
|
6
|
-
version = '0.1.
|
|
6
|
+
version = '0.1.2'
|
|
7
7
|
|
|
8
8
|
buildscript {
|
|
9
9
|
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
|
|
@@ -82,6 +82,13 @@ dependencies {
|
|
|
82
82
|
|
|
83
83
|
// Google ML Kit Face Detection
|
|
84
84
|
implementation 'com.google.mlkit:face-detection:16.1.6'
|
|
85
|
+
|
|
86
|
+
// CameraX dependencies
|
|
87
|
+
def camerax_version = "1.3.0"
|
|
88
|
+
implementation "androidx.camera:camera-core:$camerax_version"
|
|
89
|
+
implementation "androidx.camera:camera-camera2:$camerax_version"
|
|
90
|
+
implementation "androidx.camera:camera-lifecycle:$camerax_version"
|
|
91
|
+
implementation "androidx.camera:camera-view:$camerax_version"
|
|
85
92
|
}
|
|
86
93
|
|
|
87
94
|
def safeExtGet(prop, fallback) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arfuhad/react-native-smart-camera",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Expo-compatible native module for camera preview, face detection, blink detection, and WebRTC streaming",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
"app.plugin.js",
|
|
35
35
|
"expo-module.config.json",
|
|
36
36
|
"README.md",
|
|
37
|
-
"ARCHITECTURE.md"
|
|
37
|
+
"ARCHITECTURE.md",
|
|
38
|
+
"CHANGELOG.md"
|
|
38
39
|
],
|
|
39
40
|
"repository": {
|
|
40
41
|
"type": "git",
|