@codesthings/nativescript-camera-plus
NativeScript 的高级嵌入式相机。
npm i --save @codesthings/nativescript-camera-plus

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 如果为 true,则会在控制台输出日志以帮助调试 Camera Plus 事件。
confirmPhotos 布尔值 true 如果为 true,则在保存之前将显示确认对话框。
confirmRetakeText 字符串 '重拍' 在确认捕获时,将向用户显示此文本以重拍照片。
confirmSaveText 字符串 '保存' 在确认捕获时,将向用户显示此文本以保存照片。
saveToGallery 布尔值 true true
galleryPickerMode 字符串 'multiple' 图库/库选择模式。'single' 允许选择一张图片。'multiple' 允许多张图片。
showFlashIcon 布尔值 true true
showToggleIcon 布尔值 true true
showCaptureIcon 布尔值 true true
showGalleryIcon 布尔值 true true
enableVideo 布尔值 false 如果为 true,则 CameraPlus 实例可以录制视频,并且视频会显示在图库中。

静态属性

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

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

仅限 Android 属性

名称 类型 描述
flashOnIcon 字符串 当闪光灯开启(启用)时,用于本地图像按钮的应用程序资源 drawable 名称。
flashOffIcon 字符串 当闪光灯关闭(禁用)时,用于本地图像按钮的应用程序资源 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://android-docs.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;
}