doum
6 天以前 2b287056e2f59518888d05a1bbc7e5a55fbd84d5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.example.datalibrary.factory.specific;
 
import static com.example.datalibrary.manager.FaceSDKManager.SDK_MODEL_LOAD_SUCCESS;
 
import android.content.Context;
import android.util.Log;
 
import com.baidu.idl.main.facesdk.FaceFeature;
import com.baidu.idl.main.facesdk.FaceSearch;
import com.baidu.idl.main.facesdk.callback.Callback;
import com.baidu.idl.main.facesdk.model.BDFaceInstance;
import com.example.datalibrary.factory.builder.ModelBuilder;
import com.example.datalibrary.listener.SdkInitListener;
import com.example.datalibrary.manager.FaceSDKManager;
import com.example.datalibrary.model.GlobalSet;
 
public class FeatureBuilder extends ModelBuilder<FaceFeature> {
 
    public void setFaceFeature(FaceFeature faceFeature) {
        this.faceFeature = faceFeature;
    }
    private FaceFeature faceFeature;
    private FaceSearch faceSearch;
    private SdkInitListener listener;
    public FeatureBuilder(SdkInitListener listener){
        this.listener = listener;
    }
    @Override
    public void init(BDFaceInstance bdFaceInstance) {
        if (bdFaceInstance == null){
            faceFeature = new FaceFeature();
            faceSearch = new FaceSearch();
        }else {
            faceFeature = new FaceFeature(bdFaceInstance);
            faceSearch = new FaceSearch(bdFaceInstance);
        }
        faceSearch.setInputDBListener(new FaceSearch.InputDBListener() {
            @Override
            public void onInputDB(int i, int i1) {
                Log.e("face_feature_db_add" , i + " " + i1);
            }
        });
        faceSearch.setMaxUpdateSize(10);
        faceSearch.setInputDBIntervalTime(0);
        faceSearch.setRegisterCompareThreshold(0.8f);
        faceSearch.setUpdateCompareThreshold(0.9f);
        faceSearch.setInputDBThreshold(0.92f);
 
    }
 
    @Override
    public void init() {
        faceFeature = new FaceFeature();
        faceSearch = new FaceSearch();
        faceSearch.setMaxUpdateSize(10);
        faceSearch.setInputDBIntervalTime(0);
        faceSearch.setRegisterCompareThreshold(0.8f);
        faceSearch.setUpdateCompareThreshold(0.9f);
        faceSearch.setInputDBThreshold(0.92f);
    }
 
    @Override
    public void initModel(Context context) {
        faceFeature.initModel(context,
                GlobalSet.RECOGNIZE_IDPHOTO_MODEL,
                GlobalSet.RECOGNIZE_VIS_MODEL,
                GlobalSet.RECOGNIZE_NIR_MODEL,
                "",
                new Callback() {
                    @Override
                    public void onResponse(int code, String response) {
                        long endInitModelTime = System.currentTimeMillis();
//                        LogUtils.e(TIME_TAG, "init model time = " + (endInitModelTime - startInitModelTime));
                        if (code != 0) {
//                            ToastUtils.toast(context, "模型加载失败,尝试重启试试");
                            if (listener != null) {
                                listener.initModelFail(code, response);
                            }
                        } else {
                            FaceSDKManager.initStatus = SDK_MODEL_LOAD_SUCCESS;
                            // 模型初始化成功,加载人脸数据
//                            ToastUtils.toast(context, "模型加载完毕,欢迎使用");
                            if (listener != null) {
                                listener.initModelSuccess();
                            }
                        }
                    }
                });
    }
 
    @Override
    public FaceFeature getExample() {
        return faceFeature;
    }
 
    public FaceFeature getFaceFeature() {
        return faceFeature;
    }
 
    public FaceSearch getFaceSearch() {
        return faceSearch;
    }
}