Latest | 0.0.5 |
---|---|
Homepage | https://github.com/GeekRRK/MCCameraX |
License | MIT |
Platforms | ios 10.0 |
Authors |
工程示例
下载此工程后打开Example目录中的MCCameraX.xcworkspace,在真机上运行就能看到Demo示例,SDK调用代码都在ViewController里
SDK的编译环境和目标架构
- Xcode10.2.1
- Swift5.0
- iOS10+
- arm64, x86_64
安装
修改Podfile如下:
platform :ios, '10.0'
target 'XXX' do
use_frameworks!
pod 'MCCameraX'
end
执行pod install即可
SDK详解
业务简介
iPad通过蓝牙控制硬件灯光设备,在5种不同灯光(日光、交叉、平行、UV、伍德)环境下,用iPad自带的相机分别拍摄不同的人脸照片,上传拍摄的照片到美测服务器进行分析,分析结束后美测服务器把结果传到第三方(集成使用美测SDK的公司)服务器上
iOS蓝牙相机SDK只提供控件硬件灯光设备的接口、拍摄照片的接口、上传图片到美测服务器的接口;第三方使用这些接口自己实现UI及交互,第三方负责提供接收分析结果的接口并存储结果,后续下载图片和展示图片数据等业务需第三方自己实现
SDK概览
SDK包含功能层SDK(MCCamera)和UI层SDK(MCCameraUI)
MCCamera包含1个网络接口类,2个功能类和2个相关代理:
- 验证接口:MCApi
- 蓝牙功能:MCBLE(相关代理:MCBLEDelegate)
- 相机功能:MCCamera(相关代理:MCCameraDelegate)
MCCameraUI包含1个全局配置类,2个ViewController和2个相关代理:
- UI全局配置类:MCUIGlobalConfig
- 拍照交互界面:MCShootVC(相关代理:MCShootVCDelegate)
- 分析结果交互界面:MCAnalysisResultVC(相关代理:MCAnalysisResultVCDelegate)
功能层SDK(通用)
MCAPI
- 验证设备码和使用者的身份,此方法必须调用成功后才能进行后续操作
func setup(deviceNumber: String, secret: String, sucessBlock: @escaping () -> Void, failureBlock: @escaping (_ errCode: String, _ errMsg: String) -> Void)
- 验证拍照参数,使用拍照功能前必须调用此方法,userParams必须有这些参数:
["name": "Al", "phone": "18511111111", "sex": "0", "year": "1991", "month": "11", "day": "08", "age": "27", "extra": "第三方自定义", "unionid": "第三方用户唯一id"]
func setupBeforeShoot(userParams: [String: String], sucessBlock: @escaping () -> Void, failureBlock: @escaping (_ errCode: String, _ errMsg: String) -> Void)
- 上传图片功能,datas是图片Data格式的数组,图片顺序为自动拍摄的顺序:[日光、交叉、平行、UV、伍德];fraction是上传图片的进度,图片上传100%不代表此接口调用结束,上传100%后美测服务器会分析照片,这个过程没有进度,所以需要等待服务器返回后在successBlock中处理,shootid是分析结果的唯一ID
func upload(datas: [Data], progressBlock: @escaping (_ fraction: Double ) -> Void, successBlock: @escaping (_ shootid: String) -> Void, failureBlock: @escaping (_ errCode: String, _ errMsg: String) -> Void)
MCBLE
- 使用蓝牙前先准备相关资源
func setup()
- 开始搜索附近设备
func startScan()
- 亮第几个灯[0…4], value是灯光亮度[0…255];熄灯直接调用
lightupAt(0, value: 0)
func lightupAt(_ index: Int, value: Int)
MCCamera
- 使用相机前先准备相关资源
func setup(successBlock: @escaping () -> Void, failureBlock: @escaping () -> Void) {
- 自动拍照前要对焦一次,对焦成功后走代理方法didAdjustFocus
func focusAt(point: CGPoint, inView view: UIView)
- 在第几个灯光[0…4]下配置相机参数,iPad取iPad的标识,如iPad6,11
func configCamera(forLight light: Int, iPad: String = "iPad")
- 重置相机参数
func resetCameraConfig()
- 拍照,拍照成功后走代理方法didGenerateImage
func capture()
- 屏幕翻转,isUpsideDown为true为颠倒竖屏,false为正常竖屏
func setVideoOrientation(isUpsideDown: Bool)
MCBLEDelegate
- 没有打开蓝牙回调方法
func requestOpenBLE()
- 连接蓝牙成功回调方法
func didConnect()
- 连接蓝牙失败回调方法
func didDisconnect()
MCCameraDelegate
- 相机权限被拒回调方法
func requestOpenCamera()
- 对焦成功回调方法
func didAdjustFocus()
- 拍照成功回调方法
func didGenerateImage(image: UIImage)
UI层SDK(特殊定制)
MCUIGlobalConfig
UI全局配置类,mc_color_1(交互色),mc_color_2(半透明主色,主色即为OEM自己App的主色调)
如果想替换图标,到MCCameraUI.framework里直接替换原有图标即可,但图标名字要保持不变
MCShootVC
拍照交互界面,直接初始化并设置代理使用
MCAnalysisResultVC
分析结果展示交互界面,直接初始化并设置代理使用;先设置MCApi.analysisListApi(OEM自己的分析结果列表接口)和MCApi.analysisApi(OEM自己的单个分析结果接口)
MCShootVCDelegate
- 上传分析成功回调方法
func uploadSuccess(shootId: String)
- 上传分析失败回调方法
func uploadFailed(errCode: String, errMsg: String)
MCAnalysisResultVCDelegate
- 点击报告按钮回调方法
func clickReportBtn(btn: UIButton, shootid: String)
Latest podspec
{ "name": "MCCameraX", "version": "0.0.5", "summary": "u901au8fc7u84ddu7259u63a7u5236u706fu5149u8bbeu5907uff0cu5728u4e0du540cu706fu5149u4e0bu8c03u6574u4e0du540ciPadu76f8u673au53c2u6570u5e76u8fdbu884cu62cdu7167uff0cu4e0au4f20u7167u7247u5230u7f8eu6d4bu670du52a1u5668u8fdbu884cu5206u6790", "description": "TODO: Add long description of the pod here.", "homepage": "https://github.com/GeekRRK/MCCameraX", "license": { "type": "MIT", "file": "LICENSE" }, "authors": { "GeekRRK": "[email protected]" }, "source": { "git": "https://github.com/GeekRRK/MCCameraX.git", "tag": "0.0.5" }, "platforms": { "ios": "10.0" }, "vendored_frameworks": "MCCameraX/Framework/*.framework" }
Sat, 01 Jun 2019 10:16:11 +0000