原生动照相机插件
为 NativeScript 提供的先进、可嵌入的相机。
npm i --save nativescript-camera-plus-poc

NativeScript Camera Plus

一个具有所有功能的 NativeScript 相机,可以嵌入到视图中。此插件由 LiveShopper 赞助

LiveShopper Logo

Action Build npm npm stars forks license


安装

ns plugin add @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 如果为真,将在控制台输出日志以帮助调试 Camera Plus 事件。
confirmPhotos 布尔值 true 如果为真,默认的拍照事件将在保存前显示确认对话框。
confirmRetakeText 字符串 '重拍' 在确认捕获时,此文本将显示给用户以重新拍照。
confirmSaveText 字符串 '保存' 在确认捕获时,此文本将显示给用户以保存照片。
saveToGallery 布尔值 true 如果为真,默认的拍照事件将保存到设备相册。
galleryPickerMode 字符串 'multiple' 相册/库选择模式。'single' 允许选择一张图片。'multiple' 允许多张图片。
showFlashIcon 布尔值 true 如果为真,默认的闪光灯切换图标/按钮将在 Camera Plus 布局上显示。
showToggleIcon 布尔值 true 如果为真,默认的相机切换(前后)图标按钮将在 Camera Plus 布局上显示。
showCaptureIcon 布尔值 true 如果为真,默认的捕获(拍照)图标/按钮将在 Camera Plus 布局上显示。
showGalleryIcon 布尔值 true 如果为真,从相册/库选择的图标/按钮将在 Camera Plus 布局上显示。
enableVideo 布尔值 false 如果为真,CameraPlus 实例可以录制视频,视频将在相册中显示。

静态属性

注意:这些属性需要在初始化相机之前设置。用户应在组件构造函数中设置这些属性,如果它们希望在创建视图之前更改默认值。对于 enableVideo,如果静态属性或组件属性为真,则此属性为真。

名称 类型 描述
enableVideo 布尔值 视频支持(默认关闭)。如果想要在不同视图间来回切换照片/相机和视频/相机,可以在使用前重置它
defaultCamera CameraTypes 在启动时正确设置相机。默认 'rear''front''rear'

Android 仅属性

名称 类型 描述
flashOnIcon 字符串 当闪光灯开启(启用)时,用于本地图像按钮的应用资源 drawable 名称。
flashOffIcon 字符串 当闪光灯关闭(禁用)时,用于本地图像按钮的应用资源 drawable 名称。
toggleCameraIcon 字符串 应用资源图标的名称,用于切换相机按钮。
takePicIcon 字符串 拍照按钮的应用资源图标名称。
galleryIcon 字符串 打开相册(图像库)按钮的应用资源图标名称。
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'(仅限iOS)
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;
}