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.aarBinary 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/'