Browse Source

Merge branch 'FaceScenic_V2_baiduface' into FaceScenic_V2_baiduface_x5

xwh 4 months ago
parent
commit
e79990c5b8

+ 1 - 1
app/build.gradle

@@ -15,7 +15,7 @@ android {
         minSdkVersion 22
         targetSdkVersion 22
         versionCode 120//115
-        versionName "1.1.9.241010" //1.1.5.241003
+        versionName "1.1.9.241023" //1.1.5.241003
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         ndk {
             abiFilters "armeabi-v7a"   //armeabi-v7a 'arm64-v8a'

+ 1 - 0
app/src/main/java/com/hanghui/senic/activity/MainActivity.java

@@ -326,6 +326,7 @@ public class MainActivity extends BaseActivity {
     public void setOnCreate() {
         AppLogUtils.i(false, "", "MainActivity生命周期     setOnCreate(), MainActivity.this=" + MainActivity.this);
         ConfigManager.isConfigRequestSuccess = false;
+        ConfigManager.isUpdateConfig = false;
         iDeviceUI = BaseDeviceUI.getInstance().getDeviceUI();
         initViews();
         //修改顶部网络状态

+ 9 - 9
app/src/main/java/com/hanghui/senic/baiduface/BaiduFaceMainActivity.java

@@ -290,28 +290,28 @@ public class BaiduFaceMainActivity extends BaseActivity {
                     //顶部图标显示
                     switch (code){
                         case Constants.Code_hardware_icon_idCard_succeed:
-                            hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_succeed);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_idcard_succeed,hardwareIcon_IDCard);
                             break;
                         case Constants.Code_hardware_icon_idCard_fail:
-                            hardwareIcon_IDCard.setImageResource(R.mipmap.hardware_icon_idcard_fail);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_idcard_fail,hardwareIcon_IDCard);
                             break;
                         case Constants.Code_hardware_icon_qrCode_succeed:
-                            hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_succeed);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_qrcode_succeed,hardwareIcon_QRCode);
                             break;
                         case Constants.Code_hardware_icon_qrCode_fail:
-                            hardwareIcon_QRCode.setImageResource(R.mipmap.hardware_icon_qrcode_fail);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_qrcode_fail,hardwareIcon_QRCode);
                             break;
                         case Constants.Code_hardware_icon_passport_succeed:
-                            hardwareIcon_Passport.setImageResource(R.mipmap.hardware_icon_passport_succeed);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_passport_succeed,hardwareIcon_Passport);
                             break;
                         case Constants.Code_hardware_icon_passport_fail:
-                            hardwareIcon_Passport.setImageResource(R.mipmap.hardware_icon_passport_fail);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_passport_fail,hardwareIcon_Passport);
                             break;
                         case Constants.Code_hardware_icon_icCard_succeed:
-                            hardwareIcon_IcCard.setImageResource(R.mipmap.hardware_icon_iccard_succeed);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_iccard_succeed,hardwareIcon_IcCard);
                             break;
                         case Constants.Code_hardware_icon_icCard_fail:
-                            hardwareIcon_IcCard.setImageResource(R.mipmap.hardware_icon_iccard_fail);
+                            ImageLoaderUtils.loadImage(R.mipmap.hardware_icon_iccard_fail,hardwareIcon_IcCard);
                             break;
                     }
                     //外设初始化状态的文字显示
@@ -646,7 +646,7 @@ public class BaiduFaceMainActivity extends BaseActivity {
                 // 没有写的权限,去申请写的权限,会弹出对话框
                 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
             }
-            ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
+         //   ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 14 - 12
app/src/main/java/com/hanghui/senic/baiduface/BaiduFacePreviewActivity.java

@@ -184,6 +184,7 @@ public class BaiduFacePreviewActivity extends BaiduFaceMainActivity {
         mPreview = new BaiduPreviewTexture(this, irPreviewView);
         BaiduFaceUtil.stopBaiduFaceWebsocketService();
         AppLogUtils.i(true, TAG, "BaiduFaceActivity, onCreate()");
+        Log.i(TAG, "BaiduFaceActivity, onCreate()");
         super.setOnCreate();
     }
 
@@ -200,9 +201,12 @@ public class BaiduFacePreviewActivity extends BaiduFaceMainActivity {
     @Override
     protected void onStart() {
         super.onStart();
-        if(initBaiduFaceAuthState) {
-            stopCameraPreview();
-            startCameraPreview();
+        if(initBaiduFaceAuthState&&mHandler!=null) {
+            mHandler.post(() -> {
+                stopCameraPreview();
+                startCameraPreview();
+            });
+
         }
         Log.i(TAG, "BaiduFaceActivity, onStart()");
     }
@@ -211,12 +215,7 @@ public class BaiduFacePreviewActivity extends BaiduFaceMainActivity {
     protected void onStop() {
         super.onStop();
         if(mHandler!=null) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    stopCameraPreview();
-                }
-            });
+            mHandler.post(() -> stopCameraPreview());
         }
         Log.i(TAG, "BaiduFaceActivity, onStop()");
     }
