NativeScript Camera Plus
一个具有所有功能的 NativeScript 相机,可以嵌入到视图中。本插件由 LiveShopper 赞助。
安装
ns plugin add @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 |
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;
}