Prechádzať zdrojové kódy

提交类型 完成人脸识别操作
提交内容 完成人脸识别操作

Bitliker 7 rokov pred
rodič
commit
e251dce132

+ 3 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -22,7 +22,7 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.PopupWindow;
 
-import com.baidu.idl.face.platform.ui.FaceVeriftyActivity;
+import com.baidu.idl.face.platform.ui.FaceVeriftyLiveActivity;
 import com.common.data.DateFormatUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
@@ -343,7 +343,7 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
                         requestPermissions(permissions, PermissionUtil.DEFAULT_REQUEST);
                     } else {
                         if (presenter.isCanPaly()) {
-                            startActivityForResult(new Intent(ct, FaceVeriftyActivity.class), 0x223);
+                            startActivityForResult(new Intent(ct, FaceVeriftyLiveActivity.class), 0x223);
                         }
                     }
                 } else {
@@ -362,7 +362,7 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
                 ToastUtil.showToast(ct, com.uas.appworks.R.string.not_camera_permission);
             } else {
                 if (presenter.isCanPaly()) {
-                    startActivityForResult(new Intent(ct, FaceVeriftyActivity.class), 0x223);
+                    startActivityForResult(new Intent(ct, FaceVeriftyLiveActivity.class), 0x223);
                 }
             }
         }

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Mon Jun 25 19:13:21 CST 2018
+#Wed Jun 27 10:29:32 CST 2018
 debugName=502
-versionName=635
+versionName=637
 debugCode=502
-versionCode=176
+versionCode=178

