NativeScript Camera Plus
一个集所有功能于一身的 NativeScript 相机,可以嵌入到视图中。此插件由 LiveShopper 赞助。
安装
npm install @nstudio/nativescript-camera-plus
注意:- Android 请将以下内容添加到您的 app.gradle 中
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
示例
是的,相机是旋转的,因为它是一个连接到模拟器的网络摄像头,这就是生活的本质

演示
当在真实设备上运行时,演示应用程序效果最佳。您可以从模拟器/模拟器中启动它们,但是相机在 iOS 模拟器上不起作用。如果您启用您的网络摄像头,Android 模拟器将支持相机。
Android 模拟器注意
在模拟器上使用的网络摄像头中的相机可能被侧向旋转(错误)。实际相机输出将正确对准,只是模拟器上的预览显示错误。由于设备上的相机方向正确,与计算机中的网络摄像头相比,此问题不应在实际设备上出现。
属性
名称 |
类型 |
默认值 |
描述 |
debug |
布尔型 |
false |
如果为 true,将在控制台输出日志以帮助调试 Camera Plus 事件。 |
confirmPhotos |
布尔型 |
true |
如果为 true,默认的拍照事件将在保存前显示确认对话框。 |
confirmRetakeText |
字符串 |
'重拍' |
在确认捕获时,将向用户显示此文本以重新拍摄照片。 |
confirmSaveText |
字符串 |
'保存' |
在确认捕获时,将向用户显示此文本以保存照片。 |
saveToGallery |
布尔型 |
true |
如果为 true,默认的拍照事件将保存到设备相册。 |
galleryPickerMode |
字符串 |
'multiple' |
相册/库选择模式。'single' 允许选择一个图像。'multiple' 允许选择多个图像。 |
showFlashIcon |
布尔型 |
true |
如果为 true,默认的闪光灯切换图标/按钮将在 Camera Plus 布局上显示。 |
showToggleIcon |
布尔型 |
true |
如果为 true,默认的前后摄像头切换(前后)图标按钮将在 Camera Plus 布局上显示。 |
showCaptureIcon |
布尔型 |
true |
如果为 true,默认的捕获(拍照)图标/按钮将在 Camera Plus 布局上显示。 |
showGalleryIcon |
布尔型 |
true |
如果为 true,从相册/库中选择图标/按钮将在 Camera Plus 布局上显示。 |
enableVideo |
布尔型 |
false |
如果为 true,CameraPlus 实例可以录制视频,并且视频将在相册中显示。 |
静态属性
注意:这些属性需要在初始化相机之前设置。如果用户希望更改默认值,应在组件构造函数中设置这些值,在他们视图创建组件之前。对于 enableVideo,如果静态属性或组件属性为 true,则为 true。
名称 |
类型 |
描述 |
enableVideo |
布尔型 |
视频支持(默认关闭)。如果它们想在不同视图之间切换照片/相机和视频/相机,可以在使用之前重置它 |
defaultCamera |
CameraTypes |
在启动时正确设置相机。默认 'rear' 。 'front' 或 'rear' |
仅适用于 Android 的属性
名称 |
类型 |
描述 |
flashOnIcon |
字符串 |
当闪光灯开启(启用)时,原生图像按钮的app_resource drawable名称。 |
flashOffIcon |
字符串 |
当闪光灯关闭(禁用)时,原生图像按钮的app_resource drawable名称。 |
toggleCameraIcon |
字符串 |
切换相机按钮的app_resource drawable名称。 |
takePicIcon |
字符串 |
拍照(捕获)按钮的app_resource drawable名称。 |
galleryIcon |
字符串 |
打开相册(图像库)按钮的app_resource drawable名称。 |
autoFocus |
布尔型 |
如果为true,当相机检测到目标变化时,相机将使用连续对焦。 |
仅限iOS属性
名称 |
类型 |
描述 |
doubleTapCameraSwitch |
布尔型 |
启用/禁用双击手势切换相机。(启用) |
跨平台公共方法
方法 |
描述 |
isCameraAvailable() |
如果设备至少有一个相机,则返回true。 |
toggleFlash() |
切换活动相机的闪光灯模式。 |
toggleCamera() |
切换设备上的活动相机。 |
chooseFromLibrary(opts?: IChooseOptions) |
打开设备相册(图像库)以选择图片。 |
takePicture(opts?: ICaptureOptions) |
从CameraPlus中的当前预览中拍照。 |
getFlashMode(): string |
Android:可能的字符串:https://developer.android.com.cn/reference/android/hardware/Camera.Parameters.html#getFlashMode() iOS:'on'或'off'之一 |
record(opts?: IVideoOptions) |
开始录制视频。 |
stop() |
停止视频录制,停止时将发出videoRecordingReadyEvent 事件。 |
仅限Android公共方法
方法 |
描述 |
requestCameraPermissions(explanationText?: string) |
提示用户授予运行时权限以使用设备相机。返回一个Promise. |
hasCameraPermission() |
如果应用程序已被授予访问设备相机的权限,则返回true。 |
requestStoragePermissions(explanationText?: string) |
提示用户授予运行时权限以使用外部存储来保存和从设备相册中打开图片。返回一个Promise. |
hasStoragePermissions() |
如果应用程序已被授予访问设备存储的权限,则返回true。 |
getNumberOfCameras() |
返回设备上的相机数量。 |
hasFlash() |
如果活动相机具有闪光灯模式,则返回true。 |
事件
名称 |
描述 |
errorEvent |
当CameraPlus发出错误时执行。 |
photoCapturedEvent |
拍照时执行。 |
toggleCameraEvent |
切换设备相机时执行。 |
imagesSelectedEvent |
从设备库/相册中选择图片时执行。 |
videoRecordingStartedEvent |
视频开始录制时执行。 |
videoRecordingFinishedEvent |
视频停止录制但尚未处理时执行。 |
videoRecordingReadyEvent |
视频完成处理并准备好使用时执行。 |
confirmScreenShownEvent |
图片确认对话框显示时执行。 |
confirmScreenDismissedEvent |
图片确认对话框通过重拍或保存按钮关闭时执行。 |
选项接口
export interface ICameraOptions {
confirm?: boolean;
saveToGallery?: boolean;
keepAspectRatio?: boolean;
height?: number;
width?: number;
autoSquareCrop?: boolean;
confirmRetakeText?: string;
confirmSaveText?: string;
}
export interface IChooseOptions {
width?: number;
height?: number;
keepAspectRatio?: boolean;
showImages?: boolean;
showVideos?: boolean;
}
export interface IVideoOptions {
quality?: CameraVideoQuality;
confirm?: boolean;
saveToGallery?: boolean;
height?: number;
width?: number;
disableHEVC?: boolean;
androidMaxVideoBitRate?: number;
androidMaxFrameRate?: number;
androidMaxAudioBitRate?: number;
}