generated from NativeScript/plugin-seed
-
-
Notifications
You must be signed in to change notification settings - Fork 9
/
mlkit-core.ts
81 lines (70 loc) · 2.55 KB
/
mlkit-core.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { Observable, EventData, Page, Dialogs, ImageSource } from '@nativescript/core';
import { DemoSharedMlkitCore } from '@demo/shared';
import { DetectionType, MLKitView, DetectionEvent, detectWithStillImage } from '@nativescript/mlkit-core';
import { BarcodeResult } from '@nativescript/mlkit-barcode-scanning';
import { FaceResult } from '@nativescript/mlkit-face-detection';
import { ImageLabelingResult } from '@nativescript/mlkit-image-labeling';
import { ObjectResult } from '@nativescript/mlkit-object-detection';
import { PoseResult } from '@nativescript/mlkit-pose-detection';
import { TextResult } from '@nativescript/mlkit-text-recognition';
export function navigatingTo(args: EventData) {
const page = <Page>args.object;
page.bindingContext = new DemoModel();
}
export class DemoModel extends DemoSharedMlkitCore {
camera: MLKitView;
detectorType = DetectionType.Barcode;
isPaused = false;
torchOn = false;
onLoaded(args) {
this.camera = args.object;
this.set('isPaused', this.camera.pause);
this.set('torchOn', this.camera.torchOn);
}
onDetection(event: DetectionEvent) {
console.log('onDetection', event.data, event.type);
if (event.type === DetectionType.Barcode) {
const first = event.data[0] as BarcodeResult;
console.log('bounds', first.bounds);
}
}
toggleCamera() {
this.camera.toggleCamera();
}
toggleTorch() {
this.camera.torchOn = !this.camera.torchOn;
this.set('torchOn', this.camera.torchOn);
}
requestPermission() {
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.set('detectorType', 'none');
} else {
this.set('detectorType', value);
}
});
}
togglePause(args) {
this.camera.pause = !this.camera.pause;
this.set('isPaused', this.camera.pause);
}
async processStill(args) {
try {
const src = await ImageSource.fromUrl('https://www.jqueryscript.net/images/jQuery-Plugin-To-Generate-International-Article-Number-Barcode-EAN13.jpg');
console.log(src.android);
const result = await detectWithStillImage(src, {
detectorType: DetectionType.Barcode,
});
console.log('processStill', result.barcode[0]);
} catch (e) {
console.log(e);
}
}
}