BDFaceLivingConfigViewController.m 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. //
  2. // LivingConfigViewController.m
  3. // FaceSDKSample_IOS
  4. //
  5. // Created by 阿凡树 on 2017/5/23.
  6. // Copyright © 2017年 Baidu. All rights reserved.
  7. //
  8. #import "BDFaceLivingConfigViewController.h"
  9. #import "BDFaceLivingConfigModel.h"
  10. #import "IDLFaceSDK/IDLFaceSDK.h"
  11. #import "BDFaceLogoView.h"
  12. #import "BDFaceSelectConfigController.h"
  13. #import "UIColor+BDFaceColorUtils.h"
  14. #import "BDFaceToastView.h"
  15. #import "BDFaceAdjustParamsFileManager.h"
  16. #define SoundSwitch @"SoundMode"
  17. #define LiveDetect @"LiveMode"
  18. #define ByOrder @"ByOrder"
  19. #define ScreenWidth [UIScreen mainScreen].bounds.size.width
  20. #define ScreenHeight [UIScreen mainScreen].bounds.size.height
  21. @interface BDFaceLivingConfigViewController ()
  22. @property (strong, nonatomic) UISwitch *voiceSwitch;
  23. @property (strong, nonatomic) UIImageView *warningView;
  24. @property (strong, nonatomic) UILabel *waringLabel;
  25. @property (strong, nonatomic) UIView *liveView;
  26. @property (assign, nonatomic) NSInteger totalSelected;
  27. @property (assign, nonatomic) NSInteger currentSelectedCount;
  28. @property (strong, nonatomic) UILabel *stateLabel;
  29. @end
  30. @implementation BDFaceLivingConfigViewController{
  31. }
  32. - (instancetype)init
  33. {
  34. self = [super init];
  35. if (self) {
  36. self.totalSelected = 6;
  37. }
  38. return self;
  39. }
  40. - (void)viewDidLoad {
  41. [super viewDidLoad];
  42. self.view.backgroundColor = [UIColor colorWithRed:249 / 255.0 green:249 / 255.0 blue:249 / 255.0 alpha:1 / 1.0];
  43. // 顶部
  44. UILabel *titeLabel = [[UILabel alloc] init];
  45. titeLabel.frame = CGRectMake(0, 46-5, ScreenWidth, 20);
  46. titeLabel.text = @"设置";
  47. titeLabel.font = [UIFont fontWithName:@"PingFangSC-Medium" size:20];
  48. titeLabel.textColor = [UIColor colorWithRed:0 / 255.0 green:0 / 255.0 blue:0 / 255.0 alpha:1 / 1.0];
  49. titeLabel.textAlignment = NSTextAlignmentCenter;
  50. [self.view addSubview:titeLabel];
  51. UIButton *backButton = [[UIButton alloc] init];
  52. backButton.frame = CGRectMake(23.3, 50-5, 20, 20);
  53. [backButton setImage:[UIImage imageNamed:@"icon_titlebar_back"] forState:UIControlStateNormal];
  54. [backButton addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside];
  55. [self.view addSubview:backButton];
  56. // 提示
  57. UILabel *noticeLabel = [[UILabel alloc] init];
  58. noticeLabel.frame = CGRectMake(20, 100-15, 302.7, 14);
  59. noticeLabel.text = @"提示: 正式使用时,开发者可将前端设置功能隐藏";
  60. noticeLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:14];
  61. [noticeLabel setTextAlignment:NSTextAlignmentCenter];
  62. noticeLabel.textColor = [UIColor colorWithRed:153 / 255.0 green:153 / 255.0 blue:153 / 255.0 alpha:1 / 1.0];
  63. [self.view addSubview:noticeLabel];
  64. UIImage *backSelectImage = [UIImage imageNamed:@"icon_live_list"];
  65. // 语音播报部分
  66. {
  67. UIImageView *imageView1 = [[UIImageView alloc] init];
  68. imageView1.frame = CGRectMake(20, 129-15, ScreenWidth-40, 48);
  69. imageView1.image = backSelectImage;
  70. [self.view addSubview:imageView1];
  71. UILabel *voiceLabel = [[UILabel alloc] init];
  72. voiceLabel.frame = CGRectMake(35, 144-15, 72, 18);
  73. voiceLabel.text = @"语音播报";
  74. voiceLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:18];
  75. voiceLabel.textColor = [UIColor colorWithRed:0 / 255.0 green:0 / 255.0 blue:0 / 255.0 alpha:1 / 1.0];
  76. // 音量开启/关闭的switch button
  77. self.voiceSwitch = [[UISwitch alloc] init];
  78. // UISwitch 系统默认大小,fram 不起作用
  79. self.voiceSwitch.frame = CGRectMake(ScreenWidth-38-48, 136.7-15, 38, 23);
  80. [self.voiceSwitch addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
  81. NSNumber *soundeMode = [[NSUserDefaults standardUserDefaults] objectForKey:SoundSwitch];
  82. self.voiceSwitch.on = soundeMode.boolValue;
  83. [self.view addSubview:voiceLabel];
  84. [self.view addSubview:self.voiceSwitch];
  85. [self changeSwitchColor:self.voiceSwitch];
  86. }
  87. // 质量控制部分
  88. {
  89. UIButton *qualityButton = [[UIButton alloc] init];
  90. qualityButton.frame = CGRectMake(20, 197-15, ScreenWidth-40, 48);
  91. [qualityButton setBackgroundImage:backSelectImage forState:UIControlStateNormal];
  92. [qualityButton setBackgroundImage:backSelectImage forState:UIControlStateHighlighted];
  93. [self.view addSubview:qualityButton];
  94. [qualityButton addTarget:self action:@selector(toSettingPage) forControlEvents:UIControlEventTouchUpInside];
  95. UILabel *qualityLabel = [[UILabel alloc] init];
  96. qualityLabel.frame = CGRectMake(35, 212-15, 72, 18);
  97. qualityLabel.text = @"质量控制";
  98. qualityLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:18];
  99. qualityLabel.textColor = [UIColor colorWithRed:0 / 255.0 green:0 / 255.0 blue:0 / 255.0 alpha:1 / 1.0];
  100. [self.view addSubview:qualityLabel];
  101. UIImageView *rightArrow = [[UIImageView alloc] init];
  102. // UISwitch 系统默认大小,fram 不起作用
  103. rightArrow.frame = CGRectMake(ScreenWidth-60, 206-15, 30, 30);
  104. rightArrow.image = [UIImage imageNamed:@"right_arrow"];
  105. [rightArrow setContentMode:UIViewContentModeCenter];
  106. [self.view addSubview:rightArrow];
  107. CGRect stateLabelRect = rightArrow.frame;
  108. CGFloat stateLabelWidth = 60.0f;
  109. stateLabelRect.origin.x = CGRectGetMinX(rightArrow.frame) - stateLabelWidth;
  110. stateLabelRect.size.width = stateLabelWidth;
  111. UILabel *stateLabel = [[UILabel alloc] initWithFrame:stateLabelRect];
  112. [self.view addSubview:stateLabel];
  113. stateLabel.textAlignment = NSTextAlignmentRight;
  114. stateLabel.textColor = [UIColor colorWithRed:153 / 255.0 green:153 / 255.0 blue:153 / 255.0 alpha:1 / 1.0];
  115. self.stateLabel = stateLabel;
  116. }
  117. // 活体检测部分,switch和label
  118. UIImageView *imageView2 = [[UIImageView alloc] init];
  119. imageView2.frame = CGRectMake(20, 265-15, ScreenWidth-40, 48);
  120. imageView2.image = backSelectImage;
  121. [self.view addSubview:imageView2];
  122. UILabel *liveLabel = [[UILabel alloc] init];
  123. liveLabel.frame = CGRectMake(35, 280-15, 72, 18);
  124. liveLabel.text = @"活体检测";
  125. liveLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:18];
  126. liveLabel.textColor = [UIColor colorWithRed:0 / 255.0 green:0 / 255.0 blue:0 / 255.0 alpha:1 / 1.0];
  127. [self.view addSubview:liveLabel];
  128. UISwitch *liveSwitch = [[UISwitch alloc] init];
  129. liveSwitch.frame = CGRectMake(ScreenWidth-38-48, 272.7-15, 38, 23);
  130. [liveSwitch addTarget:self action:@selector(isRunLiveDetect:) forControlEvents:UIControlEventValueChanged];
  131. NSNumber *liveMode = [[NSUserDefaults standardUserDefaults] objectForKey:LiveDetect];
  132. liveSwitch.on = liveMode.boolValue;
  133. [self.view addSubview:liveSwitch];
  134. [self changeSwitchColor:liveSwitch];
  135. self.liveView = [[UIView alloc] init];
  136. self.liveView.frame = CGRectMake(0, 313-15, ScreenWidth-40, 400);
  137. // 循环创建控件,相应的为动作选择,根据tag来确定点击的是哪个控件
  138. for (int i = 0; i < 7; i++){
  139. int y = i * 48;
  140. UIImageView *strName = [[UIImageView alloc] init];
  141. strName.frame = CGRectMake(20, y, ScreenWidth-40, 48);
  142. strName.image = backSelectImage;
  143. [self.liveView addSubview:strName];
  144. if (i == 0) {
  145. // 是否按顺序的switch和label
  146. UILabel *byOrderLabel = [[UILabel alloc] init];
  147. byOrderLabel.frame = CGRectMake(35, 15.3, 144, 18);
  148. byOrderLabel.text = @"活体动作顺序随机";
  149. byOrderLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:18];
  150. byOrderLabel.textColor = [UIColor colorWithRed:0 / 255.0 green:0 / 255.0 blue:0 / 255.0 alpha:1 / 1.0];
  151. [self.liveView addSubview:byOrderLabel];
  152. UISwitch *orderSwitch = [[UISwitch alloc] init];
  153. orderSwitch.frame = CGRectMake(ScreenWidth-38-48, 8, 38, 23);
  154. [orderSwitch addTarget:self action:@selector(isByOrderAction:) forControlEvents:UIControlEventValueChanged];
  155. NSNumber *orderMode = [[NSUserDefaults standardUserDefaults] objectForKey:ByOrder];
  156. orderSwitch.on = !orderMode.boolValue;
  157. [self.liveView addSubview:orderSwitch];
  158. [self changeSwitchColor:orderSwitch];
  159. } else {
  160. UIButton *buttonView = [[UIButton alloc] init];
  161. buttonView.frame = CGRectMake(35, y + 14.8, 20, 20);
  162. buttonView.tag = i;
  163. [buttonView addTarget:self action:@selector(buttonTagClick:) forControlEvents:UIControlEventTouchUpInside];
  164. // 判断数组中是否有上次选择结果,如果有,继续选择
  165. if([BDFaceLivingConfigModel.sharedInstance.liveActionArray containsObject:@(i-1)]){
  166. buttonView.selected = YES;
  167. [buttonView setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  168. } else {
  169. buttonView.selected = NO;
  170. [buttonView setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  171. }
  172. [self.liveView addSubview:buttonView];
  173. // 相应的label
  174. UILabel *actionLabel = [[UILabel alloc] init];
  175. actionLabel.frame = CGRectMake(65, y + 14.8, 192, 16);
  176. actionLabel.text = [self getLiveName:i];
  177. actionLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:16];
  178. actionLabel.textColor = [UIColor colorWithRed:0 / 255.0 green:0 / 255.0 blue:0 / 255.0 alpha:1 / 1.0];
  179. [self.liveView addSubview:actionLabel];
  180. }
  181. }
  182. [self.view addSubview:self.liveView ];
  183. // 不正常操作问题,相应的view
  184. self.warningView = [[UIImageView alloc] init];
  185. self.warningView.frame = CGRectMake((ScreenWidth-208) / 2, 298, 208, 44);
  186. self.warningView.image = [UIImage imageNamed:@"icon_notice"];
  187. self.waringLabel = [[UILabel alloc] init];
  188. self.waringLabel.frame = CGRectMake((ScreenWidth-168) / 2, 310, 168, 14);
  189. self.waringLabel.text = @"至少需要选择一项活体动作";
  190. self.waringLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:14];
  191. self.waringLabel.textColor = [UIColor colorWithRed:255 / 255.0 green:255 / 255.0 blue:255 / 255.0 alpha:1 / 1.0];
  192. if (liveMode.boolValue) {
  193. self.liveView.hidden = NO;
  194. } else {
  195. self.liveView.hidden = YES;
  196. }
  197. }
  198. - (void)viewWillAppear:(BOOL)animated {
  199. self.stateLabel.text = [BDFaceAdjustParamsFileManager currentSelectionText];
  200. }
  201. - (void)toSettingPage {
  202. BDFaceSelectConfigController *lvc = [[BDFaceSelectConfigController alloc] init];
  203. [self.navigationController pushViewController:lvc animated:YES];
  204. }
  205. - (void)viewWillDisappear:(BOOL)animated {
  206. [super viewWillDisappear:animated];
  207. }
  208. - (IBAction)backAction:(UIButton *)sender {
  209. // 判定是否选择了两个动作或以上,在开启动作活体时候。
  210. NSNumber *liveMode = [[NSUserDefaults standardUserDefaults] objectForKey:@"LiveMode"];
  211. if (BDFaceLivingConfigModel.sharedInstance.numOfLiveness >= 1 || !liveMode.boolValue){
  212. [self dismissViewControllerAnimated:YES completion:nil];
  213. } else {
  214. [self.view addSubview:self.warningView];
  215. [self.view addSubview:self.waringLabel];
  216. }
  217. NSNumber *orderMode = [[NSUserDefaults standardUserDefaults] objectForKey:ByOrder];
  218. BDFaceLivingConfigModel.sharedInstance.isByOrder = orderMode.boolValue;
  219. }
  220. # pragma mark - 动作活体button相应的部分
  221. - (IBAction)liveEyeAction:(UIButton *)sender {
  222. sender.selected ^= 1;
  223. if (sender.selected) {
  224. [sender setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  225. [BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:@(FaceLivenessActionTypeLiveEye)];
  226. BDFaceLivingConfigModel.sharedInstance.numOfLiveness ++;
  227. } else {
  228. [sender setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  229. [BDFaceLivingConfigModel.sharedInstance.liveActionArray removeObject:@(FaceLivenessActionTypeLiveEye)];
  230. BDFaceLivingConfigModel.sharedInstance.numOfLiveness --;
  231. }
  232. }
  233. - (IBAction)liveMouthAction:(UIButton *)sender {
  234. sender.selected ^= 1;
  235. if (sender.selected) {
  236. [sender setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  237. [BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:@(FaceLivenessActionTypeLiveMouth)];
  238. BDFaceLivingConfigModel.sharedInstance.numOfLiveness ++;
  239. } else {
  240. [sender setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  241. [BDFaceLivingConfigModel.sharedInstance.liveActionArray removeObject:@(FaceLivenessActionTypeLiveMouth)];
  242. BDFaceLivingConfigModel.sharedInstance.numOfLiveness --;
  243. }
  244. }
  245. - (IBAction)liveHeadRightAction:(UIButton *)sender {
  246. sender.selected ^= 1;
  247. if (sender.selected) {
  248. [sender setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  249. [BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:@(FaceLivenessActionTypeLiveYawRight)];
  250. BDFaceLivingConfigModel.sharedInstance.numOfLiveness ++;
  251. } else {
  252. [sender setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  253. [BDFaceLivingConfigModel.sharedInstance.liveActionArray removeObject:@(FaceLivenessActionTypeLiveYawRight)];
  254. BDFaceLivingConfigModel.sharedInstance.numOfLiveness --;
  255. }
  256. }
  257. - (IBAction)liveHeadLeftAction:(UIButton *)sender {
  258. sender.selected ^= 1;
  259. if (sender.selected) {
  260. [sender setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  261. [BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:@(FaceLivenessActionTypeLiveYawLeft)];
  262. BDFaceLivingConfigModel.sharedInstance.numOfLiveness ++;
  263. } else {
  264. [sender setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  265. [BDFaceLivingConfigModel.sharedInstance.liveActionArray removeObject:@(FaceLivenessActionTypeLiveYawLeft)];
  266. BDFaceLivingConfigModel.sharedInstance.numOfLiveness --;
  267. }
  268. }
  269. - (IBAction)liveHeadUpAction:(UIButton *)sender {
  270. sender.selected ^= 1;
  271. if (sender.selected) {
  272. [sender setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  273. [BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:@(FaceLivenessActionTypeLivePitchUp)];
  274. BDFaceLivingConfigModel.sharedInstance.numOfLiveness ++;
  275. } else {
  276. [sender setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  277. [BDFaceLivingConfigModel.sharedInstance.liveActionArray removeObject:@(FaceLivenessActionTypeLivePitchUp)];
  278. BDFaceLivingConfigModel.sharedInstance.numOfLiveness --;
  279. }
  280. }
  281. - (IBAction)liveHeadDownAction:(UIButton *)sender {
  282. sender.selected ^= 1;
  283. if (sender.selected) {
  284. [sender setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  285. [BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:@(FaceLivenessActionTypeLivePitchDown)];
  286. BDFaceLivingConfigModel.sharedInstance.numOfLiveness ++;
  287. } else {
  288. [sender setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  289. [BDFaceLivingConfigModel.sharedInstance.liveActionArray removeObject:@(FaceLivenessActionTypeLivePitchDown)];
  290. BDFaceLivingConfigModel.sharedInstance.numOfLiveness --;
  291. }
  292. }
  293. - (IBAction)liveYawAction:(UIButton *)sender {
  294. sender.selected ^= 1;
  295. if (sender.selected) {
  296. [sender setImage:[UIImage imageNamed:@"icon_check_select"] forState:UIControlStateSelected];
  297. [BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:@(FaceLivenessActionTypeLiveYaw)];
  298. BDFaceLivingConfigModel.sharedInstance.numOfLiveness ++;
  299. } else {
  300. [sender setImage:[UIImage imageNamed:@"icon_check"] forState:UIControlStateNormal];
  301. [BDFaceLivingConfigModel.sharedInstance.liveActionArray removeObject:@(FaceLivenessActionTypeLiveYaw)];
  302. BDFaceLivingConfigModel.sharedInstance.numOfLiveness --;
  303. }
  304. }
  305. - (IBAction)buttonTagClick:(UIButton *)sender{
  306. BOOL desState = sender.selected;
  307. desState = !desState;
  308. NSInteger temp = self.totalSelected;
  309. if (desState) {
  310. self.totalSelected++;
  311. } else {
  312. self.totalSelected--;
  313. }
  314. if (self.totalSelected == 0) {
  315. self.totalSelected = temp;
  316. [BDFaceToastView showToast:self.view text:@"至少选择一项活体动作"];
  317. return;;
  318. }
  319. [self.warningView removeFromSuperview];
  320. [self.waringLabel removeFromSuperview];
  321. switch (sender.tag) {
  322. case 1:
  323. [self liveEyeAction:sender];
  324. break;
  325. case 2:
  326. [self liveMouthAction:sender];
  327. break;
  328. case 3:
  329. [self liveHeadRightAction:sender];
  330. break;
  331. case 4:
  332. [self liveHeadLeftAction:sender];
  333. break;
  334. case 5:
  335. [self liveHeadUpAction:sender];
  336. break;
  337. case 6:
  338. [self liveHeadDownAction:sender];
  339. break;
  340. case 7:
  341. [self liveYawAction:sender];
  342. break;
  343. default:
  344. break;
  345. }
  346. if (sender.selected){
  347. // 如果选择按照顺序,对活体动作按设置页面顺序排序
  348. NSNumber *orderMode = [[NSUserDefaults standardUserDefaults] objectForKey:ByOrder];
  349. if (orderMode.boolValue){
  350. [BDFaceLivingConfigModel.sharedInstance.liveActionArray sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
  351. return [obj1 intValue] > [obj2 intValue];
  352. }];
  353. }
  354. }
  355. }
  356. - (NSString *)getLiveName:(int) k{
  357. switch (k) {
  358. case 1:
  359. return @"眨眨眼";
  360. break;
  361. case 2:
  362. return @"张张嘴";
  363. break;
  364. case 3:
  365. return @"向右摇头";
  366. break;
  367. case 4:
  368. return @"向左摇头";
  369. break;
  370. case 5:
  371. return @"向上抬头";
  372. break;
  373. case 6:
  374. return @"向下低头";
  375. break;
  376. // case 7:
  377. // return @"左右摇头";
  378. // break;
  379. default:
  380. break;
  381. }
  382. return @"";
  383. }
  384. - (void)changeSwitchColor:(UISwitch *)view {
  385. view.onTintColor = [UIColor face_colorWithRGBHex:0x00BAF2];
  386. view.layer.cornerRadius = CGRectGetHeight(view.frame) / 2.0f;
  387. }
  388. # pragma mark - switch button部分
  389. - (IBAction)switchAction:(UISwitch *)sender {
  390. if (sender.isOn) {
  391. // 活体声音
  392. [IDLFaceLivenessManager sharedInstance].enableSound = YES;
  393. // 图像采集声音
  394. [IDLFaceDetectionManager sharedInstance].enableSound = YES;
  395. // warning 本地存储是为了Demo呈现Switch开关状态, 实际上SDK声音开关运用跟本地存储无关
  396. [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:SoundSwitch];
  397. NSLog(@"打开了声音");
  398. } else {
  399. // 活体声音
  400. [IDLFaceLivenessManager sharedInstance].enableSound = NO;
  401. // 图像采集声音
  402. [IDLFaceDetectionManager sharedInstance].enableSound = NO;
  403. // warning 本地存储是为了Demo呈现Switch开关状态, 实际上SDK声音开关运用跟本地存储无关
  404. [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:SoundSwitch];
  405. NSLog(@"关闭了声音");
  406. }
  407. }
  408. - (IBAction)isRunLiveDetect:(UISwitch *)sender{
  409. if (sender.isOn) {
  410. self.liveView.hidden = NO;
  411. // warning 本地存储是为了Demo呈现Switch开关状态, 实际上SDK声音开关运用跟本地存储无关
  412. [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:LiveDetect];
  413. NSLog(@"打开了活体检测");
  414. } else {
  415. self.liveView.hidden = YES;
  416. // warning 本地存储是为了Demo呈现Switch开关状态, 实际上SDK声音开关运用跟本地存储无关
  417. [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:LiveDetect];
  418. NSLog(@"关闭了活体检测");
  419. }
  420. }
  421. - (IBAction)isByOrderAction:(UISwitch *)sender {
  422. if (sender.isOn) {
  423. BDFaceLivingConfigModel.sharedInstance.isByOrder = NO;
  424. // warning 本地存储是为了Demo呈现Switch开关状态, 实际上SDK声音开关运用跟本地存储无关
  425. [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:ByOrder];
  426. NSLog(@"不按照顺序");
  427. } else {
  428. BDFaceLivingConfigModel.sharedInstance.isByOrder = YES;
  429. // warning 本地存储是为了Demo呈现Switch开关状态, 实际上SDK声音开关运用跟本地存储无关
  430. [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:ByOrder];
  431. NSLog(@"按照顺序");
  432. }
  433. }
  434. @end