package com.example.datalibrary.manager; 
 | 
  
 | 
import android.content.Context; 
 | 
  
 | 
import com.baidu.idl.main.facesdk.FaceCrop; 
 | 
import com.baidu.idl.main.facesdk.FaceDarkEnhance; 
 | 
import com.baidu.idl.main.facesdk.FaceDetect; 
 | 
import com.baidu.idl.main.facesdk.FaceFeature; 
 | 
import com.baidu.idl.main.facesdk.FaceLive; 
 | 
import com.baidu.idl.main.facesdk.FaceMouthMask; 
 | 
import com.baidu.idl.main.facesdk.FaceSearch; 
 | 
import com.baidu.idl.main.facesdk.model.BDFaceInstance; 
 | 
import com.baidu.idl.main.facesdk.model.BDFaceSDKConfig; 
 | 
import com.example.datalibrary.factory.specific.CropBuilder; 
 | 
import com.example.datalibrary.factory.specific.DarkBuilder; 
 | 
import com.example.datalibrary.factory.specific.DetectBuilder; 
 | 
import com.example.datalibrary.factory.specific.DetectNirBuilder; 
 | 
import com.example.datalibrary.factory.specific.DetectQualityBuilder; 
 | 
import com.example.datalibrary.factory.specific.FeatureBuilder; 
 | 
import com.example.datalibrary.factory.specific.LiveBuilder; 
 | 
import com.example.datalibrary.factory.specific.MouthMaskBuilder; 
 | 
import com.example.datalibrary.factory.specific.TrackBuilder; 
 | 
import com.example.datalibrary.listener.SdkInitListener; 
 | 
  
 | 
public class FaceModel implements SdkInitListener{ 
 | 
    private TrackBuilder trackBuilder; 
 | 
    private DetectBuilder detectBuilder; 
 | 
    private DetectQualityBuilder detectQualityBuilder; 
 | 
    private DetectNirBuilder detectNirBuilder; 
 | 
    private DarkBuilder darkBuilder; 
 | 
    private FeatureBuilder featureBuilder; 
 | 
    private FeatureBuilder featurePersonBuilder; 
 | 
    private LiveBuilder liveBuilder; 
 | 
    private CropBuilder cropBuilder; 
 | 
    private MouthMaskBuilder mouthMaskBuilder = null; 
 | 
    private boolean isModelInit; 
 | 
    private boolean checkMouthMask = false; 
 | 
  
 | 
    public void setListener(SdkInitListener listener) { 
 | 
        this.listener = listener; 
 | 
    } 
 | 
  
