weimingfei
2 天以前 3c5e5ed692e2e5248080b064b7d14b8eb9988a8c
指纹钥匙柜
已删除1个文件
已修改15个文件
239 ■■■■ 文件已修改
keyCabinet-android/app/build.gradle 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/libs/enjoySDK.aar 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/AndroidManifest.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ChoseActivationActivity.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginActivity.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/CrashHandler.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/MCUtils.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/res/layout/main_activity.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/main/res/layout/manage_cabinet_activity.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/src/test/java/com/doumee/ticketmachine/ExampleUnitTest.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/build.gradle 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keyCabinet-android/app/build.gradle
@@ -108,6 +108,7 @@
    implementation project(path: ':settinglibrary')
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation files('libs\\simple-xml-2.7.1.jar')
    implementation files('libs\\myservice_20240630.jar')
    testImplementation deps.test.junit
    androidTestImplementation deps.test.ext_junit
    androidTestImplementation deps.test.test_espresso
@@ -135,4 +136,5 @@
    implementation 'com.bigkoo:convenientbanner:2.0.5'
    //头像
    implementation 'de.hdodenhof:circleimageview:3.1.0'
}
keyCabinet-android/app/libs/enjoySDK.aar
Binary files differ
keyCabinet-android/app/src/main/AndroidManifest.xml
@@ -65,7 +65,6 @@
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ChoseActivationActivity.java
@@ -10,7 +10,7 @@
import com.doumee.keyCabinet.databinding.ChoseActivationActivityBinding;
import com.doumee.keyCabinet.utils.MCUtils;
import com.doumee.lib_coremodel.bean.event.ActionEventData;
import com.mc.enjoysdk.McSystemUi;
import com.proembed.service.MyService;
import dagger.hilt.android.AndroidEntryPoint;
@@ -29,8 +29,8 @@
        normalConfig();
        getDB().setModel(getVM());
        McSystemUi mcSystemUi = McSystemUi.getInstance(this);
        MCUtils.show(mcSystemUi);
        MyService myService = new MyService(this);
        MCUtils.show(myService);
    }
    @Override
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
@@ -526,8 +526,16 @@
                handler.sendEmptyMessageDelayed(1,4000);
                glMantleSurfacView.setFrame();
                bdFaceImageConfig.setData(data);
                FaceSDKManager.getInstance().onDetectCheck(bdFaceImageConfig, null, null,
                        bdFaceCheckConfig, faceDetectCallBack);
                try {
                    FaceSDKManager.getInstance().onDetectCheck(bdFaceImageConfig, null, null,
                            bdFaceCheckConfig, faceDetectCallBack);
                }catch (RuntimeException e){
                    e.printStackTrace();
                    ToastView.show(MApplication.mContext,"人脸报错0:"+e.getMessage());
                }catch (Exception e){
                    e.printStackTrace();
                    ToastView.show(MApplication.mContext,"人脸报错0:"+e.getMessage());
                }
            }
        }
    };
