@capacitor-community/camera-preview 3.0.0 → 3.1.0
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 +2 -2
- package/android/src/androidTest/java/com/getcapacitor/android/ExampleInstrumentedTest.java +3 -3
- package/android/src/main/java/com/ahm/capacitor/camera/preview/CameraActivity.java +835 -799
- package/android/src/main/java/com/ahm/capacitor/camera/preview/CameraPreview.java +184 -173
- package/android/src/main/java/com/ahm/capacitor/camera/preview/CustomSurfaceView.java +12 -14
- package/android/src/main/java/com/ahm/capacitor/camera/preview/CustomTextureView.java +16 -18
- package/android/src/main/java/com/ahm/capacitor/camera/preview/Preview.java +327 -323
- package/android/src/main/java/com/ahm/capacitor/camera/preview/TapGestureDetector.java +15 -14
- package/android/src/test/java/com/getcapacitor/ExampleUnitTest.java +4 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/web.d.ts +2 -2
- package/dist/esm/web.js +24 -23
- package/dist/esm/web.js.map +1 -1
- package/ios/Plugin/CameraController.swift +106 -129
- package/ios/Plugin/Plugin.swift +76 -90
- package/ios/PluginTests/PluginTests.swift +8 -8
- package/package.json +27 -2
|
@@ -3,21 +3,22 @@ package com.ahm.capacitor.camera.preview;
|
|
|
3
3
|
import android.view.GestureDetector;
|
|
4
4
|
import android.view.MotionEvent;
|
|
5
5
|
|
|
6
|
-
class TapGestureDetector extends GestureDetector.SimpleOnGestureListener{
|
|
7
|
-
private final String TAG = "TapGestureDetector";
|
|
6
|
+
class TapGestureDetector extends GestureDetector.SimpleOnGestureListener {
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
public boolean onDown(MotionEvent e) {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
8
|
+
private final String TAG = "TapGestureDetector";
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
@Override
|
|
11
|
+
public boolean onDown(MotionEvent e) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
@Override
|
|
16
|
+
public boolean onSingleTapUp(MotionEvent e) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@Override
|
|
21
|
+
public boolean onSingleTapConfirmed(MotionEvent e) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
23
24
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
package com.getcapacitor;
|
|
2
2
|
|
|
3
|
-
import org.junit.Test;
|
|
4
|
-
|
|
5
3
|
import static org.junit.Assert.*;
|
|
6
4
|
|
|
5
|
+
import org.junit.Test;
|
|
6
|
+
|
|
7
7
|
/**
|
|
8
8
|
* Example local unit test, which will execute on the development machine (host).
|
|
9
9
|
*
|
|
10
10
|
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
|
11
11
|
*/
|
|
12
12
|
public class ExampleUnitTest {
|
|
13
|
+
|
|
13
14
|
@Test
|
|
14
15
|
public void addition_isCorrect() throws Exception {
|
|
15
16
|
assertEquals(4, 2 + 2);
|
|
16
17
|
}
|
|
17
|
-
}
|
|
18
|
+
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { registerPlugin } from '@capacitor/core';
|
|
2
2
|
const CameraPreview = registerPlugin('CameraPreview', {
|
|
3
|
-
web: () => import('./web').then(m => new m.CameraPreviewWeb()),
|
|
3
|
+
web: () => import('./web').then((m) => new m.CameraPreviewWeb()),
|
|
4
4
|
});
|
|
5
5
|
export * from './definitions';
|
|
6
6
|
export { CameraPreview };
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,aAAa,GAAG,cAAc,CAAsB,eAAe,EAAE;IACzE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;CACjE,CAAC,CAAC;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { WebPlugin } from
|
|
2
|
-
import { CameraPreviewOptions, CameraPreviewPictureOptions, CameraPreviewPlugin, CameraPreviewFlashMode, CameraSampleOptions, CameraOpacityOptions } from
|
|
1
|
+
import { WebPlugin } from '@capacitor/core';
|
|
2
|
+
import { CameraPreviewOptions, CameraPreviewPictureOptions, CameraPreviewPlugin, CameraPreviewFlashMode, CameraSampleOptions, CameraOpacityOptions } from './definitions';
|
|
3
3
|
export declare class CameraPreviewWeb extends WebPlugin implements CameraPreviewPlugin {
|
|
4
4
|
/**
|
|
5
5
|
* track which camera is used based on start options
|
package/dist/esm/web.js
CHANGED
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
import { WebPlugin } from
|
|
1
|
+
import { WebPlugin } from '@capacitor/core';
|
|
2
2
|
export class CameraPreviewWeb extends WebPlugin {
|
|
3
3
|
constructor() {
|
|
4
4
|
super({
|
|
5
|
-
name:
|
|
6
|
-
platforms: [
|
|
5
|
+
name: 'CameraPreview',
|
|
6
|
+
platforms: ['web'],
|
|
7
7
|
});
|
|
8
8
|
}
|
|
9
9
|
async start(options) {
|
|
10
10
|
return new Promise(async (resolve, reject) => {
|
|
11
|
-
await navigator.mediaDevices
|
|
11
|
+
await navigator.mediaDevices
|
|
12
|
+
.getUserMedia({
|
|
12
13
|
audio: !options.disableAudio,
|
|
13
|
-
video: true
|
|
14
|
-
})
|
|
14
|
+
video: true,
|
|
15
|
+
})
|
|
16
|
+
.then((stream) => {
|
|
15
17
|
// Stop any existing stream so we can request media with different constraints based on user input
|
|
16
18
|
stream.getTracks().forEach((track) => track.stop());
|
|
17
|
-
})
|
|
19
|
+
})
|
|
20
|
+
.catch((error) => {
|
|
18
21
|
reject(error);
|
|
19
22
|
});
|
|
20
|
-
const video = document.getElementById(
|
|
23
|
+
const video = document.getElementById('video');
|
|
21
24
|
const parent = document.getElementById(options.parent);
|
|
22
25
|
if (!video) {
|
|
23
|
-
const videoElement = document.createElement(
|
|
24
|
-
videoElement.id =
|
|
25
|
-
videoElement.setAttribute(
|
|
26
|
+
const videoElement = document.createElement('video');
|
|
27
|
+
videoElement.id = 'video';
|
|
28
|
+
videoElement.setAttribute('class', options.className || '');
|
|
26
29
|
// Don't flip video feed if camera is rear facing
|
|
27
30
|
if (options.position !== 'rear') {
|
|
28
|
-
videoElement.setAttribute(
|
|
31
|
+
videoElement.setAttribute('style', '-webkit-transform: scaleX(-1); transform: scaleX(-1);');
|
|
29
32
|
}
|
|
30
33
|
const userAgent = navigator.userAgent.toLowerCase();
|
|
31
34
|
const isSafari = userAgent.includes('safari') && !userAgent.includes('chrome');
|
|
@@ -60,12 +63,12 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
60
63
|
}
|
|
61
64
|
}
|
|
62
65
|
else {
|
|
63
|
-
reject({ message:
|
|
66
|
+
reject({ message: 'camera already started' });
|
|
64
67
|
}
|
|
65
68
|
});
|
|
66
69
|
}
|
|
67
70
|
async stop() {
|
|
68
|
-
const video = document.getElementById(
|
|
71
|
+
const video = document.getElementById('video');
|
|
69
72
|
if (video) {
|
|
70
73
|
video.pause();
|
|
71
74
|
const st = video.srcObject;
|
|
@@ -79,10 +82,10 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
79
82
|
}
|
|
80
83
|
async capture(_options) {
|
|
81
84
|
return new Promise((resolve, _) => {
|
|
82
|
-
const video = document.getElementById(
|
|
83
|
-
const canvas = document.createElement(
|
|
85
|
+
const video = document.getElementById('video');
|
|
86
|
+
const canvas = document.createElement('canvas');
|
|
84
87
|
// video.width = video.offsetWidth;
|
|
85
|
-
const context = canvas.getContext(
|
|
88
|
+
const context = canvas.getContext('2d');
|
|
86
89
|
canvas.width = video.videoWidth;
|
|
87
90
|
canvas.height = video.videoHeight;
|
|
88
91
|
// flip horizontally back camera isn't used
|
|
@@ -92,9 +95,7 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
92
95
|
}
|
|
93
96
|
context.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
|
|
94
97
|
resolve({
|
|
95
|
-
value: canvas
|
|
96
|
-
.toDataURL("image/png")
|
|
97
|
-
.replace("data:image/png;base64,", ""),
|
|
98
|
+
value: canvas.toDataURL('image/png').replace('data:image/png;base64,', ''),
|
|
98
99
|
});
|
|
99
100
|
});
|
|
100
101
|
}
|
|
@@ -111,14 +112,14 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
111
112
|
throw new Error('flip not supported under the web platform');
|
|
112
113
|
}
|
|
113
114
|
async setOpacity(_options) {
|
|
114
|
-
const video = document.getElementById(
|
|
115
|
+
const video = document.getElementById('video');
|
|
115
116
|
if (!!video && !!_options['opacity']) {
|
|
116
|
-
video.style.setProperty(
|
|
117
|
+
video.style.setProperty('opacity', _options['opacity'].toString());
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
}
|
|
120
121
|
const CameraPreview = new CameraPreviewWeb();
|
|
121
122
|
export { CameraPreview };
|
|
122
|
-
import { registerWebPlugin } from
|
|
123
|
+
import { registerWebPlugin } from '@capacitor/core';
|
|
123
124
|
registerWebPlugin(CameraPreview);
|
|
124
125
|
//# sourceMappingURL=web.js.map
|
package/dist/esm/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU5C,MAAM,OAAO,gBAAiB,SAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
|