MrShi
7 天以前 3a154bdb0a5aaa2c0ac3eac95a6ba747068bd454
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("激活失败,设备硬件指纹与License.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("激活失败,设备硬件指纹与License.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("正在下载文件...");
            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));
    }
}