Latest 0.0.3
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

  1. 验证设备码和使用者的身份,此方法必须调用成功后才能进行后续操作
    func setup(deviceNumber: String, secret: String,  sucessBlock: @escaping () -> Void, failureBlock: @escaping (_ errCode: String, _ errMsg: String) -> Void)
  2. 验证拍照参数,使用拍照功能前必须调用此方法,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)
  3. 上传图片功能,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

  1. 使用蓝牙前先准备相关资源
    func setup()
  2. 开始搜索附近设备
    func startScan()
  3. 亮第几个灯[0…4], value是灯光亮度[0…255];熄灯直接调用lightupAt(0, value: 0)
    func lightupAt(_ index: Int, value: Int)

MCCamera

  1. 使用相机前先准备相关资源
    func setup()
  2. 自动拍照前要对焦一次,对焦成功后走代理方法didAdjustFocus
    func focusAt(point: CGPoint, inView view: UIView)
  3. 在第几个灯光[0…4]下配置相机参数,iPad取iPad的标识,如iPad6,11
    func configCamera(forLight light: Int, iPad: String = "iPad")
  4. 重置相机参数
    func resetCameraConfig()
  5. 拍照,拍照成功后走代理方法didGenerateImage
    func capture()
  6. 屏幕翻转,isUpsideDowntrue为颠倒竖屏,false为正常竖屏
    func setVideoOrientation(isUpsideDown: Bool)

MCBLEDelegate

  1. 没有打开蓝牙回调方法
    func requestOpen()
  2. 连接蓝牙成功回调方法
    func didConnect()
  3. 连接蓝牙失败回调方法
    func didDisconnect()

MCCameraDelegate

  1. 相机权限被拒回调方法
    func requestOpenCamera()
  2. 对焦成功回调方法
    func didAdjustFocus()
  3. 拍照成功回调方法
    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

  1. 上传分析成功回调方法
    func uploadSuccess(shootId: String)
  2. 上传分析失败回调方法
    func uploadFailed(errCode: String, errMsg: String)

MCAnalysisResultVCDelegate

  1. 点击报告按钮回调方法
    func clickReportBtn(btn: UIButton, shootid: String)

Latest podspec

{
    "name": "MCCameraX",
    "version": "0.0.3",
    "summary": "u901au8fc7u84ddu7259u63a7u5236u706fu5149u8bbeu5907uff0cu5728u4e0du540cu706fu5149u4e0bu8c03u6574u4e0du540ciPadu76f8u673au53c2u6570u5e76u8fdbu884cu62cdu7167uff0cu4e0au4f20u7167u7247u5230u7f8eu6d4bu670du52a1u5668u8fdbu884cu5206u6790",
    "description": "TODO: Add long description of the pod here.",
    "homepage": "https://github.com/GeekRRK/MCCameraX",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "GeekRRK": "669672615[email protected]"
    },
    "source": {
        "git": "https://github.com/GeekRRK/MCCameraX.git",
        "tag": "0.0.3"
    },
    "platforms": {
        "ios": "10.0"
    },
    "vendored_frameworks": "MCCameraX/Framework/*.framework"
}

Pin It on Pinterest

Share This