+ 4 - 1
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -787,7 +787,7 @@ public class ViewUtil {
   
 
     private static boolean selectCompanyItems(int which, CharSequence text, String phone, String password) {
-        LogUtil.d("AppInfo","text;"+text+"phone:"+phone+" password:"+password);
+        LogUtil.i("AppInfo","text;"+text+"phone:"+phone+" password:"+password);
         if (!CommonUtil.isNetWorkConnected(ct)) {
             ToastUtil.showToast(ct, R.string.networks_out);
             return true;
@@ -1162,6 +1162,9 @@ public class ViewUtil {
     public static void LoginERPTask(String url, String enuu, String master, String username, String password) {
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_progress_erp));
         progressDialog.show();
+//        if (BaseConfig.isDebug()){
+////            url=CommonUtil.getAppBaseUrl(MyApplication.getInstance());
+////        }
         String loginToken = CommonUtil.getSharedPreferences(ct, Constants.CACHE.ACCOUNT_CENTER_TOKEN);
         HttpRequest.getInstance().sendRequest(url,
                 new HttpParams.Builder()

+ 1 - 1
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -106,7 +106,7 @@ public class CommonUtil {
         }
         String baseUrl = getSharedPreferences(ct, "erp_baseurl");
 //        if (BaseConfig.isDebug()){
-//            baseUrl="http://192.168.253.35:8080/ERP/";
+//            baseUrl="http://192.168.253.41:8080/ERP/";
 //        }
 //        baseUrl = "http://192.168.253.41:8080/ERP/";
 

+ 1 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java

@@ -1562,7 +1562,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
 //                    iApproval.showToast("明细行有必填字段未填写");
                     //将明细表必填项添加出来
                     return false;
-                } else if (!param.isEmpty()) {
+                } else if (!param.isEmpty()&&param.size()>1) {
                     params.add(param);
                 }
             }

+ 7 - 4
app_modular/faceplatform-ui/src/main/AndroidManifest.xml

@@ -1,12 +1,15 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.baidu.idl.face.platform.ui">
 
-    <application android:label="@string/app_name" >
+    <application android:label="@string/app_name">
 
 
-
-        <activity android:name=".FaceVeriftyActivity"
-            android:label="刷脸打卡"/>
+        <activity
+            android:name=".FaceVeriftyLiveActivity"
+            android:label="刷脸打卡" />
+        <activity
+            android:name=".FaceVeriftyActivity"
+            android:label="刷脸打卡" />
     </application>
 
 </manifest>

+ 60 - 116
app_modular/faceplatform-ui/src/main/java/com/baidu/idl/face/platform/ui/FaceDetectActivity.java

@@ -5,8 +5,6 @@ package com.baidu.idl.face.platform.ui;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
 import android.graphics.PixelFormat;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -20,12 +18,8 @@ import android.view.Gravity;
 import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
-import android.view.View;
 import android.view.WindowManager;
 import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.baidu.aip.face.stat.Ast;
@@ -38,9 +32,7 @@ import com.baidu.idl.face.platform.ui.utils.CameraUtils;
 import com.baidu.idl.face.platform.ui.utils.VolumeUtils;
 import com.baidu.idl.face.platform.ui.widget.FaceDetectRoundView;
 import com.baidu.idl.face.platform.utils.APIUtils;
-import com.baidu.idl.face.platform.utils.Base64Utils;
 import com.baidu.idl.face.platform.utils.CameraPreviewUtils;
-import com.common.LogUtil;
 import com.modular.apputils.activity.BaseNetActivity;
 
 import java.util.HashMap;
@@ -59,17 +51,13 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
 
 
     // View
-    protected View mRootView;
     protected FrameLayout mFrameLayout;
     protected SurfaceView mSurfaceView;
     protected SurfaceHolder mSurfaceHolder;
-    protected ImageView mCloseView;
-    protected ImageView mSoundView;
-    protected ImageView mSuccessView;
     protected TextView mTipsTopView;
-    protected TextView mTipsBottomView;
     protected FaceDetectRoundView mFaceDetectRoundView;
-    protected LinearLayout mImageLayout;
+
+
     // 人脸信息
     protected FaceConfig mFaceConfig;
     protected IDetectStrategy mIDetectStrategy;
@@ -97,13 +85,16 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
 
     @Override
     protected int getLayoutId() {
-        return R.layout.activity_face_detect_v3100;
+        return R.layout.activity_face_verifty;
     }
 
     @Override
-    protected void init() throws Exception {
+    public void preOnCreacte() {
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
         Ast.getInstance().init(getApplicationContext(), "3.1.0.0", "facenormal");
+    }
+    @Override
+    protected void init() throws Exception {
         DisplayMetrics dm = new DisplayMetrics();
         Display display = this.getWindowManager().getDefaultDisplay();
         display.getMetrics(dm);
@@ -116,8 +107,10 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
         int vol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
         mIsEnableSound = vol > 0 ? mFaceConfig.isSound : false;
 
-        mRootView = this.findViewById(R.id.detect_root_layout);
-        mFrameLayout = (FrameLayout) mRootView.findViewById(R.id.detect_surface_layout);
+        mFrameLayout =findViewById(R.id.liveness_surface_layout);
+        mFaceDetectRoundView = findViewById(R.id.liveness_face_round);
+        mTipsTopView = findViewById(R.id.liveness_top_tips);
+
 
         mSurfaceView = new SurfaceView(this);
         mSurfaceHolder = mSurfaceView.getHolder();
@@ -135,33 +128,6 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
         mSurfaceView.setLayoutParams(cameraFL);
         mFrameLayout.addView(mSurfaceView);
 
-        mRootView.findViewById(R.id.detect_close).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                onBackPressed();
-            }
-        });
-
-        mFaceDetectRoundView = (FaceDetectRoundView) mRootView.findViewById(R.id.detect_face_round);
-        mCloseView = (ImageView) mRootView.findViewById(R.id.detect_close);
-        mSoundView = (ImageView) mRootView.findViewById(R.id.detect_sound);
-        mSoundView.setImageResource(mIsEnableSound ?
-                R.mipmap.ic_enable_sound_ext : R.mipmap.ic_disable_sound_ext);
-        mSoundView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                mIsEnableSound = !mIsEnableSound;
-                mSoundView.setImageResource(mIsEnableSound ?
-                        R.mipmap.ic_enable_sound_ext : R.mipmap.ic_disable_sound_ext);
-                if (mIDetectStrategy != null) {
-                    mIDetectStrategy.setDetectStrategySoundEnable(mIsEnableSound);
-                }
-            }
-        });
-        mTipsTopView = (TextView) mRootView.findViewById(R.id.detect_top_tips);
-        mTipsBottomView = (TextView) mRootView.findViewById(R.id.detect_bottom_tips);
-        mSuccessView = (ImageView) mRootView.findViewById(R.id.detect_success_image);
-        mImageLayout = (LinearLayout) mRootView.findViewById(R.id.detect_result_image_layout);
 
     }
 
