百度官方并没有提供FaceSDK离线活体检测的模拟器版本,也就是说集成了百度FaceSDK的项目将无法使用模拟器运行,在适配界面/系统版本带来了不便。
我们可以通过 TARGET_IPHONE_SIMULATOR 宏能区分当前运行设备是模拟器还是真机。
在使用 FaceSDKManager,IDLFaceLivenessManager,IDLFaceDetectionManager 的地方加上宏判断既可确保在模拟器编译项目时不编译以上内容。
- (IBAction)detectAction:(UIButton *)sender {
#ifdef TARGET_IPHONE_SIMULATOR
NSLog(@"模拟器不支持FaceSDK");
#else
if ([[FaceSDKManager sharedInstance] canWork]) {
NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
[[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
}
DetectionViewController* dvc = [[DetectionViewController alloc] init];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:dvc];
navi.navigationBarHidden = true;
[self presentViewController:navi animated:YES completion:nil];
#endif
}
FaceBaseViewController.m
- (void)viewDidLoad {
...
#if !TARGET_IPHONE_SIMULATOR
// 监听重新返回APP
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppWillResignAction) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
// 设置最小检测人脸阈值
[[FaceSDKManager sharedInstance] setMinFaceSize:200];
// 设置截取人脸图片大小
[[FaceSDKManager sharedInstance] setCropFaceSizeWidth:400];
// 设置人脸遮挡阀值
[[FaceSDKManager sharedInstance] setOccluThreshold:0.5];
// 设置亮度阀值
[[FaceSDKManager sharedInstance] setIllumThreshold:40];
// 设置图像模糊阀值
[[FaceSDKManager sharedInstance] setBlurThreshold:0.7];
// 设置头部姿态角度
[[FaceSDKManager sharedInstance] setEulurAngleThrPitch:10 yaw:10 roll:10];
// 设置是否进行人脸图片质量检测
[[FaceSDKManager sharedInstance] setIsCheckQuality:YES];
// 设置超时时间
[[FaceSDKManager sharedInstance] setConditionTimeout:10];
// 设置人脸检测精度阀值
[[FaceSDKManager sharedInstance] setNotFaceThreshold:0.6];
// 设置照片采集张数
[[FaceSDKManager sharedInstance] setMaxCropImageNum:1];
#endif
...
}
DetectionViewController.m、LivenessViewController.m
所有用到 IDLFaceDetectionManager、IDLFaceLivenessManager 的地方都需要添加
#if TARGET_IPHONE_SIMULATOR
// 模拟器
#else
// 真机
#endif