@matty0005/nativescript-camera-plus
为 NativeScript 提供的高级、可嵌入的摄像头。
npm i --save @matty0005/nativescript-camera-plus

NativeScript Camera Plus

这是一个 NativeScript 摄像头,具有所有功能,可以嵌入到视图中。此插件由 LiveShopper 赞助。

LiveShopper Logo

Action Build npm npm stars forks license


安装

npm install @nstudio/nativescript-camera-plus

注意: Android 请将以下内容添加到您的 app.gradle 中

android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

示例

是的,摄像头已旋转,因为它是一个连接到模拟器的摄像头,这就是生活的样子

Camera Plus

演示

当在真实设备上运行时,演示应用程序效果最佳。您可以从模拟器/模拟器启动它们,但是摄像头在 iOS 模拟器上不起作用。如果启用了您的摄像头,Android 模拟器将可以使用摄像头。

Android 模拟器说明

在模拟器上使用的您的网络摄像头中的摄像头可能被旋转到侧面(不正确)。实际的摄像头输出将正确对齐,只是模拟器上的预览显示不正确。由于设备上的摄像头方向正确,而计算机中的网络摄像头方向不正确,因此这个问题在真实设备上不应该出现。

属性

名称 类型 默认值 描述
debug 布尔值 false 如果为 true,将在控制台输出日志以帮助调试 Camera Plus 事件。
confirmPhotos 布尔值 true 如果为 true,默认拍照事件在保存之前将显示确认对话框。
confirmRetakeText 字符串 '重拍' 在确认捕获时,此文本将向用户显示以重新拍摄照片。
confirmSaveText 字符串 '保存' 在确认捕获时,此文本将向用户显示以保存照片。
saveToGallery 布尔值 true If true the default take picture event will save to device gallery.
galleryPickerMode 字符串 'multiple' 图库/库选择模式。 'single' 允许选择一个图像。 'multiple' 允许多个图像。
showFlashIcon 布尔值 true If true the default flash toggle icon/button will show on the Camera Plus layout.
showToggleIcon 布尔值 true If true the default camera toggle (front/back) icon button will show on the Camera Plus layout.
showCaptureIcon 布尔值 true If true the default capture (take picture) icon/button will show on the Camera Plus layout.
showGalleryIcon 布尔值 true If true the choose from gallery/library icon/button will show on the Camera Plus layout.
enableVideo 布尔值 false If true the CameraPlus instance can record video and videos are shown in the gallery.

静态属性

注意:这些属性需要在初始化摄像头之前设置。用户应该在组件构造函数中设置这些属性,在视图创建组件之前,如果希望更改默认值。对于 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;
}