@@ -198,16 +164,15 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
     @Override
     public void volumeChanged() {
         try {
-            AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
-            if (am != null) {
-                int cv = am.getStreamVolume(AudioManager.STREAM_MUSIC);
-                mIsEnableSound = cv > 0;
-                mSoundView.setImageResource(mIsEnableSound
-                        ? R.mipmap.ic_enable_sound_ext : R.mipmap.ic_disable_sound_ext);
-                if (mIDetectStrategy != null) {
-                    mIDetectStrategy.setDetectStrategySoundEnable(mIsEnableSound);
-                }
-            }
+//            AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
+//            if (am != null) {
+//                int cv = am.getStreamVolume(AudioManager.STREAM_MUSIC);
+//                mIsEnableSound = cv > 0;
+//
+//                if (mIDetectStrategy != null) {
+//                    mIDetectStrategy.setDetectStrategySoundEnable(mIsEnableSound);
+//                }
+//            }
         } catch (Exception ex) {
             ex.printStackTrace();
         }
@@ -388,26 +353,21 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
         if (mIsCompletion) {
             return;
         }
-        initIDetectStrategy();
-        if (mIDetectStrategy != null) {
-            mIDetectStrategy.detectStrategy(data);
-        }
-    }
-
-    private void initIDetectStrategy() {
-        if (mIDetectStrategy == null) {
+        if (mIDetectStrategy == null && mFaceDetectRoundView != null && mFaceDetectRoundView.getRound() > 0) {
             mIDetectStrategy = FaceSDKManager.getInstance().getDetectStrategyModule();
-        } else {
-            mIDetectStrategy.reset();
-        }
-        if (mFaceDetectRoundView != null && mFaceDetectRoundView.getRound() > 0) {
             mIDetectStrategy.setPreviewDegree(mPreviewDegree);
             mIDetectStrategy.setDetectStrategySoundEnable(mIsEnableSound);
+
             Rect detectRect = FaceDetectRoundView.getPreviewDetectRect(mDisplayWidth, mPreviewHight, mPreviewWidth);
             mIDetectStrategy.setDetectStrategyConfig(mPreviewRect, detectRect, this);
         }
+        if (mIDetectStrategy != null) {
+            mIDetectStrategy.detectStrategy(data);
+        }
     }
 
+
+
     @Override
     public void onError(int error, Camera camera) {
     }
@@ -415,7 +375,6 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
     @Override
     public void onDetectCompletion(FaceStatusEnum status, String message,
                                    HashMap<String, String> base64ImageMap) {
-        LogUtil.i("gong", "onDetectCompletion=" + message);
         if (mIsCompletion) {
             return;
         }
@@ -430,66 +389,54 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
     private void onRefreshView(FaceStatusEnum status, String message) {
         switch (status) {
             case OK:
+            case Liveness_Completion:
                 onRefreshTipsView(false, message);
-                mTipsBottomView.setText("");
-                mFaceDetectRoundView.processDrawState(false);
-                onRefreshSuccessView(true);
+                mFaceDetectRoundView.onRefreshSuccessView(true);
                 break;
             case Detect_PitchOutOfUpMaxRange:
             case Detect_PitchOutOfDownMaxRange:
             case Detect_PitchOutOfLeftMaxRange:
             case Detect_PitchOutOfRightMaxRange:
-                onRefreshTipsView(true, message);
-                mTipsBottomView.setText(message);
-                mFaceDetectRoundView.processDrawState(true);
-                onRefreshSuccessView(false);
+                onRefreshTipsView(false, message);
+                mFaceDetectRoundView.onRefreshSuccessView(false);
+                break;
+            case Error_LivenessTimeout:
+            case Error_Timeout:
+            case Error_DetectTimeout:
+                errorTimeOut();
+                onRefreshTipsView(false, message);
                 break;
             default:
                 onRefreshTipsView(false, message);
-                mTipsBottomView.setText("");
-                mFaceDetectRoundView.processDrawState(true);
-                onRefreshSuccessView(false);
+                mFaceDetectRoundView.onRefreshSuccessView(false);
         }
     }
 
     private void onRefreshTipsView(boolean isAlert, String message) {
-        if (isAlert) {
-            if (mTipsIcon == null) {
-                mTipsIcon = getResources().getDrawable(R.mipmap.ic_warning);
-                mTipsIcon.setBounds(0, 0, (int) (mTipsIcon.getMinimumWidth() * 0.7f),
-                        (int) (mTipsIcon.getMinimumHeight() * 0.7f));
-                mTipsTopView.setCompoundDrawablePadding(15);
-            }
-            mTipsTopView.setBackgroundResource(R.drawable.bg_tips);
-            mTipsTopView.setText(R.string.detect_standard);
-            mTipsTopView.setCompoundDrawables(mTipsIcon, null, null, null);
-        } else {
-            mTipsTopView.setBackgroundResource(R.drawable.bg_tips_no);
-            mTipsTopView.setCompoundDrawables(null, null, null, null);
-            if (!TextUtils.isEmpty(message)) {
-                mTipsTopView.setText(message);
-            }
-        }
+        mFaceDetectRoundView.onRefreshTipsView(message);
+//        if (isAlert) {
+//            if (mTipsIcon == null) {
+//                mTipsIcon = getResources().getDrawable(R.mipmap.ic_warning);
+//                mTipsIcon.setBounds(0, 0, (int) (mTipsIcon.getMinimumWidth() * 0.7f),
+//                        (int) (mTipsIcon.getMinimumHeight() * 0.7f));
+//                mTipsTopView.setCompoundDrawablePadding(15);
+//            }
+//            mTipsTopView.setBackgroundResource(R.drawable.bg_tips);
+//            mTipsTopView.setText(R.string.detect_standard);
+//            mTipsTopView.setCompoundDrawables(mTipsIcon, null, null, null);
+//        } else {
+//            mTipsTopView.setBackgroundResource(R.drawable.bg_tips_no);
+//            mTipsTopView.setCompoundDrawables(null, null, null, null);
+//            if (!TextUtils.isEmpty(message)) {
+//                mTipsTopView.setText(message);
+//            }
+//        }
     }
 
-    private void onRefreshSuccessView(boolean isShow) {
-        if (mSuccessView.getTag() == null) {
-            Rect rect = mFaceDetectRoundView.getFaceRoundRect();
-            RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) mSuccessView.getLayoutParams();
-            rlp.setMargins(
-                    rect.centerX() - (mSuccessView.getWidth() / 2),
-                    rect.top - (mSuccessView.getHeight() / 2),
-                    0,
-                    0);
-            mSuccessView.setLayoutParams(rlp);
-            mSuccessView.setTag("setlayout");
-        }
-        mSuccessView.setVisibility(isShow ? View.VISIBLE : View.INVISIBLE);
-    }
+
 
     private void saveImage(HashMap<String, String> imageMap) {
         Set<Map.Entry<String, String>> sets = imageMap.entrySet();
-        mImageLayout.removeAllViews();
         for (Map.Entry<String, String> entry : sets) {
             String bmpBase64 = entry.getValue();
             if (!TextUtils.isEmpty(bmpBase64)) {
@@ -499,22 +446,19 @@ public abstract class FaceDetectActivity extends BaseNetActivity implements
         }
     }
 
-    private static Bitmap base64ToBitmap(String base64Data) {
-        byte[] bytes = Base64Utils.decode(base64Data, Base64Utils.NO_WRAP);
-        return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
-    }
 
     /**
      * 重新开启
      */
     public void reSetDetect() {
-        //TODO 重新验证
         mIsCompletion = false;
-        initIDetectStrategy();
+        mIDetectStrategy = null;
+        startPreview();
     }
 
     public abstract void saveBmpBase64Ok(String bmpBase64);
 
+    public abstract void errorTimeOut();
 
 }
 

+ 2 - 22
app_modular/faceplatform-ui/src/main/java/com/baidu/idl/face/platform/ui/FaceLivenessActivity.java

@@ -73,7 +73,6 @@ public abstract class FaceLivenessActivity extends BaseNetActivity implements
     protected Drawable mTipsIcon;
     // 状态标识
     protected volatile boolean mIsEnableSound = true;
-    protected HashMap<String, String> mBase64ImageMap = new HashMap<String, String>();
     protected boolean mIsCreateSurface = false;
     protected boolean mIsCompletion = false;
     // 相机
@@ -134,9 +133,7 @@ public abstract class FaceLivenessActivity extends BaseNetActivity implements
         mSurfaceView.setLayoutParams(cameraFL);
         mFrameLayout.addView(mSurfaceView);
 
-        if (mBase64ImageMap != null) {
-            mBase64ImageMap.clear();
-        }
+
     }
 
 
