From 3a154bdb0a5aaa2c0ac3eac95a6ba747068bd454 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 13 一月 2026 10:00:37 +0800
Subject: [PATCH] 优化

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

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java
new file mode 100644
index 0000000..4f52855
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java
@@ -0,0 +1,233 @@
+package com.doumee.keyCabinet.ui.face;
+
+import androidx.annotation.Nullable;
+
+import android.app.DownloadManager;
+import android.content.BroadcastReceiver;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.Toast;
+
+import com.baidu.idl.main.facesdk.FaceAuth;
+import com.baidu.idl.main.facesdk.callback.Callback;
+import com.doumee.keyCabinet.MApplication;
+import com.doumee.keyCabinet.R;
+import com.doumee.keyCabinet.base.MyBaseActivity;
+import com.doumee.keyCabinet.databinding.OfflineActivationActivityBinding;
+import com.doumee.keyCabinet.event.TimeClockEvent;
+import com.doumee.keyCabinet.utils.LMobileInfo;
+import com.doumee.keyCabinet.utils.update.FileUtil;
+import com.doumee.lib_coremodel.view.ToastView;
+import com.example.datalibrary.utils.FileUtils;
+import com.example.datalibrary.utils.ToastUtils;
+
+import org.greenrobot.eventbus.Subscribe;
+
+import dagger.hilt.android.AndroidEntryPoint;
+
+@AndroidEntryPoint
+public class OfflineActivationActivity extends MyBaseActivity<OfflineActivationVM, OfflineActivationActivityBinding> implements View.OnClickListener {
+    private FaceAuth faceAuth;
+    private boolean isDownLoad;
+    String filePath = Environment.getExternalStorageDirectory().getPath()+"/License.zip";
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.offline_activation_activity;
+    }
+
+    @Override
+    public void initView(@Nullable Bundle savedInstanceState) {
+        isToGuild = false;
+        normalConfig();
+        getDB().setModel(getVM());
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+        getDB().tvId.setText("NO锛�"+ LMobileInfo.getDeviceUniqueId());
+
+        // 澶嶅埗鎸夐挳
+        faceAuth = new FaceAuth();
+        String a = faceAuth.getDeviceId(this);
+        getDB().accreditDeviceTv.setText(a);
+
+        // 闀挎寜鐐瑰嚮澶嶅埗
+        getDB().accreditDeviceTv.setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View view) {
+                ClipboardManager clipboardManager = (ClipboardManager)
+                        getSystemService(Context.CLIPBOARD_SERVICE);
+                clipboardManager.setText(getDB().accreditDeviceTv.getText());
+
+                ToastUtils.toast(OfflineActivationActivity.this, "deviceID 澶嶅埗鎴愬姛");
+                return false;
+            }
+        });
+
+        getDB().accreditOffBtn.setOnClickListener(this);
+        getDB().btnDown.setOnClickListener(this);
+        setupDownloadManager();
+        setupDownloadReceiver();
+    }
+
+    @Subscribe
+    public void TimeClockEvent(TimeClockEvent e){
+        if(!isFinishing()){
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    updateDownStatus();
+                }
+            });
+        }
+    }
+
+    private void updateDownStatus(){
+        if(isDownLoad){
+            return;
+        }
+        //鍏堟牎楠屾槸鍚︽湁涓嬭浇璺緞
+        if(!TextUtils.isEmpty(MApplication.getConfigBean().getActivateFileUrl())){
+            if(FileUtil.FileIsExist(filePath)) {
+                //鏂囦欢瀛樺湪
+                getDB().btnDown.setText("閲嶆柊涓嬭浇婵�娲绘枃浠�");
+                getDB().btnDown.setClickable(true);
+                getDB().btnDown.setBackgroundResource(R.mipmap.btn_main_normal);
+
+                getDB().accreditOffBtn.setClickable(true);
+                getDB().accreditOffBtn.setBackgroundResource(R.mipmap.btn_main_normal);
+            }else {
+                getDB().btnDown.setText("涓嬭浇婵�娲绘枃浠�");
+                getDB().btnDown.setClickable(true);
+                getDB().btnDown.setBackgroundResource(R.mipmap.btn_main_normal);
+
+                getDB().accreditOffBtn.setClickable(false);
+                getDB().accreditOffBtn.setBackgroundResource(R.mipmap.btn_less_normal);
+            }
+        }else {
+            //鍒犻櫎婵�娲绘枃浠�
+            FileUtils.deleteFile(filePath);
+            getDB().btnDown.setText("寰呭悗鍙颁笂浼犳縺娲绘枃浠�");
+            getDB().btnDown.setClickable(false);
+            getDB().btnDown.setBackgroundResource(R.mipmap.btn_less_normal);
+
+            getDB().accreditOffBtn.setClickable(false);
+            getDB().accreditOffBtn.setBackgroundResource(R.mipmap.btn_less_normal);
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.btn_down:
+                //涓嬭浇鎸夐挳
+                if(isDownLoad){
+                    ToastView.show(MApplication.mContext,"涓嬭浇涓�...");
+                    return;
+                }
+                if(!TextUtils.isEmpty(MApplication.getConfigBean().getActivateFileUrl())){
+                    isDownLoad = true;
+                    startDownload(MApplication.getConfigBean().getActivateFileUrl());
+                }
+                break;
+            // 绂荤嚎婵�娲�
+            case R.id.accredit_offBtn:
+                faceAuth.initLicenseOffLine(this, new Callback() {
+                    @Override
+                    public void onResponse(final int code, final String response) {
+                        if (code == 0) {
+                            runOnUiThread(new Runnable() {
+                                @Override
+                                public void run() {
+                                    // 鎺堟潈鎴愬姛璺宠浆鍔熻兘鍏ュ彛椤甸潰
+                                    getDB().accreditHintTv.setText("");
+                                    finish();
+                                }
+                            });
+                        } else {
+                            runOnUiThread(new Runnable() {
+                                @Override
+                                public void run() {
+                                    if (code == 7) {
+                                        getDB().accreditHintTv.setText("婵�娲诲け璐ワ紝璁惧纭欢鎸囩汗涓嶭icense.zip涓嶇");
+                                    } else if (code == 11) {
+                                        getDB().accreditHintTv.setText("婵�娲诲け璐ワ紝License.zip鏂囦欢瀵瑰簲鐨勫簭鍒楀彿涓嶅湪鏈夋晥鏈熻寖鍥村唴");
+                                    } else if (code == -1) {
+                                        getDB().accreditHintTv.setText("鏈娴嬪埌License.zip鏂囦欢");
+                                    } else if (code == 14) {
+                                        getDB().accreditHintTv.setText("婵�娲诲け璐ワ紝License.zip鏂囦欢瀵瑰簲鐨勫簭鍒楀彿涓嶅湪鏈夋晥鏈熻寖鍥村唴");
+                                    } else if (code == 4) {
+                                        getDB().accreditHintTv.setText("婵�娲诲け璐ワ紝璁惧纭欢鎸囩汗涓嶭icense.zip涓嶇");
+                                    } else {
+                                        getDB().accreditHintTv.setText(code);
+                                    }
+                                }
+                            });
+
+                        }
+                    }
+                });
+                break;
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (downloadReceiver != null) {
+            unregisterReceiver(downloadReceiver);
+        }
+    }
+
+    private BroadcastReceiver downloadReceiver;
+    private DownloadManager downloadManager;
+    private long downloadId;
+
+    private void setupDownloadManager() {
+        downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
+    }
+
+
+    private void startDownload(String url) {
+        try {
+            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
+
+            // 璁剧疆涓嬭浇鍙傛暟
+            request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
+            request.setTitle("鏂囦欢涓嬭浇");
+            request.setDescription("姝e湪涓嬭浇鏂囦欢...");
+            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
+            request.setDestinationInExternalPublicDir("", "License.zip");
+
+            // 寮�濮嬩笅杞�
+            downloadId = downloadManager.enqueue(request);
+            Toast.makeText(mContext, "涓嬭浇宸插紑濮�", Toast.LENGTH_SHORT).show();
+
+        } catch (Exception e) {
+            isDownLoad = false;
+            Toast.makeText(this, "涓嬭浇澶辫触: " + e.getMessage(), Toast.LENGTH_LONG).show();
+        }
+    }
+
+    private void setupDownloadReceiver() {
+        downloadReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive (Context context, Intent intent){
+                long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
+                if (id == downloadId) {
+                    isDownLoad = false;
+                    Toast.makeText(context, "鏂囦欢涓嬭浇瀹屾垚", Toast.LENGTH_LONG).show();
+                }
+            }
+        };
+        registerReceiver(downloadReceiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3