@@ -244,7 +243,7 @@ public class BaiduFacePreviewActivity extends BaiduFaceMainActivity {
     @Override
     protected void onDestroy() {
         super.onDestroy();
-
+        Log.i(TAG, "BaiduFaceActivity, onDestroy()");
     }
 
 
@@ -415,8 +414,7 @@ public class BaiduFacePreviewActivity extends BaiduFaceMainActivity {
             if (mCameraNum < 2) {
                 return;
             }
-            int type=SingleBaseConfig.getBaseConfig().getType();
-            if (type != 2 || type != 4){ // RGB+NIR活体:2   RGB+NIR+Depth活体:4
+            if(!ConfigManager.getAuthenticationBeanListBean().getCameraType().equals("IR")){
                 return;
             }
             if (SingleBaseConfig.getBaseConfig().getRBGCameraId() != -1) {
@@ -438,6 +436,9 @@ public class BaiduFacePreviewActivity extends BaiduFaceMainActivity {
                 layoutParams.width = w;
             }
             irPreviewView.setLayoutParams(layoutParams);
+            if(mPreview == null){
+                mPreview = new BaiduPreviewTexture(this, irPreviewView);
+            }
             mPreview.setCamera(mCamera, PREFER_WIDTH, PERFER_HEIGH);
             initNirFaceConfig(PERFER_HEIGH, PREFER_WIDTH);
             byte[] buffer=new byte[460800];
@@ -452,6 +453,7 @@ public class BaiduFacePreviewActivity extends BaiduFaceMainActivity {
                 }
             });
         } catch (Exception e) {
+            AppLogUtils.e(true,TAG ,"startCameraPreview:"+e.toString());
         }
 
 

+ 23 - 0
app/src/main/java/com/hanghui/senic/baiduface/UserFaceDataIssueCallback.java

@@ -76,6 +76,12 @@ public class UserFaceDataIssueCallback {
         private int issuePercent; //下发进度0-100
         @SerializedName("msg")
         private String msg;//下发结果消息
+        @SerializedName("hadIssuedFaceSuccessCount")
+        private int hadIssuedFaceSuccessCount;//已下发⼈员中成功数量
+        @SerializedName("hadIssuedFaceFailedCount")
+        private int hadIssuedFaceFailedCount;//已下发⼈已下发⼈员中失败数量
+
+
 
         @SerializedName("items")
         private ArrayList<Data.Item> items; //下发结果数据
@@ -136,6 +142,23 @@ public class UserFaceDataIssueCallback {
             this.msg = msg;
         }
 
+
+        public int getHadIssuedFaceSuccessCount() {
+            return hadIssuedFaceSuccessCount;
+        }
+
+        public void setHadIssuedFaceSuccessCount(int hadIssuedFaceSuccessCount) {
+            this.hadIssuedFaceSuccessCount = hadIssuedFaceSuccessCount;
+        }
+
+        public int getHadIssuedFaceFailedCount() {
+            return hadIssuedFaceFailedCount;
+        }
+
+        public void setHadIssuedFaceFailedCount(int hadIssuedFaceFailedCount) {
+            this.hadIssuedFaceFailedCount = hadIssuedFaceFailedCount;
+        }
+
         public ArrayList<Item> getItems() {
             return items;
         }

+ 8 - 5
app/src/main/java/com/hanghui/senic/baiduface/WebsocketService.java

@@ -447,7 +447,9 @@ public class WebsocketService extends Service {
             AppLogUtils.e(true, TAG + " ,receiveUserFaceData", "WebSocket, receiveUserFaceData(), 数据错误, op 为空");
             return;
         }
-
+        if(userFaceData.getData()!=null){
+            Log.i("____789","  新增 "+userFaceData.getData().getTraceId());
+        }
 
         if (op.equals(BaiduFaceConstant.OP_ISSUE_ALL)) { //全量下发
 
@@ -711,12 +713,12 @@ public class WebsocketService extends Service {
             callbackItem.setMsg(msg);
             callbackItems.add(callbackItem);
             if (callbackItems.size() > 30 && callbackItems.size() < totalSize) {
-                sendMessage_issueCallback(data.getTraceId(), STATUS_processing, "下发中", totalSize,currentCount, callbackItems);
+                sendMessage_issueCallback(data.getTraceId(), STATUS_processing, "下发中", totalSize,currentCount,errorUserDataCount, callbackItems);
                 callbackItems=new ArrayList<>();
             }
         }
         Log.i("____789","   "+traceId+"     下发完成或结束");
-        sendMessage_issueCallback(data.getTraceId(), isTaskCancel?STATUS_cancel:STATUS_success, "下发任务成功完成", totalSize, currentCount,callbackItems);
+        sendMessage_issueCallback(data.getTraceId(), isTaskCancel?STATUS_cancel:STATUS_success, "下发任务成功完成", totalSize, currentCount,errorUserDataCount,callbackItems);
 
         if(!TextUtils.isEmpty(traceId)&&getWebSocketTaskMap().containsKey(traceId)){ //todo 人脸执行队列任务更新状态
             WebSocketTask tempTask=getWebSocketTaskMap().get(traceId);
@@ -884,7 +886,7 @@ public class WebsocketService extends Service {
      * @param totalCount    后台总共下发的用户数量
      * @param callbackItems 客户端已处理的用户数据
      */
-    private void sendMessage_issueCallback(String traceId, String status, String msg, int totalCount, int currCount,
+    private void sendMessage_issueCallback(String traceId, String status, String msg, int totalCount, int currCount,int failCount,
                                            ArrayList<UserFaceDataIssueCallback.Data.Item> callbackItems) {
         if (TextUtils.isEmpty(traceId)) {
             AppLogUtils.e(true, TAG + " ,sendMessage_issueCallback", "WebSocket, sendMessage_deleteAllCallback(), traceId为空");
@@ -923,7 +925,8 @@ public class WebsocketService extends Service {
         } else { //处理最后一条数据
             data.setItems(callbackItems);
         }
-
+        data.setHadIssuedFaceFailedCount(failCount);
+        data.setHadIssuedFaceSuccessCount(currCount);
         issueCallback.setData(data);
 
         String issueCallbackJsonStr = GsonUtil.toJson(issueCallback);

+ 1 - 1
app/src/main/java/com/hanghui/senic/baiduface/view/BaiduPreviewTexture.java

@@ -56,7 +56,7 @@ public class BaiduPreviewTexture extends ViewGroup implements TextureView.Surfac
                 // set Camera parameters
             }
             mCamera.setParameters(params);
-            if (!mPreviewed && mSurfaceCreated) {
+            if (!mPreviewed) {
                 try {
                     mCamera.setPreviewTexture(mSurfaceTexture);
                     mCamera.startPreview();

+ 3 - 0
app/src/main/java/com/hanghui/senic/network/HttpRequest.java

@@ -177,6 +177,9 @@ public class HttpRequest {
         MyAppliction.getmDbDao().insertData("data", jsonData);
         //更新配置项
         ConfigManager.UpdateConfiguration(authenticationBean);
+        if (ConfigManager.isUpdateConfig){
+            return;
+        }
         //将设备是否首次打开状态修改
         SharedPreferencesUtils.setParam(MyAppliction.getContext(), "forTheFirstTime", false);
         //弹框提示设备到期时间

+ 1 - 0
app/src/main/java/com/hanghui/senic/receiver/NetBroadcastReceiver.java

@@ -28,6 +28,7 @@ public class NetBroadcastReceiver extends BroadcastReceiver {
         } else {
             AppLogUtils.e(false, "", "广播获取到网络异常 悬浮框展示");
             PopupWindowManager.showFloatIfNoNetwork();
+            ConfigManager.isUpdateConfig = true;
             netNetworkCallback.updateView(Constants.Code_internetUnAvailable, "网络异常");
 
         }

+ 1 - 0
app/src/main/java/com/hanghui/senic/service/usbserialdemo/utile/ConfigManager.java

@@ -73,6 +73,7 @@ public class ConfigManager {
     public static final String TAG = "ConfigManager";
     public static boolean isShortContact = false;//门磁信号是否短接
     public static boolean isConfigRequestSuccess = false;//配置是否请求成功
+    public static boolean isUpdateConfig = false;//是否更新配置项
     public static boolean isFileExists = false;//判断file是否存在
     public static boolean closePassport = false;//护照机是否关闭
 

+ 1 - 1
app/src/main/java/com/hanghui/senic/service/usbserialdemo/utile/loacat/AppLogUtils.java

@@ -495,7 +495,7 @@ public final class AppLogUtils {
         final String content = sb.toString();
         //一边打印日志一边写入文件
         if (PrintToFileUtil.input2File(content, fullPath)) {
-            Log.d(tag, "AppLogUtils, log to file " + fullPath + " success!");
+          //  Log.d(tag, "AppLogUtils, log to file " + fullPath + " success!");
         } else {
             Log.e(tag, "AppLogUtils, log to file " + fullPath + " failed!");
         }

+ 2 - 2
datalibrary/src/main/java/com/example/datalibrary/db/DBManager.java

@@ -148,7 +148,7 @@ public class DBManager {
         if (rowId < 0) {
             return false;
         }
-        Log.i(TAG, "insert group success:" + rowId);
+       // Log.i(TAG, "insert group success:" + rowId);
         closeCursor(cursor);
         return true;
     }
@@ -282,7 +282,7 @@ public class DBManager {
                 }
 
                 setTransactionSuccessful(mDatabase);
-                Log.i(TAG, "insert user success:" + rowId);
+               // Log.i(TAG, "insert user success:" + rowId);
             } catch (Exception e) {
                 Log.e(TAG, "addUser e = " + e.getMessage());
                 return false;

+ 1 - 1
datalibrary/src/main/java/com/example/datalibrary/manager/FaceSDKManager.java

@@ -584,7 +584,7 @@ public class FaceSDKManager {
                                 // TODO depth活体检测
                                 float depthScore = -1;
                                 boolean isHaveDepthImage =
-                                        depthBDFaceImageConfig != null && isLiveCheck;
+                                        depthBDFaceImageConfig != null && isLiveCheck && bdLiveConfig.isNirLivingControl;
                                 if (depthBDFaceImageConfig != null) {
                                     // TODO: 用户调整旋转角度和是否镜像,适配Atlas 镜头,目前宽和高400*640,其他摄像头需要动态调整,人脸72 个关键点x 坐标向左移动80个像素点
                                     float[] depthLandmark = new float[faceInfos[0].landmarks.length];

+ 10 - 0
datalibrary/src/main/java/com/example/datalibrary/model/BDLiveConfig.java

@@ -6,6 +6,12 @@ public class BDLiveConfig {
         this.nirLiveScore = nirLiveScore;
         this.depthLiveScore = depthLiveScore;
     }
+    public BDLiveConfig(float rgbLiveScore , float nirLiveScore , float depthLiveScore,boolean isNirLivingControl){
+        this.rgbLiveScore = rgbLiveScore;
+        this.nirLiveScore = nirLiveScore;
+        this.depthLiveScore = depthLiveScore;
+        this.isNirLivingControl = isNirLivingControl;
+    }
     public BDLiveConfig(float rgbLiveScore , float nirLiveScore , float depthLiveScore , int framesThreshold){
         this.rgbLiveScore = rgbLiveScore;
         this.nirLiveScore = nirLiveScore;
@@ -16,4 +22,8 @@ public class BDLiveConfig {
     public float nirLiveScore; // nir活体阈值
     public float depthLiveScore; // depth活体阈值
     public int framesThreshold = 1; // 识别帧数
+    public boolean isNirLivingControl=false; //是否启动Nir活体检测
+
+
+
 }

+ 14 - 4
gatelibrary/src/main/java/com/baidu/idl/main/facesdk/utils/FaceUtils.java

@@ -64,10 +64,20 @@ public class FaceUtils {
     }
 
     public BDLiveConfig getBDLiveConfig(){
-        return SingleBaseConfig.getBaseConfig().isLivingControl() ?
-                new BDLiveConfig(SingleBaseConfig.getBaseConfig().getRgbLiveScore() ,
-                SingleBaseConfig.getBaseConfig().getNirLiveScore() ,
-                SingleBaseConfig.getBaseConfig().getDepthLiveScore()) : null;
+        int type=SingleBaseConfig.getBaseConfig().getType();
+        if(type == 0){
+            return null;
+        }else if (type == 1 || type == 3){ // RGB+NIR活体:2   RGB+NIR+Depth活体:4
+            return new BDLiveConfig(SingleBaseConfig.getBaseConfig().getRgbLiveScore() ,
+                    SingleBaseConfig.getBaseConfig().getNirLiveScore() ,
+                    SingleBaseConfig.getBaseConfig().getDepthLiveScore(),false);
+        } else if (type == 2 || type == 4){
+            return new BDLiveConfig(SingleBaseConfig.getBaseConfig().getRgbLiveScore() ,
+                    SingleBaseConfig.getBaseConfig().getNirLiveScore() ,
+                    SingleBaseConfig.getBaseConfig().getDepthLiveScore(),true);
+        }
+
+        return null;
     }
 
     private BDQualityConfig getBDQualityConfig(){