接口调用流程

1.初始化

  1. 创建LFLivenessSDK对象detector,具体传参请查看demo
     /**
      * 初始化检测工具
      */
     private void initDetector() {
         try {
             mLivenessDetector = new LFLivenessDetector(this);
         //设置难易程度
             mLivenessDetector.setComplexity(mLivenessComplexity);
         //设置检测动作
             mLivenessDetector.setMotionList(mMotionList);
         //设置超时时间
             mLivenessDetector.setTimeout(TIME_OUT);
         //设置输出类型
             mLivenessDetector.setOutputType(mLivenessOutputType);
         //添加检测过程的监听
             mLivenessDetector.setLfDetectProgressListener(this);
         } catch (Exception e) {
             onError(DetectError.DETECTOR_CREATE_ERROR);
         }
     }
    
  2. 创建人脸扫描对象(相机管理和相关回调)
     /**
      * 创建扫描对象
      */
     private void createFaceScan() {
         mFaceScanner = new FaceScanner(this, mLivenessDetector);
         mFaceScanner.setDetectErrorCallBack(this);
     }
    
  3. 在上面设置后,打开相机就可以开始做检测了,下面是SDK抛出的回调,可根据相应的业务做修改

     /**
      * 开始检测
      * @param motion 当前检测的动作
      */
     void detectStart(LFLivenessMotion motion);
    
     /**
      * 单个动作检测成功
      * @param nextMotion 下一个检测的动作,方便播放语音
      * @param faceProportion 进度条参数
      */
     void detectSuccess(LFLivenessMotion nextMotion, float faceProportion);
    
     /**
      * 检测失败
      * @param motion 当前检测的动作
      * @param faceProportion 进度条参数
      */
     void detectFail(LFLivenessMotion motion, LFLivenessDetectorError error, float faceProportion);
    
     /**
      * 检测超时
      */
     void detectTimeout();
    
     /**
      * 检测中断
      */
     void detectInterrupt();
    
     /**
      * 检测完成,开始hack请求
      */
     void livenessFinishAndStartHackRequest(LFLivenessImageResult[] imageResults);
    
     /**
      * 检测完成 接口请求成功
      * @param imageResults 图片数组
      * @param result 请求结果
      */
     void hackLiveSuccess(LFLivenessImageResult[] imageResults, LFLivenessHackResult result);
    
     /**
      * 检测完成 接口请求失败
      * @param imageResults 图片数组
      * @param errorMessage 请求结果
      */
     void hackLiveFail(LFLivenessImageResult[] imageResults, String errorMessage);
    

  4. 如果不关心hack结果可以在livenessFinishAndStartHackRequest()方法中做关闭页面的操作,需要关心hack结果可以再hackLiveSuccess、hackLiveFail中做处理。页面通过setResults方法返回参数,可根据具体情况做修改
     /**
      * 检测完成,关闭页面
      * @param imageResults 图片结果
      * @param hackScore hack分数
      */
     private void detectFinish(final LFLivenessImageResult[] imageResults, final double hackScore) {
         runOnUiThread(new Runnable() {
             @Override
             public void run() {
                 Intent intent = new Intent();
                 LFReturnResult returnResult = new LFReturnResult();
                 returnResult.setImageResults(imageResults);
                 intent.putExtra(Constants.KEY_DETECT_RESULT, returnResult);
                 intent.putExtra(Constants.KEY_DETECT_HACK_SCORE, hackScore);
                 setResult(RESULT_OK, intent);
                 finish();
             }
         });
     }
    

results matching ""

    No results matching ""