From 485aa801f01cbaa94a32b32b9443773850a212cd Mon Sep 17 00:00:00 2001 From: Osei Fortune Date: Tue, 23 Nov 2021 18:52:48 -0400 Subject: [PATCH 01/90] chore: update readme --- packages/mlkit-core/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/mlkit-core/README.md b/packages/mlkit-core/README.md index cd6b75c..7379648 100644 --- a/packages/mlkit-core/README.md +++ b/packages/mlkit-core/README.md @@ -41,7 +41,7 @@ import { MLKitModule } from '@nativescript/mlkit-core/angular'; ``` @@ -54,12 +54,12 @@ import MLKit from '@nativescript/mlkit-core/vue' Vue.use(MLKit) ``` -```xml +```html +/> ``` ### Optional modules From a39ac7ea758806467e19d2821a1120c9e60cd420 Mon Sep 17 00:00:00 2001 From: Osei Fortune Date: Mon, 29 Nov 2021 21:10:28 -0400 Subject: [PATCH 02/90] feat: pause & torch --- apps/demo/src/plugin-demos/mlkit-core.ts | 7 +++- apps/demo/src/plugin-demos/mlkit-core.xml | 6 ++- packages/mlkit-core/common.ts | 18 +++++++++ packages/mlkit-core/index.android.ts | 25 ++++++++++++- packages/mlkit-core/index.ios.ts | 11 +++++- .../platforms/android/include.gradle | 24 +++++++++++- .../platforms/ios/src/TNSMLKitHelper.swift | 37 ++++++++++++++++++- packages/mlkit-core/typings/android.d.ts | 8 ++++ 8 files changed, 128 insertions(+), 8 deletions(-) diff --git a/apps/demo/src/plugin-demos/mlkit-core.ts b/apps/demo/src/plugin-demos/mlkit-core.ts index 9e20c43..1c18dd1 100644 --- a/apps/demo/src/plugin-demos/mlkit-core.ts +++ b/apps/demo/src/plugin-demos/mlkit-core.ts @@ -15,7 +15,7 @@ export function navigatingTo(args: EventData) { export class DemoModel extends DemoSharedMlkitCore { camera: MLKitView; detectorType = "all"; - + isPaused = false; onLoaded(args) { this.camera = args.object; } @@ -53,5 +53,10 @@ export class DemoModel extends DemoSharedMlkitCore { } }) } + + togglePause(args) { + this.camera.pause = !this.camera.pause; + this.set('isPaused', this.camera.pause); + } } diff --git a/apps/demo/src/plugin-demos/mlkit-core.xml b/apps/demo/src/plugin-demos/mlkit-core.xml index bd63e52..b237999 100644 --- a/apps/demo/src/plugin-demos/mlkit-core.xml +++ b/apps/demo/src/plugin-demos/mlkit-core.xml @@ -3,11 +3,13 @@ - - + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts new file mode 100644 index 0000000..110e2a0 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts @@ -0,0 +1,19 @@ +import { Component, NgZone } from '@angular/core'; +import { DemoSharedMlkitSelfieSegmentation } from '@demo/shared'; +import { } from '@nativescript/mlkit-selfie-segmentation'; + +@Component({ + selector: 'demo-mlkit-selfie-segmentation', + templateUrl: 'mlkit-selfie-segmentation.component.html', +}) +export class MlkitSelfieSegmentationComponent { + + demoShared: DemoSharedMlkitSelfieSegmentation; + + constructor(private _ngZone: NgZone) {} + + ngOnInit() { + this.demoShared = new DemoSharedMlkitSelfieSegmentation(); + } + +} \ No newline at end of file diff --git a/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.module.ts b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.module.ts new file mode 100644 index 0000000..dbcc65e --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.module.ts @@ -0,0 +1,10 @@ +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; +import { MlkitSelfieSegmentationComponent } from './mlkit-selfie-segmentation.component'; + +@NgModule({ + imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: MlkitSelfieSegmentationComponent }])], + declarations: [MlkitSelfieSegmentationComponent], + schemas: [ NO_ERRORS_SCHEMA] +}) +export class MlkitSelfieSegmentationModule {} diff --git a/apps/demo/package.json b/apps/demo/package.json index fb7666d..feac5a8 100644 --- a/apps/demo/package.json +++ b/apps/demo/package.json @@ -12,10 +12,11 @@ "@nativescript/mlkit-image-labeling": "file:../../packages/mlkit-image-labeling", "@nativescript/mlkit-object-detection": "file:../../packages/mlkit-object-detection", "@nativescript/mlkit-pose-detection": "file:../../packages/mlkit-pose-detection", + "@nativescript/mlkit-selfie-segmentation": "file:../../packages/mlkit-selfie-segmentation", "@nativescript/mlkit-text-recognition": "file:../../packages/mlkit-text-recognition" }, "devDependencies": { - "@nativescript/android": "~8.1.1", + "@nativescript/android": "8.1.1", "@nativescript/ios": "~8.1.0" } } diff --git a/apps/demo/src/main-page.xml b/apps/demo/src/main-page.xml index 38021d5..bba2b91 100644 --- a/apps/demo/src/main-page.xml +++ b/apps/demo/src/main-page.xml @@ -14,6 +14,7 @@ - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts index 9dd6f9a..552752f 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts @@ -1,19 +1,83 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitCore } from '@demo/shared'; -import { } from '@nativescript/mlkit-core'; +import { Dialogs, ImageSource } from '@nativescript/core'; +import { DetectionEvent, DetectionType, detectWithStillImage, MLKitView } from '@nativescript/mlkit-core'; @Component({ - selector: 'demo-mlkit-core', - templateUrl: 'mlkit-core.component.html', + selector: 'demo-mlkit-core', + templateUrl: 'mlkit-core.component.html', }) export class MlkitCoreComponent { - + + camera: MLKitView; + detectorType = DetectionType.All; + isPaused = true; + torchOn = true; demoShared: DemoSharedMlkitCore; - - constructor(private _ngZone: NgZone) {} + + constructor(private _ngZone: NgZone) { } ngOnInit() { this.demoShared = new DemoSharedMlkitCore(); } + onLoaded(args) { + this.camera = args.object; + } + + onDetection(event: DetectionEvent) { + console.log('onDetection', event.data, event.type); + } + + toggleCamera(args) { + this.camera.toggleCamera(); + } + + requestPermission(args) { + this.camera.requestCameraPermission(); + } + + changeType(args) { + Dialogs.action('Change Detector Type', 'Cancel', [ + 'all', + 'barcode', + 'digitalInk (unsupport atm)', + 'face', + 'image', + 'object', + 'pose', + 'text', + 'none' + ]).then(value => { + if (value === 'Cancel') { return } + if (value.indexOf('digitalInk') > -1) { + Dialogs.alert('digitalInk is currently unsupported'); + this.detectorType = DetectionType.None; + } else { + this.detectorType = value as any; + } + }) + } + + togglePause(args) { + this.camera.pause = !this.camera.pause; + this.isPaused = this.camera.pause; + } + + toggleTorch(args) { + this.camera.torchOn = !this.camera.torchOn; + this.torchOn = this.camera.torchOn; + } + + async processStill(args) { + try { + const src = await ImageSource.fromUrl('https://www.jqueryscript.net/images/jQuery-Plugin-To-Generate-International-Article-Number-Barcode-EAN13.jpg'); + const result = await detectWithStillImage(src, { + detectorType: DetectionType.Barcode + }); + console.log('processStill', result.barcode[0]); + } catch (e) { + console.log(e); + } + } } \ No newline at end of file diff --git a/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts index c065655..b909a9f 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitDigitalInkRecognition } from '@demo/shared'; -import { } from '@nativescript/mlkit-digital-ink-recognition'; @Component({ selector: 'demo-mlkit-digital-ink-recognition', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts index 4ff6154..142b48a 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitFaceDetection } from '@demo/shared'; -import { } from '@nativescript/mlkit-face-detection'; @Component({ selector: 'demo-mlkit-face-detection', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts index a6bc368..c7104da 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitImageLabeling } from '@demo/shared'; -import { } from '@nativescript/mlkit-image-labeling'; @Component({ selector: 'demo-mlkit-image-labeling', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts index 49199df..155af82 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitObjectDetection } from '@demo/shared'; -import { } from '@nativescript/mlkit-object-detection'; @Component({ selector: 'demo-mlkit-object-detection', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts index aaeef32..f81c0b3 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitPoseDetection } from '@demo/shared'; -import { } from '@nativescript/mlkit-pose-detection'; @Component({ selector: 'demo-mlkit-pose-detection', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts index 110e2a0..9587a51 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitSelfieSegmentation } from '@demo/shared'; -import { } from '@nativescript/mlkit-selfie-segmentation'; @Component({ selector: 'demo-mlkit-selfie-segmentation', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts index e432847..d8b7453 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitTextRecognition } from '@demo/shared'; -import { } from '@nativescript/mlkit-text-recognition'; @Component({ selector: 'demo-mlkit-text-recognition', diff --git a/apps/demo/src/plugin-demos/mlkit-core.xml b/apps/demo/src/plugin-demos/mlkit-core.xml index 3fecf54..8066dbb 100644 --- a/apps/demo/src/plugin-demos/mlkit-core.xml +++ b/apps/demo/src/plugin-demos/mlkit-core.xml @@ -4,7 +4,7 @@ - + - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.html b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.html new file mode 100644 index 0000000..28a1691 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.ts new file mode 100644 index 0000000..b1c21b1 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.ts @@ -0,0 +1,17 @@ +import { Component, NgZone } from '@angular/core'; +import { DemoSharedMlkitCustomObjectDetection } from '@demo/shared'; +import {} from '@nativescript/mlkit-custom-object-detection'; + +@Component({ + selector: 'demo-mlkit-custom-object-detection', + templateUrl: 'mlkit-custom-object-detection.component.html', +}) +export class MlkitCustomObjectDetectionComponent { + demoShared: DemoSharedMlkitCustomObjectDetection; + + constructor(private _ngZone: NgZone) {} + + ngOnInit() { + this.demoShared = new DemoSharedMlkitCustomObjectDetection(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.module.ts b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.module.ts new file mode 100644 index 0000000..955dddf --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.module.ts @@ -0,0 +1,10 @@ +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; +import { MlkitCustomObjectDetectionComponent } from './mlkit-custom-object-detection.component'; + +@NgModule({ + imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: MlkitCustomObjectDetectionComponent }])], + declarations: [MlkitCustomObjectDetectionComponent], + schemas: [NO_ERRORS_SCHEMA], +}) +export class MlkitCustomObjectDetectionModule {} diff --git a/apps/demo-angular/tsconfig.json b/apps/demo-angular/tsconfig.json index 4c9dfbc..b6e2648 100644 --- a/apps/demo-angular/tsconfig.json +++ b/apps/demo-angular/tsconfig.json @@ -7,6 +7,7 @@ "@nativescript/mlkit-text-recognition": ["packages/mlkit-text-recognition/index.ts"], "@nativescript/mlkit-core": ["packages/mlkit-core/index.d.ts"], "@nativescript/mlkit-core/angular": ["packages/mlkit-core/angular/index.ts"], + "@nativescript/mlkit-custom-object-detection": ["../../packages/mlkit-custom-object-detection/index.d.ts"], "@nativescript/mlkit-barcode-scanning": ["packages/mlkit-barcode-scanning/index.ts"], "@nativescript/mlkit-face-detection": ["packages/mlkit-face-detection/index.ts"], "@nativescript/mlkit-image-labeling": ["packages/mlkit-image-labeling/index.ts"], diff --git a/apps/demo/package.json b/apps/demo/package.json index 8ab9e5e..3d34644 100644 --- a/apps/demo/package.json +++ b/apps/demo/package.json @@ -13,7 +13,8 @@ "@nativescript/mlkit-object-detection": "file:../../packages/mlkit-object-detection", "@nativescript/mlkit-pose-detection": "file:../../packages/mlkit-pose-detection", "@nativescript/mlkit-selfie-segmentation": "file:../../packages/mlkit-selfie-segmentation", - "@nativescript/mlkit-text-recognition": "file:../../packages/mlkit-text-recognition" + "@nativescript/mlkit-text-recognition": "file:../../packages/mlkit-text-recognition", + "@nativescript/mlkit-custom-object-detection": "file:../../packages/mlkit-custom-object-detection" }, "devDependencies": { "@nativescript/android": "8.8.0-alpha.8", diff --git a/apps/demo/references.d.ts b/apps/demo/references.d.ts index 22bac92..5ed0bb2 100644 --- a/apps/demo/references.d.ts +++ b/apps/demo/references.d.ts @@ -1 +1,2 @@ /// +/// diff --git a/apps/demo/src/main-page.xml b/apps/demo/src/main-page.xml index bba2b91..797d99d 100644 --- a/apps/demo/src/main-page.xml +++ b/apps/demo/src/main-page.xml @@ -15,6 +15,7 @@