@@ -552,6 +560,9 @@
                        checkOpenDebugResult(livenessModel);
                    }
                });
            }catch (RuntimeException e){
                e.printStackTrace();
                ToastView.show(MApplication.mContext,"人脸报错2:"+e.getMessage());
            }catch (Exception e){
                e.printStackTrace();
                ToastView.show(MApplication.mContext,"人脸报错2:"+e.getMessage());
@@ -789,6 +800,9 @@
                    }
                }
            }
        }catch (RuntimeException e){
            e.printStackTrace();
            ToastView.show(MApplication.mContext,"人脸报错:"+e.getMessage());
        }catch (Exception e){
            e.printStackTrace();
            ToastView.show(MApplication.mContext,"人脸报错:"+e.getMessage());
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
@@ -366,7 +366,7 @@
            //获取卡号
            EventBus.getDefault().post(new HttpEvent("xxxxxxxxxx==>关门,获取钥匙信息"));
            EventBus.getDefault().post(new GetKeyStatusEvent());
            keyTime = new Date().getTime()+500;
            keyTime = new Date().getTime()+100;
            if(handler.hasMessages(0)){
                handler.removeMessages(0);
            }
@@ -404,6 +404,8 @@
                if(handler.hasMessages(0)){
                    handler.removeMessages(0);
                }
                EventBus.getDefault().post(new HttpEvent("xxxxxxxxxx==>钥匙信息,版号:"+
                        e.getType())+",bar:"+selectBean.getBoardCode()+",flag="+flag);
                if("1".equals(e.getType())){
                    //1号板
                    if(!"1".equals(selectBean.getBoardCode())){
@@ -422,14 +424,17 @@
                if(flag==0) {
                    //领取
                    //查询钥匙号
                    EventBus.getDefault().post(new HttpEvent("xxxxxxxxxx==>钥匙信息返回"));
                    CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
                    if (gridDo != null) {
                        if (gridDo.getIsOpen() == 0) {
                            //ToastView.show(MApplication.mContext,"当前:"+gridDo.getCurKeyCode()+",绑定:"+gridDo.getKeyCode());
                            //关门成功
                            if (!TextUtils.isEmpty(gridDo.getCurKeyCode())) {
                                if (gridDo.getCurKeyCode().equals(selectBean.getKeyCode())) {
                                    //领取失败
                                    isOpened = false;
                                    EventBus.getDefault().post(new HttpEvent("xxxxxxxxxx==>当前钥匙:"+gridDo.getCurKeyCode()));
                                    getVM().doAction(6);
                                    getVM().closeGrid(gridDo);
                                }else {
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java
@@ -42,8 +42,7 @@
import com.doumee.lib_coremodel.bean.event.ActionEventData;
import com.doumee.lib_coremodel.util.RecyclerHelp;
import com.doumee.lib_coremodel.util.StringUtil;
import com.example.datalibrary.db.DBManager;
import com.mc.enjoysdk.McSystemUi;
import com.proembed.service.MyService;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -111,8 +110,8 @@
            @Override
            public boolean onLongClick(View v) {
                //可以下拉
                McSystemUi mcSystemUi = McSystemUi.getInstance(ManageCabinetActivity.this);
                MCUtils.show(mcSystemUi);
                MyService myService = new MyService(ManageCabinetActivity.this);
                MCUtils.show(myService);
                return true;
            }
        });
@@ -571,7 +570,7 @@
            }
            //发送查询钥匙号
            EventBus.getDefault().post(new GetKeyStatusEvent());
            keyTime = new Date().getTime()+500;
            keyTime = new Date().getTime()+100;
            if(handler.hasMessages(0)){
                handler.removeMessages(0);
            }
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginActivity.java
@@ -19,7 +19,7 @@
import com.doumee.keyCabinet.utils.LMobileInfo;
import com.doumee.keyCabinet.utils.MCUtils;
import com.doumee.lib_coremodel.bean.event.ActionEventData;
import com.mc.enjoysdk.McSystemUi;
import com.proembed.service.MyService;
import org.greenrobot.eventbus.Subscribe;
@@ -52,8 +52,8 @@
            public boolean onLongClick(View v) {
                if(MApplication.getConfigBean().getId()==null){
                    //可以下拉
                    McSystemUi mcSystemUi = McSystemUi.getInstance(ManageLoginActivity.this);
                    MCUtils.show(mcSystemUi);
                    MyService myService = new MyService(ManageLoginActivity.this);
                    MCUtils.show(myService);
                    return true;
                }
                return false;
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -18,6 +18,7 @@
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.TextAppearanceSpan;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -117,16 +118,17 @@
import com.example.datalibrary.model.User;
import com.example.datalibrary.utils.ToastUtils;
import com.example.datalibrary.view.PreviewTexture;
import com.mc.enjoysdk.McHome;
import com.mc.enjoysdk.McSystemUi;
import com.mc.enjoysdk.transform.McSystemUiFlag;
import com.proembed.service.MyService;
import com.yanzhenjie.permission.runtime.Permission;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -166,8 +168,7 @@
    private int downCount = 0;
    private Long lastDownTime;
    private Long showTime;
    private McSystemUi mcSystemUi;
    private McHome mcHome;
    private MyService mXService;
    private Handler handler = new Handler(){
        @Override
@@ -226,9 +227,25 @@
        Intent intent2 = new Intent(MainActivity.this, FaceUpdateService.class);
        startService(intent2);*/
        getPermission();
        Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId());
        mcSystemUi = McSystemUi.getInstance(this);
        mcHome = McHome.getInstance(this);
        mXService = new MyService(this);
        //Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId());
        Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {
            String time2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            getVM().addInfo("GlobalException线程报错:" + thread.getName());
            try {
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                PrintStream print = new PrintStream(out);
                //导出发生异常的时间
                print.println(time2);
                print.println();
                throwable.printStackTrace(print);
                SpUtil.saveString(CrashHandler.FILE_NAME+time2,new String(out.toByteArray()));
                print.close();
            } catch (Exception e) {
                e.printStackTrace();
                getVM().addInfo("错误日志2"+e.getMessage());
            }
        });
    }
    private void initM(){
@@ -336,9 +353,7 @@
                    getDB().nsv.setVisibility(View.VISIBLE);
                }
                //显示状态栏
                mcSystemUi.temporarilySwitchStatusBar(true);
                //显示导航栏
                mcSystemUi.temporarilySwitchNavigation(true);
                MCUtils.show(mXService);
            }
        });
        upErrInfo();
@@ -498,8 +513,8 @@
        super.onResume();
        isShowing = true;
        getVM().setSubmit(true);
        MCUtils.hind(mcSystemUi);
        mcHome.setHomePackage("com.doumee.keyCabinet");
        MCUtils.hind(mXService);
        MCUtils.setHomePackage(mXService,"com.doumee.keyCabinet");
        showTime = System.currentTimeMillis();
        if(isHavePermission) {
            checkUpdate();
@@ -1597,7 +1612,17 @@
            //一号版
            bh = 1;
        }
        String[] sp = data.split("AA");
        List<String> sp = new ArrayList<>();
        String data2 = data.substring(8,data.length());
        while (data2.length()>0){
            if (data2.length()<22) {
                sp.add(data2+"");
                data2 = "";
            }else {
                sp.add(data2.substring(0,22));
                data2 = data2.substring(22);
            }
        }
        for(String s:sp){
            if(s.length()>=20){
                String key = SportUtils.intToHex(bh)+s.substring(4,6);
@@ -1611,7 +1636,7 @@
                    }else {
                        gridDo.setCurKeyCode("");
                    }
                    if("0101".equals(key)) {
                    if("0109".equals(key)) {
                        getVM().addInfo(key+" , "+isHaveKey+"  "+keyCode);
                        getVM().addInfo(key + "设置钥匙:" + gridDo.getCurKeyCode());
                    }
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
@@ -153,12 +153,18 @@
        if(oldMap.size()>0) {
            CabinetGridDo[] dels = new CabinetGridDo[oldMap.size()];
            int i=0;
            StringBuilder sb = new StringBuilder();
            for (String key : oldMap.keySet()) {
                dels[i] = oldMap.get(key);
                i++;
                if(sb.length()>0){
                    sb.append(",");
                }
                sb.append(oldMap.get(key).getKeyCode());
            }
            //删除多的
            DaoManager.getCabinetGridDao().delete(dels);
            addInfo("删除规格:"+dels.length);
        }
        if(addList.size()>0){
            DaoManager.getCabinetGridDao().insert(addList);
@@ -334,7 +340,7 @@
            }
            DaoManager.getCabinetGridDao().update(upList);
        }
        addInfo("更新库数据:修改" + updateList.size());
        addInfo("更新库数据:修改" + updateList.size()+",总共:"+updateList.size());
    }
    public void timeOutUnCloseAlarm(CabinetGridDo gridDo){
@@ -397,8 +403,8 @@
    }
    public void addInfo(String info){
        String s = infoObs.get();
        /*String s = infoObs.get();
        s=info+"\n"+s;
        infoObs.set(s);
        infoObs.set(s);*/
    }
}
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/CrashHandler.java
@@ -16,7 +16,7 @@
import com.doumee.keyCabinet.ui.main.MainActivity;
import com.doumee.keyCabinet.utils.update.FileUtil;
import com.doumee.lib_coremodel.util.SpUtil;
import com.mc.enjoysdk.McSystemUi;
import com.proembed.service.MyService;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
@@ -108,10 +108,9 @@
                System.out.println("错误日志2"+e.getMessage());
                //LogUtils.e(TAG, "dump crash info failed");
            }
            //导出异常信息到SD卡中
            McSystemUi mcSystemUi = McSystemUi.getInstance(mContext);
            MCUtils.show(mcSystemUi);
            MyService myService = new MyService(mContext);
            MCUtils.show(myService);
            long time = SpUtil.getLong("err_app");
            SpUtil.saveLong("err_app",System.currentTimeMillis());
            if(System.currentTimeMillis()-time>60000){
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/MCUtils.java
@@ -1,23 +1,33 @@
package com.doumee.keyCabinet.utils;
import com.mc.enjoysdk.McSystemUi;
import com.mc.enjoysdk.transform.McSystemUiFlag;
import com.doumee.keyCabinet.event.HttpEvent;
import com.proembed.service.MyService;
import org.greenrobot.eventbus.EventBus;
public class MCUtils {
    public static void hind(McSystemUi mcSystemUi){
        mcSystemUi.temporarilySwitchStatusBar(false);
        mcSystemUi.temporarilySwitchNavigation(false);
        /*//隐藏状态栏信息
        mcSystemUi.disableStatusBarItem(McSystemUiFlag.DISABLE_SYSTEM_INFO);
        //禁止状态栏弹出
        mcSystemUi.disableStatusBarItem(McSystemUiFlag.DISABLE_NOTIFICATION_ALERTS);
        //禁止状态栏下拉
        mcSystemUi.disableStatusBarItem(McSystemUiFlag.DISABLE_EXPAND);*/
    //隐藏
    public static void hind(MyService myService){
        //隐藏状态栏
        try {
            myService.setHideNavBar(true);
        }catch (Exception e){
            EventBus.getDefault().post(new HttpEvent(".....状态栏报错:"+e.getMessage()));
        }
    }
    public static void show(McSystemUi mcSystemUi){
        //mcSystemUi.disableStatusBarItem(McSystemUiFlag.DISABLE_NONE);
        mcSystemUi.temporarilySwitchStatusBar(true);
        mcSystemUi.temporarilySwitchNavigation(true);
    //显示
    public static void show(MyService myService){
        myService.setHideNavBar(false);
    }
    /**
     * 设置app自启动
     *
     * @param packageName 应用包名
     */
    public static void setHomePackage(MyService myService, String packageName) {
        myService.setAppBoot(packageName);
    }
}
keyCabinet-android/app/src/main/res/layout/main_activity.xml
@@ -388,7 +388,8 @@
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:commandType="@{55}"
            app:onClickCommand="@{model.myTypeCommand}"/>
            app:onClickCommand="@{model.myTypeCommand}"
            android:visibility="gone"/>
        <ImageView
            android:id="@+id/img"
@@ -404,7 +405,7 @@
            android:layout_height="50dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            />
            android:visibility="gone"/>
        <TextView
            android:id="@+id/tv_m"
keyCabinet-android/app/src/main/res/layout/manage_cabinet_activity.xml
@@ -73,7 +73,7 @@
            android:textSize="22sp"
            app:layout_constraintTop_toTopOf="@+id/tv_title"
            app:layout_constraintBottom_toBottomOf="@+id/tv_title"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintRight_toLeftOf="@+id/tv_count"
            android:layout_marginLeft="30dp"/>
        <TextView
@@ -84,7 +84,8 @@
            android:textColor="#111111"
            android:textSize="22sp"
            app:layout_constraintTop_toTopOf="@+id/tv1"
            app:layout_constraintStart_toEndOf="@+id/tv1"/>
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginRight="30dp"/>
        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/cl_1"
keyCabinet-android/app/src/test/java/com/doumee/ticketmachine/ExampleUnitTest.java
@@ -9,6 +9,8 @@
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -17,11 +19,65 @@
public class ExampleUnitTest {
    @Test
    public void addition_isCorrect() {
       String code = "EF 01 FF FF FF FF 01 00 03 1D 00";
       String x = SportUtils.getBCC(code);
       System.out.println(x);
        for(int i=1;i<=16;i++){
            String key = SportUtils.intToHex(Integer.parseInt("1"))
                    +SportUtils.intToHex(Integer.parseInt(i+""));
            System.out.println("key = "+key);
        }
       String data2 = "CC0110AA" +
               "0001010001A77B092F5DAA" +
               "00010200014E7B092F05AA" +
               "0001030001FD7A092FB4AA" +
               "00010400000000000005AA" +
               "0001050001F07C092FABAA" +
               "00010600000000000007AA" +
               "00010700000000000008AA" +
               "00010800000000000009AA" +
               "0001090000000000000AAA" +
               "00010A0001967C092F56AA" +
               "00010B0000000000000CAA" +
               "00010C000000000000ODAA" +
               "00010D0000000000000EAA" +
               "00010E0000000000000FAA" +
               "00010F00000000000010AA" +
               "00011000000000000011DB" +
               "CC0208AA" +
               "0002010001A77B092F5DAA" +
               "00020200014E7B092F05AA" +
               "0002030001FD7A092FB4AA" +
               "00020400000000000005AA" +
               "0002050001F07C092FABAA" +
               "00020600000000000007AA" +
               "00020700000000000008AA" +
               "00020800000000000009AA";
        if(data2.contains("CC01")&&data2.contains("CC02")){
            String[] sp = data2.split("CC02");
            if(sp.length==2){
                jx(sp[0]);
                jx("CC02"+sp[1]);
            }
        }
    }
    private void jx(String data){
        List<String> sp = new ArrayList<>();
        String data2 = data.substring(8,data.length());
        while (data2.length()>0){
            sp.add(data2.substring(0,22));
            data2 = data2.substring(22,data2.length());
        }
        System.out.println("==>"+data2);
        for(String s:sp) {
            if (s.length() >= 20) {
                String key = SportUtils.intToHex(1) + s.substring(4, 6);
                String isHaveKey = s.substring(8, 10);
                String keyCode = s.substring(10, 18);
                System.out.println("==>"+s);
                System.out.println("==>"+s.substring(4, 6));
                System.out.println(key+"  "+ isHaveKey+"  "+keyCode);
            }
        }
    }
}
keyCabinet-android/build.gradle
@@ -11,6 +11,7 @@
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
        maven { url 'https://dl.bintray.com/hpdx/maven/' }
        maven { url "https://jitpack.io" }
        maven { url 'https://repo1.maven.org/maven2/' }
        google()
        jcenter()
    }
@@ -33,6 +34,7 @@
        maven { url 'https://dl.bintray.com/hpdx/maven/' }
        maven {url  "https://dl.bintray.com/rongcloud/maven"}
        maven {url "https://www.jitpack.io"}
        maven { url 'https://repo1.maven.org/maven2/' }
        maven {
            allowInsecureProtocol = true
            url 'http://maven.xiaoliyun.com:9999/repository/sdk/'