Skip to content

Commit c9592b9

Browse files
authored
feat(camera-plus): android fixes and new tap to focus and pinch to zoom options (#122)
1 parent 1c06db7 commit c9592b9

File tree

6 files changed

+92
-3
lines changed

6 files changed

+92
-3
lines changed

packages/nativescript-camera-plus/common.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,18 @@ export abstract class CameraPlusBase extends ContentView implements CameraPlusDe
114114
@GetSetProperty()
115115
public pictureSize: string = '0x0';
116116

117+
/**
118+
* *ANDROID ONLY* Enables or disables tap to focus
119+
*/
120+
@GetSetProperty()
121+
public tapToFocus: boolean;
122+
123+
/**
124+
* Enables or disables pinch to zoom
125+
*/
126+
@GetSetProperty()
127+
public pinchToZoom: boolean;
128+
117129
/**
118130
* @param ratio string
119131
* @returns returns an array of supported picture sizes supported by the current camera

packages/nativescript-camera-plus/index.android.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,26 @@ export class CameraPlus extends CameraPlusBase {
147147
}
148148
}
149149

150+
// @ts-ignore
151+
public get pinchToZoom() {
152+
return this._camera?.getEnablePinchZoom() ?? false;
153+
}
154+
public set pinchToZoom(value: boolean) {
155+
if (this._camera) {
156+
this._camera.setEnablePinchZoom(value);
157+
}
158+
}
159+
160+
// @ts-ignore
161+
public get tapToFocus() {
162+
return this._camera?.getEnableTapToFocus() ?? false;
163+
}
164+
public set tapToFocus(value: boolean) {
165+
if (this._camera) {
166+
this._camera.setEnableTapToFocus(value);
167+
}
168+
}
169+
150170
// @ts-ignore
151171
set whiteBalance(value: WhiteBalance | string) {
152172
if (this._camera) {

packages/nativescript-camera-plus/index.d.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,16 @@ export declare class CameraPlus extends ContentView {
185185
*/
186186
autoFocus: boolean;
187187

188+
/**
189+
* *ANDROID ONLY* Enables or disables tap to focus
190+
*/
191+
public tapToFocus: boolean;
192+
193+
/**
194+
* Enables or disables pinch to zoom
195+
*/
196+
public pinchToZoom: boolean;
197+
188198
/**
189199
* Toggles the device camera (front/back).
190200
*/

packages/nativescript-camera-plus/index.ios.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,26 @@ export class CameraPlus extends CameraPlusBase {
793793
this._cropByPreview = value;
794794
}
795795

796+
// @ts-ignore
797+
public get pinchToZoom() {
798+
return (this._swifty as SwiftyCamViewController)?.pinchToZoom ?? false;
799+
}
800+
public set pinchToZoom(value: boolean) {
801+
if (this._swifty) {
802+
(this._swifty as SwiftyCamViewController).pinchToZoom = value;
803+
}
804+
}
805+
806+
// @ts-ignore
807+
public get tapToFocus() {
808+
return (this._swifty as SwiftyCamViewController)?.tapToFocus ?? false;
809+
}
810+
public set tapToFocus(value: boolean) {
811+
if (this._swifty) {
812+
(this._swifty as SwiftyCamViewController).tapToFocus = value;
813+
}
814+
}
815+
796816
_updatePhotoQuality() {
797817
if (this._swifty) {
798818
switch (this._pictureQuality) {

packages/nativescript-camera-plus/platforms/android/include.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ allprojects {
77

88
dependencies {
99
implementation 'androidx.multidex:multidex:2.0.1'
10-
implementation('io.github.triniwiz:fancycamera:3.0.0-alpha.41'){
10+
implementation('io.github.triniwiz:fancycamera:3.0.8'){
1111
transitive = true
1212
}
1313
}

packages/nativescript-camera-plus/typings/android.d.ts

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/// <reference path="android-declarations.d.ts"/>
2+
13
declare module io {
24
export module github {
35
export module triniwiz {
@@ -88,6 +90,7 @@ declare module io {
8890
public setPictureSize(param0: string): void;
8991
public getPosition(): io.github.triniwiz.fancycamera.CameraPosition;
9092
public getFlashMode(): io.github.triniwiz.fancycamera.CameraFlashMode;
93+
public setZoomRatio(param0: number): void;
9194
public getMaxVideoBitrate(): number;
9295
public setFlashMode(param0: io.github.triniwiz.fancycamera.CameraFlashMode): void;
9396
public getCamera(): globalAndroid.hardware.Camera;
@@ -100,8 +103,10 @@ declare module io {
100103
public getAvailablePictureSizes(param0: string): androidNative.Array<io.github.triniwiz.fancycamera.Size>;
101104
public setAutoFocus(param0: boolean): void;
102105
public setDisplayRatio(param0: string): void;
106+
public getEnableTapToFocus(): boolean;
103107
public getEnablePinchZoom(): boolean;
104108
public toggleCamera(): void;
109+
public setEnableTapToFocus(param0: boolean): void;
105110
public constructor(param0: globalAndroid.content.Context, param1: globalAndroid.util.AttributeSet, param2: number);
106111
public stopRecording(): void;
107112
public getPause(): boolean;
@@ -110,6 +115,7 @@ declare module io {
110115
public setDetectorType(param0: io.github.triniwiz.fancycamera.DetectorType): void;
111116
public setMaxAudioBitRate(param0: number): void;
112117
public getDb(): number;
118+
public getZoomRatio(): number;
113119
}
114120
export module Camera {
115121
export class WhenMappings {
@@ -130,6 +136,7 @@ declare module io {
130136
public getDisplayRatio(): string;
131137
public cameraRecording(): boolean;
132138
public setPause(param0: boolean): void;
139+
public getMinZoomRatio(): number;
133140
public getRetrieveLatestImage(): boolean;
134141
public getAllowExifRotation(): boolean;
135142
public setEnablePinchZoom(param0: boolean): void;
@@ -170,30 +177,38 @@ declare module io {
170177
public setRetrieveLatestImage(param0: boolean): void;
171178
public setPictureSize(param0: string): void;
172179
public getPosition(): io.github.triniwiz.fancycamera.CameraPosition;
180+
public getMaxZoomRatio(): number;
173181
public setDb(param0: number): void;
174182
public getFlashMode(): io.github.triniwiz.fancycamera.CameraFlashMode;
183+
public setZoomRatio(param0: number): void;
175184
public getMaxVideoBitrate(): number;
176185
public setFlashMode(param0: io.github.triniwiz.fancycamera.CameraFlashMode): void;
177186
public getDetectorType(): io.github.triniwiz.fancycamera.DetectorType;
187+
public setStoredZoomRatio(param0: number): void;
178188
public getMaxVideoFrameRate(): number;
179189
public takePhoto(): void;
180190
public getPreviewSurface(): any;
181191
public getAmplitude(): number;
182192
public getZoom(): number;
183193
public getAvailablePictureSizes(param0: string): androidNative.Array<io.github.triniwiz.fancycamera.Size>;
184194
public setAutoFocus(param0: boolean): void;
195+
public getStoredZoom(): number;
185196
public setDisplayRatio(param0: string): void;
197+
public getEnableTapToFocus(): boolean;
186198
public getEnablePinchZoom(): boolean;
199+
public setStoredZoom(param0: number): void;
187200
public toggleCamera(): void;
201+
public setEnableTapToFocus(param0: boolean): void;
188202
public constructor(param0: globalAndroid.content.Context, param1: globalAndroid.util.AttributeSet, param2: number);
189203
public stopRecording(): void;
190204
public getPause(): boolean;
191205
public hasFlash(): boolean;
192206
public constructor(param0: globalAndroid.content.Context);
193207
public setDetectorType(param0: io.github.triniwiz.fancycamera.DetectorType): void;
194208
public setMaxAudioBitRate(param0: number): void;
195-
public getRecorderQuality$fancycamera_release(param0: io.github.triniwiz.fancycamera.Quality): androidx.camera.video.Quality;
209+
public getStoredZoomRatio(): number;
196210
public getDb(): number;
211+
public getZoomRatio(): number;
197212
}
198213
export module Camera2 {
199214
export class WhenMappings {
@@ -279,6 +294,7 @@ declare module io {
279294
public setAutoFocus(param0: boolean): void;
280295
public convertToExifDateTime$fancycamera_release(param0: number): string;
281296
public setOnFacesDetectedListener$fancycamera_release(param0: io.github.triniwiz.fancycamera.ImageAnalysisCallback): void;
297+
public getEnableTapToFocus(): boolean;
282298
public setProcessEveryNthFrame(param0: number): void;
283299
public getEnablePinchZoom(): boolean;
284300
public setImageLabelingOptions(param0: any): void;
@@ -350,6 +366,7 @@ declare module io {
350366
public setEnableAudio(param0: boolean): void;
351367
public setImageLabelingOptions$fancycamera_release(param0: any): void;
352368
public getFlashMode(): io.github.triniwiz.fancycamera.CameraFlashMode;
369+
public setZoomRatio(param0: number): void;
353370
public convertFromExifDateTime$fancycamera_release(param0: string): java.util.Date;
354371
public hasPermission(): boolean;
355372
public setOnSelfieSegmentationListener(param0: io.github.triniwiz.fancycamera.ImageAnalysisCallback): void;
@@ -360,6 +377,7 @@ declare module io {
360377
public setDisplayRatio(param0: string): void;
361378
public requestStoragePermission(): void;
362379
public toggleCamera(): void;
380+
public setEnableTapToFocus(param0: boolean): void;
363381
public constructor(param0: globalAndroid.content.Context, param1: globalAndroid.util.AttributeSet, param2: number);
364382
public getPause(): boolean;
365383
public setOnPoseDetectedListener(param0: io.github.triniwiz.fancycamera.ImageAnalysisCallback): void;
@@ -370,6 +388,7 @@ declare module io {
370388
public getCurrentOrientation(): number;
371389
public setOnFacesDetectedListener(param0: io.github.triniwiz.fancycamera.ImageAnalysisCallback): void;
372390
public getSelfieSegmentationOptions$fancycamera_release(): any;
391+
public getZoomRatio(): number;
373392
}
374393
export module CameraBase {
375394
export class Companion {
@@ -561,13 +580,16 @@ declare module io {
561580
public static Selfie: io.github.triniwiz.fancycamera.DetectorType;
562581
public static None: io.github.triniwiz.fancycamera.DetectorType;
563582
public toString(): string;
583+
public static fromName(param0: string): io.github.triniwiz.fancycamera.DetectorType;
564584
public static valueOf(param0: string): io.github.triniwiz.fancycamera.DetectorType;
565585
public static values(): androidNative.Array<io.github.triniwiz.fancycamera.DetectorType>;
586+
public static fromInt(param0: number): io.github.triniwiz.fancycamera.DetectorType;
566587
}
567588
export module DetectorType {
568589
export class Companion {
569590
public static class: java.lang.Class<io.github.triniwiz.fancycamera.DetectorType.Companion>;
570591
public fromInt(param0: number): io.github.triniwiz.fancycamera.DetectorType;
592+
public fromName(param0: string): io.github.triniwiz.fancycamera.DetectorType;
571593
}
572594
}
573595
}
@@ -611,7 +633,7 @@ declare module io {
611633
export module github {
612634
export module triniwiz {
613635
export module fancycamera {
614-
export class FancyCamera {
636+
export class FancyCamera extends globalAndroid.view.View {
615637
public static class: java.lang.Class<io.github.triniwiz.fancycamera.FancyCamera>;
616638
public setFaceDetectionOptions(param0: any): void;
617639
public setPause(param0: boolean): void;
@@ -639,6 +661,7 @@ declare module io {
639661
public setRetrieveLatestImage(param0: boolean): void;
640662
public getPosition(): io.github.triniwiz.fancycamera.CameraPosition;
641663
public setSelfieSegmentationOptions(param0: any): void;
664+
public getProcessEveryNthFrame(): number;
642665
public getDuration(): number;
643666
public requestAudioPermission(): void;
644667
public hasAudioPermission(): boolean;
@@ -651,6 +674,8 @@ declare module io {
651674
public takePhoto(): void;
652675
public getAvailablePictureSizes(param0: string): androidNative.Array<io.github.triniwiz.fancycamera.Size>;
653676
public setAutoFocus(param0: boolean): void;
677+
public getEnableTapToFocus(): boolean;
678+
public setProcessEveryNthFrame(param0: number): void;
654679
public getEnablePinchZoom(): boolean;
655680
public setImageLabelingOptions(param0: any): void;
656681
public stopRecording(): void;
@@ -664,6 +689,7 @@ declare module io {
664689
public setEnableAudioLevels(param0: boolean): void;
665690
public setBarcodeScannerOptions(param0: any): void;
666691
public static setForceV1(param0: boolean): void;
692+
public setDetectorWithName(param0: string): void;
667693
public getRetrieveLatestImage(): boolean;
668694
public getCameraOrientation(): io.github.triniwiz.fancycamera.CameraOrientation;
669695
public setEnablePinchZoom(param0: boolean): void;
@@ -706,6 +732,7 @@ declare module io {
706732
public requestStoragePermission(): void;
707733
public setRatio(param0: string): void;
708734
public toggleCamera(): void;
735+
public setEnableTapToFocus(param0: boolean): void;
709736
public getPause(): boolean;
710737
public setOnPoseDetectedListener(param0: io.github.triniwiz.fancycamera.ImageAnalysisCallback): void;
711738
public getPreviewView(): any;

0 commit comments

Comments
 (0)