 | 
    private SdkInitListener listener; 
 | 
    public FaceModel(boolean checkMouthMask){ 
 | 
        isModelInit = false; 
 | 
        cropBuilder = new CropBuilder(this); 
 | 
        trackBuilder = new TrackBuilder(this); 
 | 
        detectBuilder = new DetectBuilder(this); 
 | 
        detectQualityBuilder = new DetectQualityBuilder(this); 
 | 
        detectNirBuilder = new DetectNirBuilder(this); 
 | 
        darkBuilder = new DarkBuilder(this); 
 | 
        liveBuilder = new LiveBuilder(this); 
 | 
        featureBuilder = new FeatureBuilder(this); 
 | 
        featurePersonBuilder = new FeatureBuilder(this); 
 | 
  
 | 
        this.checkMouthMask = checkMouthMask; 
 | 
        if (checkMouthMask) { 
 | 
            mouthMaskBuilder = new MouthMaskBuilder(this); 
 | 
        } 
 | 
    } 
 | 
    public void init(BDFaceSDKConfig config , Context context){ 
 | 
        if (isModelInit){ 
 | 
            return; 
 | 
        } 
 | 
        BDFaceInstance trackInstance = new BDFaceInstance(); 
 | 
        trackInstance.creatInstance(); 
 | 
        BDFaceInstance detectInstance = new BDFaceInstance(); 
 | 
        detectInstance.creatInstance(); 
 | 
        // 人证核验init入参 
 | 
        BDFaceInstance detectQualityInstance = new BDFaceInstance(); 
 | 
        detectQualityInstance.creatInstance(); 
 | 
        BDFaceInstance cropInstance = new BDFaceInstance(); 
 | 
        cropInstance.creatInstance(); 
 | 
  
 | 
        trackBuilder.init(trackInstance , config); 
 | 
        cropBuilder.init(cropInstance); 
 | 
        detectBuilder.init(detectInstance , config); 
 | 
        detectNirBuilder.init(detectInstance); 
 | 
        // 认证核验检测模型预配置 
 | 
        detectQualityBuilder.init(detectQualityInstance , config); 
 | 
        darkBuilder.init(null); 
 | 
        liveBuilder.init(null); 
 | 
        // 认证核验提取特征模型预配置 
 | 
        featurePersonBuilder.init(detectQualityInstance); 
 | 
        // 通用特征提取模型预配置 
 | 
        featureBuilder.init(null); 
 | 
  
 | 
        if (checkMouthMask){ 
 | 
            mouthMaskBuilder.init(null); 
 | 
        } 
 | 
  
 | 
        if (checkMouthMask) { 
 | 
            // 口罩模型初始化 
 | 
            mouthMaskBuilder.initModel(context); 
 | 
        } 
 | 
        // 抠图模型初始化 
 | 
        cropBuilder.initModel(context); 
 | 
        // 跟踪模型初始化 
 | 
        trackBuilder.initModel(context); 
 | 
        // 检测模型初始化 
 | 
        detectBuilder.initModel(context); 
 | 
        // 认证核验检测模型初始化 (边导入边识别-需初始化此处) 
 | 
        detectQualityBuilder.initModel(context); 
 | 
        // 红外检测模型 
 | 
        detectNirBuilder.initModel(context); 
 | 
        // 暗光恢复模型 
 | 
        darkBuilder.initModel(context); 
 | 
        // 活体分数模型 
 | 
        liveBuilder.initModel(context); 
 | 
        // 认证特征提取模型 (边导入边识别-需初始化此处) 
 | 
        featurePersonBuilder.initModel(context); 
 | 
        // 通用特征提取模型 
 | 
        featureBuilder.initModel(context); 
 | 
    } 
 | 
  
 | 
    public void setCheckMouthMask(boolean checkMouthMask){ 
 | 
       this.checkMouthMask = checkMouthMask; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void initStart() { 
 | 
  
 | 
        listener.initStart(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void initLicenseSuccess() { 
 | 
  
 | 
        listener.initLicenseSuccess(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void initLicenseFail(int errorCode, String msg) { 
 | 
        listener.initLicenseFail(errorCode , msg); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void initModelSuccess() { 
 | 
        listener.initModelSuccess(); 
 | 
        isModelInit = true; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void initModelFail(int errorCode, String msg) { 
 | 
        isModelInit = false; 
 | 
        listener.initModelFail(errorCode , msg); 
 | 
    } 
 | 
    public FaceFeature getFacePersonFeature(){ 
 | 
        return featurePersonBuilder.getExample(); 
 | 
    } 
 | 
    public FaceSearch getFacePersonSearch(){ 
 | 
        return featurePersonBuilder.getFaceSearch(); 
 | 
    } 
 | 
    public FaceFeature getFaceFeature(){ 
 | 
        return featureBuilder.getExample(); 
 | 
    } 
 | 
    public FaceSearch getFaceSearch(){ 
 | 
        return featureBuilder.getFaceSearch(); 
 | 
    } 
 | 
    public FaceDetect getFaceTrack(){ 
 | 
        return trackBuilder.getExample(); 
 | 
    } 
 | 
    public FaceCrop getFaceCrop(){ 
 | 
        return cropBuilder.getExample(); 
 | 
    } 
 | 
    public FaceDetect getFaceDetectPerson(){ 
 | 
        return detectQualityBuilder.getExample(); 
 | 
    } 
 | 
    public FaceDetect getFaceDetect(){ 
 | 
        return detectBuilder.getExample(); 
 | 
    } 
 | 
    public FaceDetect getFaceNirDetect(){ 
 | 
        return detectNirBuilder.getExample(); 
 | 
    } 
 | 
    public FaceDarkEnhance getDark(){ 
 | 
        return darkBuilder.getExample(); 
 | 
    } 
 | 
    public FaceLive getFaceLive(){ 
 | 
        return liveBuilder.getExample(); 
 | 
    } 
 | 
  
 | 
    public FaceMouthMask getFaceMoutMask(){ 
 | 
        if (mouthMaskBuilder != null) { 
 | 
            return mouthMaskBuilder.getExample(); 
 | 
        } 
 | 
        else{ 
 | 
            return null; 
 | 
        } 
 | 
    } 
 | 
} 
 |