From 603cb36a5123e46656b06a5deb8d7ac7ff81307f Mon Sep 17 00:00:00 2001
From: 554325746@qq.com <554325746@qq.com>
Date: 星期三, 25 十二月 2019 08:48:51 +0800
Subject: [PATCH] a

---
 app/src/main/java/com/basic/security/manager/FeatureManager.java |   80 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 79 insertions(+), 1 deletions(-)

diff --git a/app/src/main/java/com/basic/security/manager/FeatureManager.java b/app/src/main/java/com/basic/security/manager/FeatureManager.java
index f44f0f5..257c38e 100644
--- a/app/src/main/java/com/basic/security/manager/FeatureManager.java
+++ b/app/src/main/java/com/basic/security/manager/FeatureManager.java
@@ -2,11 +2,14 @@
 
 import com.basic.security.activity.MainActivity;
 import com.basic.security.model.ModelAdapter;
+import com.basic.security.model.PersonA;
+import com.basic.security.utils.Constants;
 import com.basic.security.utils.FaceId;
 
 import java.util.List;
 
 public class FeatureManager {
+
     public static void initCppFeatureMap() {
         List<ModelAdapter> list = PersonManager.findPersonList("select * from person where del_flag='0'");
         for (ModelAdapter result : list) {
@@ -15,12 +18,87 @@
                 String all_device = result.getString("all_device");
                 byte[] camera_image_feature = result.getBlob("camera_image_feature");
                 if (camera_image_feature != null && camera_image_feature != null) {
-                    FaceId.instance.addFeatureToDb(id, camera_image_feature);
+                    addFeature(id, camera_image_feature);
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
+        initAllPersonFeaturesMap();
         MainActivity.faceDbInitComplete = true;
     }
+
+    public static void initAllPersonFeaturesMap() {
+        List<ModelAdapter> personList = PersonManager.findPersonList("select * from person where 1==1");
+        for (ModelAdapter person : personList) {
+            try {
+                String id = person.getId();
+                String all_device = person.getString("all_device");
+                byte[] camera_image_feature = person.getBlob("camera_image_feature");
+                if (camera_image_feature != null) {
+                    addFeatureToAllFeatures(id, camera_image_feature);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        List<ModelAdapter> personAList = PersonAManager.findPersonAList("select * from " + PersonA.tableName);
+        for (ModelAdapter personA : personAList) {
+            try {
+                String id = personA.getString(PersonA.id);
+                byte[] faceFeature = personA.getBlob(PersonA.faceFeature);
+                if (faceFeature != null) {
+                    addFeatureToAllFeatures(id, faceFeature);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public static void addFeatureToAllFeatures(String personId, byte[] featureData) {
+        FaceId.instance.addFeatureToAllDb(personId, featureData);
+    }
+
+    public static String compareFeatureInAllDb(byte[] featureArray, int score) {
+        String compareResultStr = FaceId.instance.compareFeatureInAllDb(featureArray, score);
+        return compareResultStr;
+    }
+
+    public static void addFeature(String personId, byte[] featureData) {
+        addFeatureToAllFeatures(personId, featureData);
+        FaceId.instance.addFeatureToDb(personId, featureData);
+    }
+
+    public static void removeFeature(String personId) {
+        FaceId.instance.removeFeatureFromDb(personId);
+    }
+
+    public static String compareFeature(byte[] featureArray, int score) {
+        String compareResultStr = FaceId.instance.compareFeatureInDb(featureArray, score);
+        return compareResultStr;
+    }
+
+    public static String isDuplicateInAllDb(ModelAdapter selectedPerson) {
+        try {
+            byte[] camera_image_feature = selectedPerson.getBlob("camera_image_feature");
+            return isDuplicateInAllDb(camera_image_feature);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static String isDuplicateInAllDb(byte[] camera_image_feature) {
+        try {
+            if (camera_image_feature != null && camera_image_feature.length > 0) {
+                String compareResultStr = FeatureManager.compareFeatureInAllDb(camera_image_feature, Constants.minRecognizeScore);
+                return compareResultStr.split(",", -1)[0];
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
 }

--
Gitblit v1.8.0