From 4a8ff39b0fab0627ef8f7459587d514cc01c3676 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 20 十月 2025 10:52:02 +0800
Subject: [PATCH] Merge branch 'wuhuyancao' of http://139.186.142.91:10010/r/productDev/dmvisit into wuhuyancao

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java |  604 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 604 insertions(+), 0 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
new file mode 100644
index 0000000..0c5ee94
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
@@ -0,0 +1,604 @@
+package com.doumee.keyCabinet.ui.face;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.alibaba.fastjson.JSON;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.DataSource;
+import com.bumptech.glide.load.engine.GlideException;
+import com.bumptech.glide.request.RequestListener;
+import com.bumptech.glide.request.target.SimpleTarget;
+import com.bumptech.glide.request.target.Target;
+import com.bumptech.glide.request.transition.Transition;
+import com.doumee.keyCabinet.R;
+import com.doumee.keyCabinet.base.MyBaseActivity;
+import com.doumee.keyCabinet.bean.FaceUserBean;
+import com.doumee.keyCabinet.databinding.AddFaceActivityBinding;
+import com.doumee.keyCabinet.ui.face.adapter.FaceRcvAdapter;
+import com.doumee.keyCabinet.ui.view.TipDialog;
+import com.doumee.keyCabinet.utils.face.FaceUtils;
+import com.example.datalibrary.api.FaceApi;
+import com.example.datalibrary.listener.DBLoadListener;
+import com.example.datalibrary.manager.FaceSDKManager;
+import com.example.datalibrary.model.KeyboardsUtils;
+import com.example.datalibrary.model.User;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import dagger.hilt.android.AndroidEntryPoint;
+import timber.log.Timber;
+
+@AndroidEntryPoint
+public class AddFaceActivity extends MyBaseActivity<AddFaceVM, AddFaceActivityBinding>  implements View.OnClickListener,
+        CompoundButton.OnCheckedChangeListener, TipDialog.OnTipDialogClickListener {
+    // view
+    private RecyclerView mRecyclerUserManager;
+    private ImageView mImageIconSearch;        // title涓殑鎼滅储鎸夐挳
+    private RelativeLayout mRelativeStandard; // title涓殑甯歌甯冨眬
+    private LinearLayout mLinearSearch;       // title涓殑鎼滅储甯冨眬
+    private boolean isCheck = false;            // title鑿滃崟鐐瑰嚮鐘舵��
+    private TextView mTextCancel;             // title涓殑鍙栨秷鎸夐挳
+    private RelativeLayout mRelativeEmpty;   // 鏆傛棤鍐呭
+    private TextView mTextEmpty;
+    private EditText mEditTitleSearch;
+
+    private RelativeLayout mRelativeDelete;   // 瀵煎叆浜鸿劯甯冨眬
+    private CheckBox mCheckAll;               // 鍏ㄩ��
+    private TextView mTextDelete;             // 瀵煎叆浜鸿劯
+    private TextView textAll;
+    private TipDialog mTipDialog;
+
+    private Context mContext;
+    private FaceRcvAdapter mFaceUserAdapter;
+    private List<FaceUserBean> mUserInfoList;
+    private int mSelectCount;                // 閫変腑鐨勪釜鏁�
+    private boolean mIsLongClick;           // 鏄惁鏄暱鎸�
+
+    private ProgressBar progressBar;
+    private TextView progressText;
+    private View progressGroup;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.add_face_activity;
+    }
+
+    @Override
+    public void initView(@Nullable Bundle savedInstanceState) {
+        isAddCountTimer = false;
+        normalConfig();
+        getDB().setModel(getVM());
+        mContext = this;
+        initView();
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+        getVM().getDatasLD().observe(this, new Observer<List<FaceUserBean>>() {
+            @Override
+            public void onChanged(List<FaceUserBean> beans) {
+                mUserInfoList = beans;
+                if (beans == null || beans.size() == 0) {
+                    mFaceUserAdapter.refreshData(new ArrayList<>());
+                    mFaceUserAdapter.notifyDataSetChanged();
+                    mRelativeEmpty.setVisibility(View.VISIBLE);
+                    mRecyclerUserManager.setVisibility(View.GONE);
+                    // 鏄剧ず鏃犲唴瀹瑰垽鏂�
+                    if (mEditTitleSearch.getText().length()>0) {
+                        mTextEmpty.setText(getString(R.string.addface_zwnr));
+                        updateDeleteUI(false);
+                    } else {
+                        mTextEmpty.setText(getString(R.string.addface_tip1));
+                        mRelativeDelete.setVisibility(View.GONE);
+                    }
+                    return;
+                }
+
+                // 鎭㈠榛樿鐘舵��
+                resetDeleteData();
+                mRelativeEmpty.setVisibility(View.GONE);
+                mRecyclerUserManager.setVisibility(View.VISIBLE);
+                mFaceUserAdapter.refreshData(mUserInfoList);
+                mFaceUserAdapter.notifyDataSetChanged();
+            }
+        });
+        getVM().getDatas();
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        handler.removeCallbacksAndMessages(null);
+        handler = null;
+    }
+
+    private Handler handler = new Handler(){
+        @Override
+        public void handleMessage(@NonNull Message msg) {
+            if(!isFinishing()){
+                switch (msg.what){
+                    case 0:
+                        if(finishCount<selectBeans.size()){
+                            datasToBitmap(selectBeans.get(finishCount));
+                        }else {
+                            //缁撴潫
+                            loadListener.onComplete(new ArrayList<>(),finishCount);
+                            if(failCount>0){
+                                Toast.makeText(mContext, String.format(getString(R.string.addface_tip2),failCount,failStr.toString()), Toast.LENGTH_LONG).show();
+                            }
+                        }
+                        break;
+                }
+            }
+        }
+    };
+    private List<FaceUserBean> selectBeans = new ArrayList<>();
+    private int finishCount = 0;
+    private int failCount = 0;
+    private StringBuilder failStr = new StringBuilder();
+    private void datasToBitmap(FaceUserBean bean){
+        // 浣跨敤 Glide 鍔犺浇鍥剧墖骞惰浆鎹负 Bitmap
+        Glide.with(this)
+                .asBitmap()
+                .load(bean.getFaceImg())
+                .addListener(new RequestListener<Bitmap>() {
+                    @Override
+                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
+                        //鍔犺浇澶辫触
+                        Timber.d("====>鍥剧墖涓嬭浇澶辫触%s",bean.getMemberName());
+                        failCount++;
+                        if(failStr.length()>0){
+                            failStr.append(",");
+                        }
+                        failStr.append(bean.getMemberName());
+                        finishCount++;
+                        loadListener.onLoad(finishCount, mSelectCount, finishCount * 1.0f / mSelectCount);
+                        if (finishCount == mSelectCount) {
+                            loadListener.onComplete(new ArrayList<>(), finishCount);
+                            if(failCount>0){
+                                Toast.makeText(mContext, String.format(getString(R.string.addface_tip2),failCount,failStr.toString()), Toast.LENGTH_LONG).show();
+                            }
+                        }
+                        handler.sendEmptyMessage(0);
+                        return false;
+                    }
+
+                    @Override
+                    public boolean onResourceReady(Bitmap bitmap, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
+                        boolean fail = true;
+                        if (bitmap != null) {
+                            byte[] secondFeature = new byte[512];
+                            // 鎻愬彇鐗瑰緛鍊�
+                            float ret = FaceSDKManager.getInstance().personDetect(bitmap, secondFeature,
+                                    FaceUtils.getInstance().getBDFaceCheckConfig(), AddFaceActivity.this);
+                            // 鎻愬彇鐗瑰緛鍊�
+                            if (ret != -1) {
+                                //鏈変汉鑴�
+                                // 鍒ゆ柇璐ㄩ噺妫�娴嬶紝閽堝妯$硦搴︺�侀伄鎸°�佽搴�
+                                if (ret == 128) {
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", bean.getMemberName());
+                                    //鎻掑叆鏁版嵁搴�
+                                    User user = FaceApi.getInstance().getByUserId(bean.getGroupId(), bean.getMemberId());
+                                    boolean isSave = false;
+                                    if (user == null) {
+                                        //鏂板
+                                        isSave = FaceApi.getInstance().registerUserIntoDBmanager(bean.getGroupId(),
+                                                bean.getMemberId(), bean.getMemberName(), bean.getFaceImg(), JSON.toJSONString(bean), secondFeature);
+                                    } else {
+                                        //鏇存柊
+                                        user.setUserName(bean.getMemberName());
+                                        user.setImageName(bean.getFaceImg());
+                                        user.setFeature(secondFeature);
+                                        isSave = FaceApi.getInstance().userUpdateOnly(user);
+                                    }
+
+                                    if (isSave) {
+                                        //淇濆瓨鎴愬姛
+                                        Timber.d("====>褰曞叆鎴愬姛%s",bean.getMemberName());
+                                        fail = false;
+                                    } else {
+                                        Timber.d("====>褰曞叆澶辫触%s",bean.getMemberName());
+                                    }
+                                } else {
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
+                                }
+                            } else {
+                                // 涓婁紶鍥剧墖鏃犱汉鑴搁殣钘�
+                                Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
+                            }
+
+                        }
+                        if(fail){
+                            failCount++;
+                            if(failStr.length()>0){
+                                failStr.append(",");
+                            }
+                            failStr.append(bean.getMemberName());
+                        }else {
+                            bean.setChecked(false);
+                        }
+                        finishCount++;
+                        loadListener.onLoad(finishCount, mSelectCount, finishCount * 1.0f / mSelectCount);
+                        if (finishCount == mSelectCount) {
+                            loadListener.onComplete(new ArrayList<>(), finishCount);
+                            if(failCount>0){
+                                Toast.makeText(mContext, String.format(getString(R.string.addface_tip2),failCount,failStr.toString()), Toast.LENGTH_LONG).show();
+                            }
+                        }
+                        handler.sendEmptyMessage(0);
+                        return false;
+                    }
+                })
+                .into(new SimpleTarget<Bitmap>() {
+
+                    @Override
+                    public void onResourceReady(@NonNull Bitmap bitmap, @Nullable Transition<? super Bitmap> transition) {
+
+                    }
+                });
+                /*FrescoUtils.loadImage(this, bean.getFaceUrl(), 0, 0, new IResult<Bitmap>() {
+                    @Override
+                    public void onResult(Bitmap bitmap) {
+                        if(handler.hasMessages(0)){
+                            handler.removeMessages(0);
+                        }
+                        boolean fail = true;
+                        if (bitmap != null) {
+                            byte[] secondFeature = new byte[512];
+                            // 鎻愬彇鐗瑰緛鍊�
+                            float ret = FaceSDKManager.getInstance().personDetect(bitmap, secondFeature,
+                                    FaceUtils.getInstance().getBDFaceCheckConfig(), AddFaceActivity.this);
+                            if (bitmap != null && !bitmap.isRecycled()) {
+                                //閿�姣佸浘鐗�
+                                bitmap.recycle();
+                            }
+                            // 鎻愬彇鐗瑰緛鍊�
+                            if (ret != -1) {
+                                //鏈変汉鑴�
+                                // 鍒ゆ柇璐ㄩ噺妫�娴嬶紝閽堝妯$硦搴︺�侀伄鎸°�佽搴�
+                                if (ret == 128) {
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", bean.getMemberName());
+                                    //鎻掑叆鏁版嵁搴�
+                                    User user = FaceApi.getInstance().getByUserId(bean.getType(), bean.getId());
+                                    boolean isSave = false;
+                                    if (user == null) {
+                                        //鏂板
+                                        isSave = FaceApi.getInstance().registerUserIntoDBmanager(bean.getType(),
+                                                bean.getId(), bean.getMemberName(), bean.getFaceUrl(), JSON.toJSONString(bean), secondFeature);
+                                    } else {
+                                        //鏇存柊
+                                        user.setUserName(bean.getMemberName());
+                                        user.setImageName(bean.getFaceUrl());
+                                        user.setFeature(secondFeature);
+                                        isSave = FaceApi.getInstance().userUpdateOnly(user);
+                                    }
+
+                                    if (isSave) {
+                                        //淇濆瓨鎴愬姛
+                                        Timber.d("====>褰曞叆鎴愬姛%s",bean.getMemberName());
+                                        fail = false;
+                                    } else {
+                                        Timber.d("====>褰曞叆澶辫触%s",bean.getMemberName());
+                                    }
+                                } else {
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
+                                }
+                            } else {
+                                // 涓婁紶鍥剧墖鏃犱汉鑴搁殣钘�
+                                Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
+                            }
+                        } else {
+                            Timber.d("====>鍥剧墖涓嬭浇澶辫触%s",bean.getMemberName());
+                        }
+                        bean.setChecked(false);
+                        if(fail){
+                            failCount++;
+                            if(failStr.length()>0){
+                                failStr.append(",");
+                            }
+                            failStr.append(bean.getMemberName());
+                        }
+                        finishCount++;
+                        loadListener.onLoad(finishCount, mSelectCount, finishCount * 1.0f / mSelectCount);
+                        if (finishCount == mSelectCount) {
+                            loadListener.onComplete(new ArrayList<>(), finishCount);
+                            if(failCount>0){
+                                Toast.makeText(mContext, "鍏�"+failCount+"鏉″鍏ュけ璐ャ��"+failStr.toString()+"銆�", Toast.LENGTH_LONG).show();
+                            }
+                        }
+                    }
+                });*/
+    }
+
+    private void initView() {
+        mRecyclerUserManager = findViewById(R.id.recycler_user_manager);
+        mRecyclerUserManager.setOnClickListener(this);
+        RecyclerView.LayoutManager layoutManager = new GridLayoutManager(mContext,2);
+        mRecyclerUserManager.setLayoutManager(layoutManager);
+        // title鐩稿叧鐨勬帶浠�
+        mRelativeStandard = findViewById(R.id.relative_standard);
+        mLinearSearch = findViewById(R.id.linear_title_search);
+        mImageIconSearch = findViewById(R.id.image_icon_research);
+        mImageIconSearch.setOnClickListener(this);
+        mTextCancel = findViewById(R.id.text_cancel);
+        mTextCancel.setOnClickListener(this);
+
+        mRelativeEmpty = findViewById(R.id.relative_empty);
+        mTextEmpty = findViewById(R.id.text_empty);
+        // 鍒犻櫎鐩稿叧鐨勬帶浠�
+        mRelativeDelete = findViewById(R.id.relative_botton_delete);
+        mRelativeDelete.setOnClickListener(this);
+        mCheckAll = findViewById(R.id.check_all);
+        mCheckAll.setOnCheckedChangeListener(this);
+        textAll = findViewById(R.id.text_all);
+        textAll.setOnClickListener(this);
+        mTextDelete = findViewById(R.id.text_delete);
+        mTextDelete.setOnClickListener(this);
+        // title涓殑鎼滅储妗嗗彇娑堟寜閽�
+        Button btnTitleCancel = findViewById(R.id.btn_title_cancel);
+        btnTitleCancel.setOnClickListener(this);
+        ImageView imageBack = findViewById(R.id.image_back);
+        imageBack.setOnClickListener(this);
+        ImageView imageInputDelete = findViewById(R.id.image_input_delete);
+        imageInputDelete.setOnClickListener(this);
+        mTipDialog = new TipDialog(mContext);
+        mTipDialog.setOnTipDialogClickListener(this);
+
+        mFaceUserAdapter = new FaceRcvAdapter(this, R.layout.face_rcv_item, new FaceRcvAdapter.OnItemClick() {
+            @Override
+            public void onItemClick(FaceUserBean item) {
+                // 濡傛灉褰撳墠item鏈�変腑锛屽垯閫変腑
+                if (item.isChecked()) {
+                    mSelectCount++;
+                    mTextDelete.setText(getString(R.string.addface_drrl)+"(" + mSelectCount + ")");
+                    mTextDelete.setTextColor(Color.parseColor("#F34B56"));
+                } else {
+                    // 濡傛灉褰撳墠item宸茬粡閫変腑锛屽垯鍙栨秷閫変腑
+                    mSelectCount--;
+                    mTextDelete.setText(getString(R.string.addface_drrl)+"(" + mSelectCount + ")");
+                    if (mSelectCount == 0) {
+                        mTextDelete.setTextColor(Color.parseColor("#666666"));
+                    }
+                }
+            }
+        });
+        mRecyclerUserManager.setAdapter(mFaceUserAdapter);
+
+        progressBar = findViewById(R.id.progress_bar);
+        progressText = findViewById(R.id.progress_text);
+        progressGroup = findViewById(R.id.progress_group);
+
+        // title涓殑鎼滅储妗�
+        mEditTitleSearch = findViewById(R.id.edit_title_search);
+        // 鎼滅储妗嗚緭鍏ョ洃鍚簨浠�
+        mEditTitleSearch.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                if (mUserInfoList!=null&&s != null) {
+                    // 璇诲彇鏁版嵁搴擄紝鑾峰彇鐢ㄦ埛淇℃伅
+                    if(s.toString().trim().length()==0){
+                        mFaceUserAdapter.refreshData(mUserInfoList);
+                    }else {
+                        List<FaceUserBean> beans = new ArrayList<>();
+                        for(FaceUserBean d:mUserInfoList){
+                            if(s.toString().trim().contains(d.getMemberName())){
+                                beans.add(d);
+                            }
+                        }
+                        mFaceUserAdapter.refreshData(beans);
+                    }
+                }
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+
+            }
+        });
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.btn_title_cancel) {  // 鍙栨秷鎸夐挳
+            mEditTitleSearch.setText("");
+            mLinearSearch.setVisibility(View.GONE);
+            mRelativeStandard.setVisibility(View.VISIBLE);
+
+        } else if (id == R.id.image_icon_research) {  // 鎼滅储鎸夐挳
+            mLinearSearch.setVisibility(View.VISIBLE);
+            mRelativeStandard.setVisibility(View.GONE);
+        } else if (id == R.id.image_back) {
+            finish();
+        } else if (id == R.id.text_all) {
+            mCheckAll.setChecked(!mCheckAll.isChecked());
+        }else if (id == R.id.relative_delete) {       // 鏄剧ず瀵煎叆浜鸿劯UI
+            updateDeleteUI(true);
+        } else if (id == R.id.text_cancel) {           // 鎵归噺瀵煎叆浜鸿劯鍙栨秷
+            updateDeleteUI(false);
+        } else if (id == R.id.text_delete) {           // 鎵归噺瀵煎叆浜鸿劯
+            if (mSelectCount == 0) {
+                Toast.makeText(mContext, getString(R.string.addface_tip3), Toast.LENGTH_SHORT).show();
+                return;
+            }
+            if(FaceSDKManager.initStatus != FaceSDKManager.SDK_MODEL_LOAD_SUCCESS){
+                Toast.makeText(mContext, getString(R.string.addface_tip4), Toast.LENGTH_SHORT).show();
+                return;
+            }
+            mTipDialog.show();
+            mTipDialog.setTextTitle(getString(R.string.addface_qrdr));
+            mTipDialog.setTextMessage(getString(R.string.addface_tip5));
+            mTipDialog.setTextConfirm(getString(R.string.addface_drrl)+"(" + mSelectCount + ")");
+            mTipDialog.setCancelable(false);
+        } else if (id == R.id.image_input_delete) {
+            mEditTitleSearch.setText("");
+        } else if (id == R.id.recycler_user_manager) {
+            KeyboardsUtils.hintKeyBoards(v);
+        } else if (id == R.id.relative_botton_delete) {
+            Timber.d( "relative_botton_delete");
+        }
+    }
+
+    /**
+     * 鍏ㄩ�夊閫夋鐨勭洃鍚簨浠�
+     */
+    @Override
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+        if (isChecked) {      // 鍏ㄩ��
+            mSelectCount = mUserInfoList.size();
+            for (int i = 0; i < mUserInfoList.size(); i++) {
+                mUserInfoList.get(i).setChecked(true);
+            }
+            mTextDelete.setTextColor(Color.parseColor("#F34B56"));
+        } else {             // 鍙栨秷鍏ㄩ��
+            mSelectCount = 0;
+            for (int i = 0; i < mUserInfoList.size(); i++) {
+                mUserInfoList.get(i).setChecked(false);
+            }
+            mTextDelete.setTextColor(Color.parseColor("#666666"));
+        }
+        mTextDelete.setText(getString(R.string.addface_drrl)+"(" + mSelectCount + ")");
+        mFaceUserAdapter.notifyDataSetChanged();
+    }
+
+    // 瀵硅瘽妗嗏�滃彇娑堚�濇寜閽�
+    @Override
+    public void onCancel() {
+        if (mIsLongClick) {
+            resetDeleteData();
+            mIsLongClick = false;
+        }
+        mFaceUserAdapter.notifyDataSetChanged();
+        if (mTipDialog != null) {
+            mTipDialog.dismiss();
+        }
+    }
+    private DBLoadListener loadListener = new DBLoadListener() {
+        @Override
+        public void onStart(final int successCount) {
+
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    progressGroup.setVisibility(View.VISIBLE);
+                    progressBar.setProgress(0);
+                    progressText.setText(0 + "/" + successCount);
+                }
+            });
+        }
+
+        @Override
+        public void onLoad(final int finishCount, final int successCount, final float progress) {
+//            if (successCount > 50 || successCount == 0) {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    Timber.d("====>浜鸿劯瀵煎叆杩涘害%s",finishCount+"=="+successCount+"=="+progress);
+                    progressBar.setProgress((int) (progress * 100));
+                    progressText.setText(finishCount + "/" + successCount);
+                }
+            });
+//            }
+        }
+
+        @Override
+        public void onComplete(List<User> features, final int successCount) {
+            progressGroup.setVisibility(View.GONE);
+            mFaceUserAdapter.notifyDataSetChanged();
+            mCheckAll.setChecked(false);
+        }
+
+        @Override
+        public void onFail(int finishCount, int successCount, List<User> features) {
+
+        }
+    };
+
+    // 瀵硅瘽妗嗏�滃鍏ヤ汉鑴糕�濇寜閽�
+    @Override
+    public void onConfirm(String tipType) {
+        if (mTipDialog != null) {
+            mTipDialog.dismiss();
+        }
+        if (mSelectCount != 0) {
+            //瀵煎叆浜鸿劯
+            selectBeans.clear();
+            for(FaceUserBean bean:mUserInfoList){
+                if(bean.isChecked()) {
+                    selectBeans.add(bean);
+                }
+            }
+            loadListener.onStart(mSelectCount);
+            finishCount = 0;
+            failCount = 0;
+            failStr = new StringBuilder();
+            handler.sendEmptyMessage(0);
+        } else {
+            updateDeleteUI(false);
+        }
+    }
+
+    // 鏇存柊瀵煎叆浜鸿劯鐩稿叧鐨刄I
+    private void updateDeleteUI(boolean isShowDeleteUI) {
+        mRelativeDelete.setVisibility(View.VISIBLE);
+        mImageIconSearch.setVisibility(View.GONE);
+        mTextCancel.setVisibility(View.VISIBLE);
+        mFaceUserAdapter.notifyDataSetChanged();
+    }
+
+    private void resetDeleteData() {
+        mSelectCount = 0;
+        for (int i = 0; i < mUserInfoList.size(); i++) {
+            mUserInfoList.get(i).setChecked(false);
+        }
+        mTextDelete.setText(getString(R.string.addface_drrl));
+    }
+
+    /**
+     * 鐐瑰嚮闈炵紪杈戝尯鍩熸敹璧烽敭鐩�
+     * 鑾峰彇鐐瑰嚮浜嬩欢
+     */
+    @CallSuper
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            View view = getCurrentFocus();
+            if (KeyboardsUtils.isShouldHideKeyBord(view, ev)) {
+                KeyboardsUtils.hintKeyBoards(view);
+            }
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3