@@ -396,7 +393,6 @@ public abstract class FaceLivenessActivity extends BaseNetActivity implements
         }
 
         onRefreshView(status, message);
-
         if (status == FaceStatusEnum.OK) {
             Ast.getInstance().faceHit();
             mIsCompletion = true;
@@ -445,21 +441,8 @@ public abstract class FaceLivenessActivity extends BaseNetActivity implements
 
     //提示信息
     private void onRefreshTipsView(boolean isAlert, String message) {
-        if (mTipsTopView.getTag() == null) {
-//            Rect rect = mFaceDetectRoundView.getFaceRoundRect();
-//            RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) mTipsTopView.getLayoutParams();
-//            (rect.right-rect.left)/2
-//
-//            rlp.setMargins(
-//                    rect.centerX() - (mSuccessView.getWidth() / 2),
-//                    rect.top - (mSuccessView.getHeight() / 2),
-//                    0,
-//                    0);
-//            mSuccessView.setLayoutParams(rlp);
-//            mSuccessView.setTag("setlayout");
-        }
-
         mFaceDetectRoundView.onRefreshTipsView(message);
+
         if (isAlert) {
             if (mTipsIcon == null) {
                 mTipsIcon = getResources().getDrawable(R.mipmap.ic_warning);
@@ -501,9 +484,6 @@ public abstract class FaceLivenessActivity extends BaseNetActivity implements
      */
     public void reSetDetect() {
         mIsCompletion = false;
-        if (mBase64ImageMap != null) {
-            mBase64ImageMap.clear();
-        }
         mILivenessStrategy = null;
         startPreview();
     }

+ 3 - 6
app_modular/faceplatform-ui/src/main/java/com/baidu/idl/face/platform/ui/FaceVeriftyActivity.java

@@ -19,8 +19,7 @@ import com.me.network.app.http.Method;
 import com.me.network.app.http.rx.Result2Listener;
 import com.me.network.app.http.rx.ResultSubscriber;
 
-public class FaceVeriftyActivity extends FaceLivenessActivity {
-
+public class FaceVeriftyActivity extends  FaceDetectActivity{
 
     @Override
     protected String getBaseUrl() {
@@ -139,7 +138,7 @@ public class FaceVeriftyActivity extends FaceLivenessActivity {
                         .header("Content-Type", "application/json")
                         .add("image", faceBase64)
                         .add("image_type", "BASE64")
-                        .add("liveness_control", "HIGH")
+                        .add("liveness_control", "HIGH")//NORMAL
                         .add("user_id", user_id)
                         .isDebug(true)
                         .add("group_id_list", group_id_list)
@@ -209,7 +208,7 @@ public class FaceVeriftyActivity extends FaceLivenessActivity {
                         .add("image", faceBase64)
                         .add("image_type", "BASE64")
                         .add("quality_control", "HIGH")
-                        .add("liveness_control", "HIGH")
+                        .add("liveness_control", "NORMAL")
                         .add("user_id", user_id)
                         .add("user_info", user_info)
                         .isDebug(true)
@@ -241,6 +240,4 @@ public class FaceVeriftyActivity extends FaceLivenessActivity {
             }
         });
     }
-
-
 }

+ 246 - 0
app_modular/faceplatform-ui/src/main/java/com/baidu/idl/face/platform/ui/FaceVeriftyLiveActivity.java

@@ -0,0 +1,246 @@
+package com.baidu.idl.face.platform.ui;
+
+import android.text.TextUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baidu.idl.face.platform.ui.config.FaceConfig;
+import com.baidu.idl.face.platform.ui.model.FaceVerify;
+import com.baidu.idl.face.platform.ui.widget.VeriftyDialog;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.app.MyApplication;
+import com.core.model.User;
+import com.core.utils.CommonUtil;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.Result2Listener;
+import com.me.network.app.http.rx.ResultSubscriber;
+
+public class FaceVeriftyLiveActivity extends FaceLivenessActivity {
+
+
+    @Override
+    protected String getBaseUrl() {
+        return "https://aip.baidubce.com/";
+    }
+
+
+    //成功获取到Base64数据
+    @Override
+    public void saveBmpBase64Ok(String bmpBase64) {
+        String master = CommonUtil.getEnuu(ct);
+        String imid = MyApplication.getInstance().getLoginUserId();
+        verify(bmpBase64, master, imid);
+    }
+
+    @Override
+    public void errorTimeOut() {
+        showErrorDialog(getString(R.string.detect_timeout));
+    }
+
+
+    private void showRegisterDialog(final String faceBase64, final String group_id_list, final String user_id) {
+        new VeriftyDialog.Builder(this)
+                .setCanceledOnTouchOutside(false)
+                .setContent("您未录入人脸照片,点击\"确认\"录入系统")
+                .build(new VeriftyDialog.OnDialogClickListener() {
+                    @Override
+                    public void result(boolean clickSure) {
+                        if (clickSure) {
+                            String company = CommonUtil.getSharedPreferences(ct, "erp_commpany");
+                            String master = CommonUtil.getSharedPreferences(ct, "Master_ch");
+                            String name = CommonUtil.getName();
+                            User user = MyApplication.getInstance().mLoginUser;
+                            String phone = null;
+                            if (user != null) {
+                                phone = user.getTelephone();
+                            }
+                            String userInfo = company + "_" + master + "_" + phone + "_" + name;//公司名_帐套名_电话_姓名
+                            register(faceBase64, group_id_list, user_id, userInfo);
+                        } else {
+                            setResult(0);
+                            finish();
+                        }
+                    }
+                });
+
+    }
+
+    /**
+     * 验证后返回弹出窗口
+     *
+     * @param message
+     */
+    private void showErrorRegister(final boolean isPass, final String message) {
+        new VeriftyDialog.Builder(this)
+                .setCanceledOnTouchOutside(false)
+                .setContent(message)
+                .setShowCancel(false)
+                .build(new VeriftyDialog.OnDialogClickListener() {
+                    @Override
+                    public void result(boolean clickSure) {
+                        if (isPass) {
+                            setResult(clickSure ? RESULT_OK : 0);
+                            finish();
+                        } else {
+                            setResult(0);
+                            finish();
+                        }
+                    }
+                });
+
+    }
+
+
+    //验证和注册错误
+    private void showErrorDialog(String result) {
+        String message = "";
+        if (result.contains("liveness check fail")) {
+            message = "不能拿照片骗我哦";
+        } else {
+            message = result;
+        }
+        new VeriftyDialog.Builder(this)
+                .setCanceledOnTouchOutside(false)
+                .setContent(message)
+                .setSureText("再试一次")
+                .setShowCancel(true)
+                .build(new VeriftyDialog.OnDialogClickListener() {
+                    @Override
+                    public void result(boolean clickSure) {
+                        if (clickSure) {
+                            reSetDetect();
+                        } else {
+                            finish();
+                        }
+                    }
+                });
+    }
+
+    /**
+     * 校验身份
+     *
+     * @param faceBase64    脸部信息
+     * @param group_id_list 组Id
+     * @param user_id       用户Id
+     */
+    private void verify(final String faceBase64, final String group_id_list, final String user_id) {
+        showProgress();
+        FaceConfig.loadToken(new FaceConfig.FaceTokenListener() {
+            @Override
+            public void callBack(String accessToken) {
+                LogUtil.i("gong", "accessToken=" + accessToken);
+                httpClient.Api().send(new HttpClient.Builder()
+                        .url("rest/2.0/face/v3/search")
+                        .add("access_token", accessToken)
+                        .header("Content-Type", "application/json")
+                        .add("image", faceBase64)
+                        .add("image_type", "BASE64")
+                        .add("liveness_control", "HIGH")
+                        .add("user_id", user_id)
+                        .isDebug(true)
+                        .add("group_id_list", group_id_list)
+                        .method(Method.POST).build(), new ResultSubscriber<>(new Result2Listener<Object>() {
+                    @Override
+                    public void onResponse(Object o) {
+                        LogUtil.i("gong", "verify onResponse=" + o.toString());
+                        try {
+                            JSONObject object = JSON.parseObject(o.toString());
+                            String error_msg = JSONUtil.getText(object, "error_msg");
+                            if (TextUtils.isEmpty(error_msg) || error_msg.equals("SUCCESS")) {
+                                JSONObject result = JSONUtil.getJSONObject(object, "result");
+                                JSONArray user_list = JSONUtil.getJSONArray(result, "user_list");
+                                if (ListUtils.isEmpty(user_list)) {
+                                    //没有注册时候
+                                    showRegisterDialog(faceBase64, group_id_list, user_id);
+                                } else {
+                                    FaceVerify mFaceVerify = new FaceVerify();
+                                    for (int i = 0; i < user_list.size(); i++) {
+                                        JSONObject userObject = user_list.getJSONObject(i);
+                                        float score = JSONUtil.getFloat(userObject, "score");
+                                        if (mFaceVerify.getScore() < score) {
+                                            mFaceVerify.setScore(score);
+                                            mFaceVerify.setUserId(JSONUtil.getText(userObject, "user_id"));
+                                            mFaceVerify.setUserInfo(JSONUtil.getText(userObject, "user_info"));
+                                            mFaceVerify.setGroupId(JSONUtil.getText(userObject, "group_id"));
+                                            if (mFaceVerify.isPass()) {
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    if (mFaceVerify.isPass()) {
+                                        setResult(RESULT_OK);
+                                        finish();
+                                    } else {
+                                        showErrorDialog("抱歉,没认出你哦");
+                                    }
+                                }
+                            } else {
+                                showErrorDialog(error_msg);
+                            }
+                        } catch (Exception e) {
+                        }
+                        dismissProgress();
+                    }
+
+                    @Override
+                    public void onFailure(Object t) {
+                        dismissProgress();
+                        LogUtil.i("gong", "verify onFailure=" + t.toString());
+                    }
+                }));
+            }
+        });
+    }
+
+    private void register(final String faceBase64, final String group_id, final String user_id, final String user_info) {
+        showProgress();
+        FaceConfig.loadToken(new FaceConfig.FaceTokenListener() {
+            @Override
+            public void callBack(String accessToken) {
+                LogUtil.i("gong", "accessToken=" + accessToken);
+                httpClient.Api().send(new HttpClient.Builder()
+                        .url("rest/2.0/face/v3/faceset/user/add")
+                        .add("access_token", accessToken)
+                        .header("Content-Type", "application/json")
+                        .add("image", faceBase64)
+                        .add("image_type", "BASE64")
+                        .add("quality_control", "HIGH")
+                        .add("liveness_control", "HIGH")
+                        .add("user_id", user_id)
+                        .add("user_info", user_info)
+                        .isDebug(true)
+                        .add("group_id", group_id)
+                        .method(Method.POST).build(), new ResultSubscriber<>(new Result2Listener<Object>() {
+                    @Override
+                    public void onResponse(Object o) {
+                        LogUtil.i("gong", "verify onResponse=" + o.toString());
+                        try {
+                            JSONObject object = JSON.parseObject(o.toString());
+                            String error_msg = JSONUtil.getText(object, "error_msg");
+                            if (TextUtils.isEmpty(error_msg) || error_msg.equals("SUCCESS")) {
+                                setResult(RESULT_OK);
+                                finish();
+                            } else {
+                                showErrorDialog(error_msg);
+                            }
+                        } catch (Exception e) {
+                        }
+                        dismissProgress();
+                    }
+
+                    @Override
+                    public void onFailure(Object t) {
+                        dismissProgress();
+                        LogUtil.i("gong", "verify onFailure=" + t.toString());
+                    }
+                }));
+            }
+        });
+    }
+
+
+}