Forráskód Böngészése

配合测试完成BUG修复

JaycePC 1 hónapja
szülő
commit
547faa6180
36 módosított fájl, 412 hozzáadás és 305 törlés
  1. 22 14
      app/src/main/java/com/rc/core/ui/activity/BaseActivity.java
  2. 1 23
      app/src/main/java/com/rc/core/ui/activity/BaseActivityHelp.java
  3. 1 1
      app/src/main/java/xn/hxp/receiver/ScanKeyEventHelper.kt
  4. 4 13
      app/src/main/java/xn/hxp/ui/discard/WasteChemicalsActivity.kt
  5. 1 1
      app/src/main/java/xn/hxp/ui/inquiry/InquiryActivity.kt
  6. 4 4
      app/src/main/java/xn/hxp/ui/login/FacialCardActivity.kt
  7. 3 3
      app/src/main/java/xn/hxp/ui/login/FacialLoginActivity.kt
  8. 3 3
      app/src/main/java/xn/hxp/ui/login/ScanLoginActivity.kt
  9. 3 3
      app/src/main/java/xn/hxp/ui/login/SwipeActivity.kt
  10. 2 2
      app/src/main/java/xn/hxp/ui/newly/AddedChemicalsActivity.kt
  11. 0 1
      app/src/main/java/xn/hxp/ui/plan/PlanAddActivityHelp.java
  12. 2 0
      app/src/main/java/xn/hxp/ui/plan/add/AddActivity.java
  13. 23 3
      app/src/main/java/xn/hxp/ui/plan/add/AddActivityHelp.java
  14. 4 0
      app/src/main/java/xn/hxp/ui/plan/change/ChangeCabinetActivity.java
  15. 27 0
      app/src/main/java/xn/hxp/ui/plan/save_list/SaveListAdapter.java
  16. 1 0
      app/src/main/java/xn/hxp/ui/plan/unlock/UnlockActivityHelp.java
  17. 6 12
      app/src/main/java/xn/hxp/ui/still/ChemicalsAlsoActivity.kt
  18. 9 9
      app/src/main/java/xn/hxp/ui/uses/UseActivity.kt
  19. 5 5
      app/src/main/java/xn/hxp/ui/verify/ScanCodeTwoActivity.kt
  20. 17 30
      app/src/main/java/xn/hxp/ui/verify/SwipeCodeTwoActivity.kt
  21. 4 8
      app/src/main/java/xn/hxp/ui/verify/TwoPersonActivity.kt
  22. 26 26
      app/src/main/java/xn/hxp/ui/verify/TwoVerificationActivity.kt
  23. 6 6
      app/src/main/java/xn/hxp/ui/warehousing/ChemicalLabelingActivity.kt
  24. 3 3
      app/src/main/java/xn/hxp/ui/warehousing/WarehousingActivity.kt
  25. 0 49
      app/src/main/java/xn/hxp/utils/MediaPlayerHelper.kt
  26. 144 41
      app/src/main/java/xn/hxp/utils/PrintTool.java
  27. 8 10
      app/src/main/java/xn/hxp/utils/bluetooth/BluetoothTool.java
  28. 2 2
      app/src/main/java/xn/hxp/weidith/AirBottleNewDialog.kt
  29. 12 14
      app/src/main/java/xn/hxp/weidith/BluetoothWeighDialog.java
  30. 2 2
      app/src/main/java/xn/hxp/weidith/LabelDialog.kt
  31. 10 3
      app/src/main/java/xn/hxp/weidith/prin_label_dialog/PrintLabelDialog.java
  32. 11 0
      app/src/main/res/drawable/shape_unlock_g.xml
  33. 14 0
      app/src/main/res/drawable/shape_unlock_t.xml
  34. 19 1
      app/src/main/res/layout/activity_unlock.xml
  35. 1 1
      app/src/main/res/layout/item_save_list.xml
  36. 12 12
      serialport/.cxx/Debug/6e5q1f5t/arm64-v8a/configure_fingerprint.bin

+ 22 - 14
app/src/main/java/com/rc/core/ui/activity/BaseActivity.java

@@ -44,11 +44,6 @@ public abstract class BaseActivity extends AppCompatActivity {
         }
     };
 
-    protected abstract void cdFinish();
-
-    protected abstract void cdTime(int cd);
-
-
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -66,15 +61,6 @@ public abstract class BaseActivity extends AppCompatActivity {
         onInit();
     }
 
-
-    protected abstract ViewBinding setViewBinding();
-
-    protected abstract void onInit();
-
-    protected void setCdTime(int cdTime) {
-        this.cdTime = cdTime;
-    }
-
     @Override
     protected void onResume() {
         super.onResume();
@@ -95,6 +81,28 @@ public abstract class BaseActivity extends AppCompatActivity {
         isCountCdTime = false;
     }
 
+    @Override
+    public void onUserInteraction() {
+        super.onUserInteraction();
+        ConfigBean configBean = ChemicalApp.confs;
+        if (null != configBean) {
+            cdTime = configBean.getBackTime();
+            Constants.INSTANCE.setOFFTIME_TIME(configBean.getOffTime());
+        }
+    }
+
+    protected abstract void cdFinish();
+
+    protected abstract void cdTime(int cd);
+
+    protected abstract ViewBinding setViewBinding();
+
+    protected abstract void onInit();
+
+    protected void setCdTime(int cdTime) {
+        this.cdTime = cdTime;
+    }
+
     public void showLoading(String msg) {
         if (null != baseActivityHelp) {
             baseActivityHelp.showLoading(msg);

+ 1 - 23
app/src/main/java/com/rc/core/ui/activity/BaseActivityHelp.java

@@ -1,19 +1,14 @@
 package com.rc.core.ui.activity;
 
-import android.text.TextUtils;
 import android.widget.Toast;
 
 import com.blankj.utilcode.util.ThreadUtils;
 import com.kongzue.dialogx.DialogX;
 import com.kongzue.dialogx.dialogs.WaitDialog;
-import com.rc.httpcore.exception.NetException;
 
-import java.net.ConnectException;
-import java.net.SocketTimeoutException;
 import java.util.concurrent.TimeUnit;
 
 import io.reactivex.rxjava3.disposables.Disposable;
-import retrofit2.HttpException;
 
 public class BaseActivityHelp {
     private BaseActivity baseActivity;
@@ -54,24 +49,7 @@ public class BaseActivityHelp {
     }
 
     public void showNetError(Throwable throwable) {
-        String message = "";
-        if (throwable instanceof NetException) {
-            message = throwable.getMessage();
-            if (!TextUtils.isEmpty(message)) {
-                message = "接口请求失败(" + ((NetException) throwable).getCode() + ")";
-            }
-        } else if (throwable instanceof SocketTimeoutException) {
-            message = "请求超时,请稍后重试";
-        } else if (throwable instanceof ConnectException) {
-            message = "无法连接服务器,请检查网络";
-        } else if (throwable instanceof HttpException) {
-            message = "服务器繁忙,请稍后重试";
-        } else {
-            if (!TextUtils.isEmpty(message)) {
-                message = throwable.getMessage();
-            }
-        }
-        showToast(message);
+        showToast(throwable.getMessage());
     }
 
     public void addDisposable(Disposable disposable) {

+ 1 - 1
app/src/main/java/xn/hxp/receiver/ScanKeyEventHelper.kt

@@ -31,7 +31,7 @@ class ScanKeyEventHelper(private val callback: ((content: String) -> Unit)? = nu
                     Handler(Looper.getMainLooper()).postDelayed({
                         callback?.invoke(mKeyContent.toString())
                         mKeyContent.clear()
-                    }, 2000)
+                    }, 1500)
                 }
             }
 

+ 4 - 13
app/src/main/java/xn/hxp/ui/discard/WasteChemicalsActivity.kt

@@ -137,10 +137,7 @@ class WasteChemicalsActivity : BaseActivity() {
                             val disposable = ApiRepository.giveBack(mGiveBackBean)
                                 .subscribe({ data ->
                                     dismissLoading()
-                                    MediaPlayerHelper.playRawMp3(
-                                        this@WasteChemicalsActivity,
-                                        R.raw.feiqichuku
-                                    )
+                                    AudioPlayer.getInstance().play(R.raw.feiqichuku)
                                     customDialogView(1, "已废弃出库,请及时进行废弃回收")
                                     viewBinding.relOne.visibility = View.GONE
                                     viewBinding.lint3.visibility = View.GONE
@@ -453,10 +450,7 @@ class WasteChemicalsActivity : BaseActivity() {
                         val disposable = ApiRepository.giveBack(mGiveBackBean)
                             .subscribe({ data ->
                                 dismissLoading()
-                                MediaPlayerHelper.playRawMp3(
-                                    this@WasteChemicalsActivity,
-                                    R.raw.feiqichuku
-                                )
+                                AudioPlayer.getInstance().play(R.raw.feiqichuku)
                                 customDialogView(1, "已废弃出库,请及时进行废弃回收")
                                 viewBinding.relOne.visibility = View.GONE
                                 viewBinding.lint3.visibility = View.GONE
@@ -517,10 +511,7 @@ class WasteChemicalsActivity : BaseActivity() {
             val disposable = ApiRepository.giveBack(mGiveBackBean)
                 .subscribe({ data ->
                     dismissLoading()
-                    MediaPlayerHelper.playRawMp3(
-                        this@WasteChemicalsActivity,
-                        R.raw.feiqichuku
-                    )
+                    AudioPlayer.getInstance().play(R.raw.feiqichuku)
                     customDialogView(1, "已废弃出库,请及时进行废弃回收")
                     viewBinding.relOne.visibility = View.GONE
                     viewBinding.lint3.visibility = View.GONE
@@ -1336,7 +1327,7 @@ class WasteChemicalsActivity : BaseActivity() {
             mIsLock = true
 //            discardDialogShow()
             //没有锁 直接显示 需要扫描化学品信息
-            MediaPlayerHelper.playRawMp3(this, R.raw.gui_men_kai_qing_fei_qi)
+            AudioPlayer.getInstance().play(R.raw.gui_men_kai_qing_fei_qi)
             handlerUtil.stopAllTasks()
             countdownTimer?.cancel()
 //            mStockModelList.add(mDataBean)

+ 1 - 1
app/src/main/java/xn/hxp/ui/inquiry/InquiryActivity.kt

@@ -567,7 +567,7 @@ class InquiryActivity : BaseActivity() {
             dismissLoading()
             //开锁成功
             customDialogView(1, "柜门已开")
-            MediaPlayerHelper.playRawMp3(this, R.raw.guimenkai)
+            AudioPlayer.getInstance().play(R.raw.guimenkai)
             handlerUtil.stopAllTasks()
             countdownTimer?.cancel()
         }

+ 4 - 4
app/src/main/java/xn/hxp/ui/login/FacialCardActivity.kt

@@ -20,7 +20,6 @@ import xn.hxp.databinding.ActivityFacialCardBinding
 import xn.hxp.receiver.OnSerialScanListener
 import xn.hxp.receiver.PortScanHelper
 import xn.hxp.receiver.UsbReceiver
-import xn.hxp.utils.MediaPlayerHelper
 import xn.hxp.weidith.AuthenticationDialog
 import xn.hxp.weidith.CustomDialog
 import com.blankj.utilcode.util.LogUtils
@@ -42,6 +41,7 @@ import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 import retrofit2.HttpException
 import xn.hxp.app.ChemicalApp
+import xn.hxp.utils.AudioPlayer
 import java.io.File
 import java.net.ConnectException
 import java.net.SocketTimeoutException
@@ -74,7 +74,7 @@ class FacialCardActivity : BaseActivity() {
     override fun onInit() {
         //注册广播
         EventBus.getDefault().register(this)
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_shua_ka)
+        AudioPlayer.getInstance().play(R.raw.login_shua_ka)
         viewBinding.tvReturn.text = "返回${ChemicalApp.confs!!.backTime}s"
         viewBinding.tvReturn.setOnClickListener {
             finish()
@@ -167,7 +167,7 @@ class FacialCardActivity : BaseActivity() {
 //            .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
 //            .error(R.mipmap.icon_zhan_wei)
 //            .into(viewBinding.imgView)
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_ren_lian)
+        AudioPlayer.getInstance().play(R.raw.login_ren_lian)
         HttpClient.token = null
         mFotoapparat = Fotoapparat.with(this)
             .into(viewBinding.cameraView)
@@ -365,7 +365,7 @@ class FacialCardActivity : BaseActivity() {
     //身份认证成功
     private fun authenticationDialog() {
         handlerBack.removeCallbacks(countdownRunnableTwo)
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_ren_zheng_tong_hua)
+        AudioPlayer.getInstance().play(R.raw.login_ren_zheng_tong_hua)
         mDialogsAut = AuthenticationDialog(
             this,
             mFaceImg,

+ 3 - 3
app/src/main/java/xn/hxp/ui/login/FacialLoginActivity.kt

@@ -32,7 +32,7 @@ import xn.hxp.R
 import xn.hxp.app.ChemicalApp
 import xn.hxp.comm.Constants
 import xn.hxp.databinding.ActivityFacialLoginBinding
-import xn.hxp.utils.MediaPlayerHelper
+import xn.hxp.utils.AudioPlayer
 import xn.hxp.utils.UiManager
 import xn.hxp.weidith.AuthenticationDialog
 import xn.hxp.weidith.CustomDialog
@@ -65,7 +65,7 @@ class FacialLoginActivity : BaseActivity() {
     }
 
     override fun onInit() {
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_ren_lian)
+        AudioPlayer.getInstance().play(R.raw.login_ren_lian)
         // 使用 Glide 加载网络图片
         viewBinding.deptName.text = "${ChemicalApp.confs!!.deptName}-${ChemicalApp.confs!!.roomNum}"
 
@@ -268,7 +268,7 @@ class FacialLoginActivity : BaseActivity() {
     private fun authenticationDialog(faceImg: String?, userName: String) {
         mFotoapparat.stop()
         handlerBack.removeCallbacks(countdownRunnableTwo)
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_ren_zheng_tong_hua)
+        AudioPlayer.getInstance().play(R.raw.login_ren_zheng_tong_hua)
         mDialogsAut = AuthenticationDialog(
             this,
             faceImg,

+ 3 - 3
app/src/main/java/xn/hxp/ui/login/ScanLoginActivity.kt

@@ -28,7 +28,7 @@ import com.rc.httpcore.client.ApiRepository
 import xn.hxp.R
 import xn.hxp.app.ChemicalApp
 import xn.hxp.databinding.ActivityScanLoginBinding
-import xn.hxp.utils.MediaPlayerHelper
+import xn.hxp.utils.AudioPlayer
 import xn.hxp.utils.TimesUils
 import xn.hxp.utils.UiManager
 import xn.hxp.weidith.AuthenticationDialog
@@ -94,7 +94,7 @@ class ScanLoginActivity : BaseActivity() {
         viewBinding.tvReturn.setOnClickListener { finish() }
 
 
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_wei_xin_sao_ma)
+        AudioPlayer.getInstance().play(R.raw.login_wei_xin_sao_ma)
         viewBinding.deptName.text = "${ChemicalApp.confs!!.deptName}-${ChemicalApp.confs!!.roomNum}"
         viewBinding.tvReturn.text = "返回${ChemicalApp.confs!!.backTime}s"
         Glide.with(this)
@@ -310,7 +310,7 @@ class ScanLoginActivity : BaseActivity() {
     //身份认证成功
     private fun authenticationDialog(faceImg: String?, userName: String) {
         myHandler.stop()
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_ren_zheng_tong_hua)
+        AudioPlayer.getInstance().play(R.raw.login_ren_zheng_tong_hua)
         mDialogsAut = AuthenticationDialog(
             this,
             faceImg,

+ 3 - 3
app/src/main/java/xn/hxp/ui/login/SwipeActivity.kt

@@ -33,7 +33,7 @@ import xn.hxp.receiver.OnSerialScanListener
 import xn.hxp.receiver.PortScanHelper
 import xn.hxp.receiver.UsbReceiver
 import xn.hxp.ui.MainActivity
-import xn.hxp.utils.MediaPlayerHelper
+import xn.hxp.utils.AudioPlayer
 import xn.hxp.utils.UiManager
 import xn.hxp.weidith.AuthenticationDialog
 import xn.hxp.weidith.CustomDialog
@@ -54,7 +54,7 @@ class SwipeActivity : BaseActivity() {
     }
 
     override fun onInit() {
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_shua_ka)
+        AudioPlayer.getInstance().play(R.raw.login_shua_ka)
         //注册广播
         EventBus.getDefault().register(this)
         viewBinding.tvReturn.text = "返回${ChemicalApp.confs!!.backTime}s"
@@ -264,7 +264,7 @@ class SwipeActivity : BaseActivity() {
 
     //身份认证成功
     private fun authenticationDialog(faceImg: String?, userName: String) {
-        MediaPlayerHelper.playRawMp3(this, R.raw.login_ren_zheng_tong_hua)
+        AudioPlayer.getInstance().play(R.raw.login_ren_zheng_tong_hua)
         mDialogsAut = AuthenticationDialog(
             this,
             faceImg,

+ 2 - 2
app/src/main/java/xn/hxp/ui/newly/AddedChemicalsActivity.kt

@@ -986,7 +986,7 @@
 //                        )
 //                        customDialogView(1, "请将化学品放入化学品柜")
 //                    } else {
-//                        MediaPlayerHelper.playRawMp3(this, R.raw.guimenyikai)
+//                        AudioPlayer.getInstance().play(R.raw.guimenyikai)
 //                        customDialogView(1, "柜门已开,请将化学品放入化学品柜")
 //                    }
 //                    mHandleScanEvent = false
@@ -1033,7 +1033,7 @@
 //        val result = AutoReplyPrint.INSTANCE.CP_Pos_HalfCutPaper(h) //全切
 //        if (result) {
 //            //打印成功
-//            MediaPlayerHelper.playRawMp3(this, R.raw.huaxuepinbiaoqian)
+//            AudioPlayer.getInstance().play(R.raw.huaxuepinbiaoqian)
 //        }
 //
 //

+ 0 - 1
app/src/main/java/xn/hxp/ui/plan/PlanAddActivityHelp.java

@@ -161,7 +161,6 @@ public class PlanAddActivityHelp {
     public void updateInventoryUi() {
         // 待存储列表更新
         CabinetLayerSelect cabinetLayerSelect = activity.hxpLayerDAO.getChanged();
-        LogUtils.d(cabinetLayerSelect);
         if (null != cabinetLayerSelect) {
             List<InventoryItemBean> inventoryItemBeanList = activity.hxpInventoryDAO.getById(cabinetLayerSelect.getCabinetId(), cabinetLayerSelect.getDoorId(), cabinetLayerSelect.getLayer());
             // 展示待存储UI

+ 2 - 0
app/src/main/java/xn/hxp/ui/plan/add/AddActivity.java

@@ -270,6 +270,7 @@ public class AddActivity extends BaseActivity {
                         if (null != bundle) {
                             CabinetLayerSelect cabinetLayerSelect = (CabinetLayerSelect) bundle.getSerializable("Change");
                             if (null != cabinetLayerSelect) {
+                                hxpLayerDAO.insert(cabinetLayerSelect);
                                 hxpLayerDAO.change(cabinetLayerSelect.getCabinetId(), cabinetLayerSelect.getDoorId(), cabinetLayerSelect.getLayer());
                                 inventoryItemBean.setCabinetId(cabinetLayerSelect.getCabinetId());
                                 inventoryItemBean.setDoorId(cabinetLayerSelect.getDoorId());
@@ -338,6 +339,7 @@ public class AddActivity extends BaseActivity {
 
     @Override
     protected void onDestroy() {
+        addActivityHelp.onDestroy();
         addActivityHelp = null;
         super.onDestroy();
         intentActivityResultLauncher.unregister();

+ 23 - 3
app/src/main/java/xn/hxp/ui/plan/add/AddActivityHelp.java

@@ -36,6 +36,8 @@ import xn.hxp.weidith.prin_label_dialog.PrintLabelDialog;
  */
 public class AddActivityHelp {
     private AddActivity activity;
+    private PrintLabelDialog printLabelDialog;
+    private BluetoothWeighDialog bluetoothWeighDialog;
 
     public AddActivityHelp(AddActivity addActivity) {
         super();
@@ -382,7 +384,11 @@ public class AddActivityHelp {
                         saveEnd();
                     }
                 } else {
-                    new PrintLabelDialog(activity, activity.inventoryItemBean,
+                    if (null != printLabelDialog) {
+                        printLabelDialog.dismiss();
+                        printLabelDialog = null;
+                    }
+                    printLabelDialog = new PrintLabelDialog(activity, activity.inventoryItemBean,
                             TextUtils.isEmpty(charSequence) ? "" : charSequence.toString(),
                             activity.hxpControlConfig.isQrCodePrint(),
                             new PrintLabelDialog.PrintLabelCallBack() {
@@ -396,7 +402,8 @@ public class AddActivityHelp {
                                     PopTip.show("取消存储");
                                 }
                             }
-                    ).show();
+                    );
+                    printLabelDialog.show();
                 }
             }, throwable -> {
                 LogUtils.e(Log.getStackTraceString(throwable));
@@ -412,7 +419,11 @@ public class AddActivityHelp {
      * 启动称重
      */
     private void startBluetoothWeigh() {
-        BluetoothWeighDialog bluetoothWeighDialog = new BluetoothWeighDialog(activity, activity.hxpChemicalVo, new BluetoothWeighDialog.DialogCallBack() {
+        if (null != bluetoothWeighDialog) {
+            bluetoothWeighDialog.dismiss();
+            bluetoothWeighDialog = null;
+        }
+        bluetoothWeighDialog = new BluetoothWeighDialog(activity, activity.hxpChemicalVo, new BluetoothWeighDialog.DialogCallBack() {
             @Override
             public void confirm(BluetoothWeighDialog bluetoothWeighDialog) {
                 activity.runOnUiThread(new Runnable() {
@@ -604,4 +615,13 @@ public class AddActivityHelp {
         }
 
     }
+
+    public void onDestroy() {
+        if (null != printLabelDialog) {
+            printLabelDialog.dismiss();
+        }
+        if (null != bluetoothWeighDialog) {
+            bluetoothWeighDialog.dismiss();
+        }
+    }
 }

+ 4 - 0
app/src/main/java/xn/hxp/ui/plan/change/ChangeCabinetActivity.java

@@ -15,6 +15,7 @@ import xn.hxp.ui.plan.FragmentCallBack;
 import xn.hxp.ui.plan.room.RoomTool;
 import xn.hxp.ui.plan.room.bean.locker.CabinetLayerSelect;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetVo;
+import xn.hxp.ui.plan.room.dao.HxpLayerDAO;
 
 /**
  * 更换位置
@@ -42,6 +43,9 @@ public class ChangeCabinetActivity extends BaseActivity {
         binding.cancelBT.setOnClickListener(v -> finish());
 
         binding.confirmBT.setOnClickListener(v -> {
+            HxpLayerDAO hxpLayerDAO = RoomTool.getInstance().hxpLayerDAO();
+            hxpLayerDAO.insert(cabinetLayerSelect);
+            hxpLayerDAO.change(cabinetLayerSelect.getCabinetId(), cabinetLayerSelect.getDoorId(), cabinetLayerSelect.getLayer());
             Intent intent = new Intent();
             Bundle bundle = new Bundle();
             bundle.putSerializable("Change", cabinetLayerSelect);

+ 27 - 0
app/src/main/java/xn/hxp/ui/plan/save_list/SaveListAdapter.java

@@ -35,12 +35,18 @@ public class SaveListAdapter extends BaseAdapter {
     private SaveListActivity activity;
     private List<SaveListBean> saveListBeanList = new ArrayList<>();
     private HxpDoorDAO doorDAO;
+    private Map<Long, List<SaveListBean>> saveListBeanMap;
 
+    /**
+     * @param activity
+     * @param saveListBeanMap <doorId,>
+     */
     public SaveListAdapter(SaveListActivity activity, Map<Long, List<SaveListBean>> saveListBeanMap) {
         Set<Long> keySet = saveListBeanMap.keySet();
         for (Long doorId : keySet) {
             saveListBeanList.addAll(saveListBeanMap.get(doorId));
         }
+        this.saveListBeanMap = saveListBeanMap;
         this.activity = activity;
         doorDAO = RoomTool.getInstance().hxpDoorDAO();
     }
@@ -97,6 +103,27 @@ public class SaveListAdapter extends BaseAdapter {
                 } else {
                     viewHolder.binding.unlockBT.setVisibility(View.GONE);
                 }
+
+                // 需要展示数量时
+                if (viewHolder.binding.unlockBT.getVisibility() == View.VISIBLE) {
+                    if (null != saveListBeanMap) {
+                        List<SaveListBean> saveListBeans = saveListBeanMap.get(saveListBean.getDoorId());
+                        int countSize = 0;
+                        if (saveListBeans != null && !saveListBeans.isEmpty()) {
+                            for (int i = 0; i < saveListBeans.size(); i++) {
+                                SaveListBean saveBean = saveListBeans.get(i);
+                                InventoryItemBean inventoryItemBean = saveBean.getInventoryItemBean();
+                                if (null != inventoryItemBean) {
+                                    countSize = countSize + inventoryItemBean.getSize();
+                                }
+                            }
+                        }
+                        if (countSize > 0) {
+                            viewHolder.binding.sumTV.setVisibility(View.VISIBLE);
+                            viewHolder.binding.sumTV.setText("数量:" + countSize);
+                        }
+                    }
+                }
                 String cabinetName = saveListBean.getCabinetName();
                 cabinetName = TextUtils.isEmpty(cabinetName) ? "" : cabinetName;
                 String doorName = saveListBean.getDoorName();

+ 1 - 0
app/src/main/java/xn/hxp/ui/plan/unlock/UnlockActivityHelp.java

@@ -572,6 +572,7 @@ public class UnlockActivityHelp {
             public void onFail(Throwable t) {
                 super.onFail(t);
                 activity.dismissLoading();
+                PopTip.show(t.getMessage());
             }
         });
     }

+ 6 - 12
app/src/main/java/xn/hxp/ui/still/ChemicalsAlsoActivity.kt

@@ -377,7 +377,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
         //归还列表信息查询
         useList()
 
-        MediaPlayerHelper.playRawMp3(this, R.raw.saomiaobiaoqian)
+        AudioPlayer.getInstance().play(R.raw.saomiaobiaoqian)
         customDialogView(0, "请扫描标签")
     }
 
@@ -570,10 +570,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
                     val disposable = ApiRepository.giveBack(mGiveBackBean)
                         .subscribe({ data ->
                             dismissLoading()
-                            MediaPlayerHelper.playRawMp3(
-                                this@ChemicalsAlsoActivity,
-                                R.raw.feiqichuku
-                            )
+                            AudioPlayer.getInstance().play(R.raw.feiqichuku)
                             customDialogView(1, "已废弃出库,请及时进行废弃回收")
                             viewBinding.relOne.visibility = View.VISIBLE
                             viewBinding.linTow.visibility = View.GONE
@@ -630,10 +627,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
                     val disposable = ApiRepository.giveBack(mGiveBackBean)
                         .subscribe({ data ->
                             dismissLoading()
-                            MediaPlayerHelper.playRawMp3(
-                                this@ChemicalsAlsoActivity,
-                                R.raw.kongpinfeiqi
-                            )
+                            AudioPlayer.getInstance().play(R.raw.kongpinfeiqi)
                             customDialogView(1, "已空瓶出库,请及时进行废弃回收")
                             viewBinding.relOne.visibility = View.VISIBLE
                             viewBinding.linTow.visibility = View.GONE
@@ -752,7 +746,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
                 if (socket != null) {
                     // 连接成功后的处理逻辑
                     // 在这里使用返回的 BluetoothSocket 对象进行后续操作
-                    MediaPlayerHelper.playRawMp3(this@ChemicalsAlsoActivity, R.raw.qing_zheng_zhong)
+                    AudioPlayer.getInstance().play(R.raw.qing_zheng_zhong)
                     // 连接成功后的处理逻辑
                     withContext(Dispatchers.Main) {
                         do {
@@ -937,7 +931,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
                 dismissLoading()
 //                customDialogView(1, "归还成功")
                 customDialogView(1, "请将化学品放入化学品柜")
-                MediaPlayerHelper.playRawMp3(this, R.raw.guimenkai_fang)
+                AudioPlayer.getInstance().play(R.raw.guimenkai_fang)
                 //1无锁,2是智能锁,3是钥匙柜
                 var isLock = false
                 mCabinetLockVoList = mDataBean.cabinetLockVoList
@@ -1005,7 +999,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
 
     private fun dloViews() {
         customDialogView(1, "请将化学品放入化学品柜")
-        MediaPlayerHelper.playRawMp3(this, R.raw.guimenkai_fang)
+        AudioPlayer.getInstance().play(R.raw.guimenkai_fang)
         val cabinetOpenDialog =
             CabinetOpenDialog(this@ChemicalsAlsoActivity,
                 false,

+ 9 - 9
app/src/main/java/xn/hxp/ui/uses/UseActivity.kt

@@ -135,7 +135,7 @@ class UseActivity : BaseActivity() {
                 }
             }
         }
-        MediaPlayerHelper.playRawMp3(this, R.raw.lingyongguimen)
+        AudioPlayer.getInstance().play(R.raw.lingyongguimen)
         customDialogView(0, "请选择要打开的柜门")
 
         val handler = Handler(Looper.getMainLooper())
@@ -257,7 +257,7 @@ class UseActivity : BaseActivity() {
                     openLock(mLockStr)
                 } else {
                     //没有锁 不需要开锁
-                    MediaPlayerHelper.playRawMp3(this, R.raw.quchuhuaxuepin)
+                    AudioPlayer.getInstance().play(R.raw.quchuhuaxuepin)
                     LogUtils.i("=====测hi是111")
                     usageLabelDialog()
                 }
@@ -341,7 +341,7 @@ class UseActivity : BaseActivity() {
                         openLock(mLockStr)
                     } else {
                         //没有锁 不需要开锁
-                        MediaPlayerHelper.playRawMp3(this@UseActivity, R.raw.quchuhuaxuepin)
+                        AudioPlayer.getInstance().play(R.raw.quchuhuaxuepin)
                         LogUtils.i("=====测hi是222")
                         usageLabelDialog()
                     }
@@ -549,7 +549,7 @@ class UseActivity : BaseActivity() {
                 if (socket != null) {
                     // 连接成功后的处理逻辑
                     // 在这里使用返回的 BluetoothSocket 对象进行后续操作
-                    MediaPlayerHelper.playRawMp3(this@UseActivity, R.raw.qing_zheng_zhong)
+                    AudioPlayer.getInstance().play(R.raw.qing_zheng_zhong)
                     // 连接成功后的处理逻辑
                     withContext(Dispatchers.Main) {
                         do {
@@ -1169,7 +1169,7 @@ class UseActivity : BaseActivity() {
             dismissLoading()
             mIsLock = true
             //柜门已开取出化学品
-            MediaPlayerHelper.playRawMp3(this, R.raw.guimenkaiquchuhuaxue)
+            AudioPlayer.getInstance().play(R.raw.guimenkaiquchuhuaxue)
             LogUtils.i("=====测hi是333")
             usageLabelDialog()
             handlerUtil.stopAllTasks()
@@ -1183,7 +1183,7 @@ class UseActivity : BaseActivity() {
 //                dismissLoading()
 //                mIsLock = true
 //                //柜门已开取出化学品
-//                MediaPlayerHelper.playRawMp3(this, R.raw.guimenkaiquchuhuaxue)
+//                AudioPlayer.getInstance().play(R.raw.guimenkaiquchuhuaxue)
 //                usageLabelDialog()
 //                handlerUtil.stopAllTasks()
 //                countdownTimer?.cancel()
@@ -1235,7 +1235,7 @@ class UseActivity : BaseActivity() {
                     dismissLoading()
                     mIsLock = true
                     //柜门已开取出化学品
-                    MediaPlayerHelper.playRawMp3(this, R.raw.guimenkaiquchuhuaxue)
+                    AudioPlayer.getInstance().play(R.raw.guimenkaiquchuhuaxue)
                     LogUtils.i("=====测hi是444")
                     usageLabelDialog()
                     handlerUtil.stopAllTasks()
@@ -1250,7 +1250,7 @@ class UseActivity : BaseActivity() {
 //                        dismissLoading()
 //                        mIsLock = true
 //                        //柜门已开取出化学品
-//                        MediaPlayerHelper.playRawMp3(this, R.raw.guimenkaiquchuhuaxue)
+//                        AudioPlayer.getInstance().play(R.raw.guimenkaiquchuhuaxue)
 //                        usageLabelDialog()
 //                        handlerUtil.stopAllTasks()
 //                        countdownTimer?.cancel()
@@ -1300,7 +1300,7 @@ class UseActivity : BaseActivity() {
                     openLock(mLockStr)
                 } else {
                     //没有锁 不需要开锁
-                    MediaPlayerHelper.playRawMp3(this, R.raw.quchuhuaxuepin)
+                    AudioPlayer.getInstance().play(R.raw.quchuhuaxuepin)
                     LogUtils.i("=====测hi是555")
                     usageLabelDialog()
                 }

+ 5 - 5
app/src/main/java/xn/hxp/ui/verify/ScanCodeTwoActivity.kt

@@ -135,7 +135,7 @@ class ScanCodeTwoActivity : BaseActivity() {
         viewBinding.tvReturn.setOnClickListener {
             finish()
         }
-        MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_saoma)
+        AudioPlayer.getInstance().play(R.raw.diyiren_saoma)
 
         handlerUtil.startTask(task, 10000)
 
@@ -155,9 +155,9 @@ class ScanCodeTwoActivity : BaseActivity() {
             finish()
         }
         if (count == 1) {
-            MediaPlayerHelper.playRawMp3(this@ScanCodeTwoActivity, R.raw.diyiren_saoma)
+            AudioPlayer.getInstance().play(R.raw.diyiren_saoma)
         } else {
-            MediaPlayerHelper.playRawMp3(this@ScanCodeTwoActivity, R.raw.dierren_saoma)
+            AudioPlayer.getInstance().play(R.raw.diyiren_saoma)
         }
         mVoiceCount++
 
@@ -490,7 +490,7 @@ class ScanCodeTwoActivity : BaseActivity() {
             .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
             .error(R.mipmap.icon_zhan_wei)
             .into(viewBinding.imgView)
-        MediaPlayerHelper.playRawMp3(this@ScanCodeTwoActivity, R.raw.dierren_saoma)
+        AudioPlayer.getInstance().play(R.raw.diyiren_saoma)
     }
 
     // 使用 Glide 加载二维码到 ImageView
@@ -645,7 +645,7 @@ class ScanCodeTwoActivity : BaseActivity() {
             }
             return@setOnTouchListener false
         }
-        MediaPlayerHelper.playRawMp3(this, R.raw.shuangren_tongguo)
+        AudioPlayer.getInstance().play(R.raw.shuangren_tongguo)
     }
 
     private val countdownRunnable = object : Runnable {

+ 17 - 30
app/src/main/java/xn/hxp/ui/verify/SwipeCodeTwoActivity.kt

@@ -2,46 +2,42 @@ package xn.hxp.ui.verify
 
 import android.content.IntentFilter
 import android.hardware.usb.UsbManager
-import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
 import android.view.KeyEvent
-import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.widget.TextView
 import androidx.viewbinding.ViewBinding
+import com.blankj.utilcode.util.LogUtils
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.bumptech.glide.request.RequestOptions
-import xn.hxp.app.ChemicalApp
+import com.rc.core.ui.activity.BaseActivity
+import com.rc.httpcore.HttpConfig
+import com.rc.httpcore.bean.UserValidationBean
+import com.rc.httpcore.client.ApiRepository
+import com.rc.httpcore.exception.NetException
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+import retrofit2.HttpException
 import xn.hxp.R
+import xn.hxp.app.ChemicalApp
 import xn.hxp.comm.Constants
 import xn.hxp.databinding.ActivitySwipeCodeTwoBinding
 import xn.hxp.receiver.OnSerialScanListener
 import xn.hxp.receiver.PortScanHelper
 import xn.hxp.receiver.UsbReceiver
 import xn.hxp.ui.DoubleDialogBean
-import xn.hxp.ui.MainActivity
+import xn.hxp.utils.AudioPlayer
 import xn.hxp.utils.HandlerUtil
-import xn.hxp.utils.MediaPlayerHelper
 import xn.hxp.utils.SharedPreferencesHelper
 import xn.hxp.utils.UiManager
 import xn.hxp.weidith.CustomDialog
 import xn.hxp.weidith.DoublePeopleDialog
-import com.blankj.utilcode.util.LogUtils
-import com.rc.core.ui.activity.BaseActivity
-import com.rc.httpcore.HttpConfig
-import com.rc.httpcore.bean.UserValidationBean
-import com.rc.httpcore.client.ApiRepository
-import com.rc.httpcore.exception.NetException
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.greenrobot.eventbus.ThreadMode
-import retrofit2.HttpException
 import java.net.ConnectException
 import java.net.SocketTimeoutException
-import java.util.*
 
 //双人-刷卡认证
 class SwipeCodeTwoActivity : BaseActivity() {
@@ -124,7 +120,7 @@ class SwipeCodeTwoActivity : BaseActivity() {
             .load("${HttpConfig.API_BASE_IMG_URL}${ChemicalApp.confs!!.circularLogo}")
             .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
             .into(viewBinding.image)
-        MediaPlayerHelper.playRawMp3(this@SwipeCodeTwoActivity, R.raw.diyiwei_shua_ka_renzheng)
+        AudioPlayer.getInstance().play(R.raw.diyiwei_shua_ka_renzheng)
 //        customDialogView(0,"请第一个人进行认证")
         // 定义一个定时任务  双人-刷卡认证
 //        val task = object : TimerTask() {
@@ -157,15 +153,9 @@ class SwipeCodeTwoActivity : BaseActivity() {
             finish()
         }
         if (count == 1) {
-            MediaPlayerHelper.playRawMp3(
-                this@SwipeCodeTwoActivity,
-                R.raw.diyiwei_shua_ka_renzheng
-            )
+            AudioPlayer.getInstance().play(R.raw.diyiwei_shua_ka_renzheng)
         } else {
-            MediaPlayerHelper.playRawMp3(
-                this@SwipeCodeTwoActivity,
-                R.raw.dierweishuakarenzheng
-            )
+            AudioPlayer.getInstance().play(R.raw.dierweishuakarenzheng)
         }
         mVoiceCount++
 
@@ -508,10 +498,7 @@ class SwipeCodeTwoActivity : BaseActivity() {
             .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
             .error(R.mipmap.icon_zhan_wei)
             .into(viewBinding.imgView)
-        MediaPlayerHelper.playRawMp3(
-            this@SwipeCodeTwoActivity,
-            R.raw.dierweishuakarenzheng
-        )
+        AudioPlayer.getInstance().play(R.raw.dierweishuakarenzheng)
     }
 
     //获取刷卡信息
@@ -632,7 +619,7 @@ class SwipeCodeTwoActivity : BaseActivity() {
             }
             return@setOnTouchListener false
         }
-        MediaPlayerHelper.playRawMp3(this, R.raw.shuangren_tongguo)
+        AudioPlayer.getInstance().play(R.raw.shuangren_tongguo)
     }
 
     private val countdownRunnable = object : Runnable {

+ 4 - 8
app/src/main/java/xn/hxp/ui/verify/TwoPersonActivity.kt

@@ -15,7 +15,6 @@ import xn.hxp.R
 import xn.hxp.comm.Constants
 import xn.hxp.databinding.ActivityTwoPersonBinding
 import xn.hxp.ui.DoubleDialogBean
-import xn.hxp.utils.MediaPlayerHelper
 import xn.hxp.utils.SharedPreferencesHelper
 import xn.hxp.utils.UiManager
 import xn.hxp.weidith.CustomDialog
@@ -36,6 +35,7 @@ import io.fotoapparat.log.loggers
 import io.fotoapparat.selector.back
 import io.fotoapparat.selector.front
 import retrofit2.HttpException
+import xn.hxp.utils.AudioPlayer
 import java.io.File
 import java.net.ConnectException
 import java.net.SocketTimeoutException
@@ -151,11 +151,7 @@ class TwoPersonActivity : BaseActivity() {
             .logger(loggers(logcat(), fileLogger(this)))
             .build()
 
-
-        MediaPlayerHelper.playRawMp3(
-            this@TwoPersonActivity,
-            R.raw.diyiren_renlianshibie
-        )
+        AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie)
         handlerBackTwo.post(countdownRunnableTwo)
         countHandler.postDelayed({
             finish()
@@ -564,7 +560,7 @@ class TwoPersonActivity : BaseActivity() {
             .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
             .error(R.mipmap.icon_zhan_wei)
             .into(viewBinding.imgView)
-        MediaPlayerHelper.playRawMp3(this@TwoPersonActivity, R.raw.dierwei_renlianshibie)
+        AudioPlayer.getInstance().play(R.raw.dierwei_renlianshibie)
     }
 
     private fun takePicture() {
@@ -712,7 +708,7 @@ class TwoPersonActivity : BaseActivity() {
             }
             return@setOnTouchListener false
         }
-        MediaPlayerHelper.playRawMp3(this, R.raw.shuangren_tongguo)
+        AudioPlayer.getInstance().play(R.raw.shuangren_tongguo)
     }
 
     private val countdownRunnable = object : Runnable {

+ 26 - 26
app/src/main/java/xn/hxp/ui/verify/TwoVerificationActivity.kt

@@ -152,7 +152,7 @@ class TwoVerificationActivity : BaseActivity() {
             //初始化UI
             when (mCertificationType) {
                 1 -> { //人脸+刷卡
-                    MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_renlianshibie)
+                    AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie)
                     viewBinding.scan.visibility = View.GONE
                     viewBinding.scanTwo.visibility = View.GONE
                     fotoapparatOpen()
@@ -160,7 +160,7 @@ class TwoVerificationActivity : BaseActivity() {
                 }
 
                 2 -> {//人脸+扫码
-                    MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_renlianshibie)
+                    AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie)
                     viewBinding.campus.visibility = View.GONE
                     viewBinding.campusTwo.visibility = View.GONE
                     fotoapparatOpen()
@@ -168,7 +168,7 @@ class TwoVerificationActivity : BaseActivity() {
                 }
 
                 3 -> {//刷卡+扫码
-                    MediaPlayerHelper.playRawMp3(this, R.raw.diyiwei_shua_ka_renzheng)
+                    AudioPlayer.getInstance().play(R.raw.diyiwei_shua_ka_renzheng)
                     mHandleScanEvent = false
                     mVerOne = 2
                     mVerTwo = 2
@@ -190,7 +190,7 @@ class TwoVerificationActivity : BaseActivity() {
                 }
 
                 4 -> {
-                    MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_renlianshibie)
+                    AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie)
                     replaceOnes()
                     replaceTwos()
                     fotoapparatOpen()
@@ -202,7 +202,7 @@ class TwoVerificationActivity : BaseActivity() {
             LogUtils.i("======当前认证方式$mTag")
             when (mVerTyps) {
                 1 -> {
-                    MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_renlianshibie)
+                    AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie)
                     //只有人脸
                     viewGones()
                     fotoapparatOpen()
@@ -210,7 +210,7 @@ class TwoVerificationActivity : BaseActivity() {
                 }
 
                 2 -> {
-                    MediaPlayerHelper.playRawMp3(this, R.raw.diyiwei_shua_ka_renzheng)
+                    AudioPlayer.getInstance().play(R.raw.diyiwei_shua_ka_renzheng)
                     mHandleScanEvent = false
                     mVerOne = 2
                     mVerTwo = 2
@@ -232,7 +232,7 @@ class TwoVerificationActivity : BaseActivity() {
                 }
 
                 3 -> {
-                    MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_saoma)
+                    AudioPlayer.getInstance().play(R.raw.diyiren_saoma)
                     mVerOne = 3
                     mVerTwo = 3
                     //只有扫码
@@ -284,15 +284,15 @@ class TwoVerificationActivity : BaseActivity() {
                 //第二个人的操作
                 when (mVerOne) {
                     1 -> {
-                        MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_renlianshibie)
+                        AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie)
                     }
 
                     2 -> { //刷卡
-                        MediaPlayerHelper.playRawMp3(this, R.raw.diyiwei_shua_ka_renzheng)
+                        AudioPlayer.getInstance().play(R.raw.diyiwei_shua_ka_renzheng)
                     }
 
                     3 -> {//扫码
-                        MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_saoma)
+                        AudioPlayer.getInstance().play(R.raw.diyiren_saoma)
                     }
                 }
             } else {
@@ -300,17 +300,17 @@ class TwoVerificationActivity : BaseActivity() {
                 LogUtils.i("======当前认证方式$mTag")
                 when (mVerTyps) {
                     1 -> {
-                        MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_renlianshibie)
+                        AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie)
                     }
 
                     2 -> {
                         //只有刷卡
-                        MediaPlayerHelper.playRawMp3(this, R.raw.diyiwei_shua_ka_renzheng)
+                        AudioPlayer.getInstance().play(R.raw.diyiwei_shua_ka_renzheng)
                     }
 
                     3 -> {
                         //只有扫码
-                        MediaPlayerHelper.playRawMp3(this, R.raw.diyiren_saoma)
+                        AudioPlayer.getInstance().play(R.raw.diyiren_saoma)
                     }
                 }
             }
@@ -319,15 +319,15 @@ class TwoVerificationActivity : BaseActivity() {
                 //第二个人的操作
                 when (mVerTwo) {
                     1 -> { //关闭人脸
-                        MediaPlayerHelper.playRawMp3(this, R.raw.dierwei_renlianshibie)
+                        AudioPlayer.getInstance().play(R.raw.dierwei_renlianshibie)
                     }
 
                     2 -> { //刷卡
-                        MediaPlayerHelper.playRawMp3(this, R.raw.dierweishuakarenzheng)
+                        AudioPlayer.getInstance().play(R.raw.dierweishuakarenzheng)
                     }
 
                     3 -> {//扫码
-                        MediaPlayerHelper.playRawMp3(this, R.raw.dierren_saoma)
+                        AudioPlayer.getInstance().play(R.raw.dierren_saoma)
                     }
                 }
             } else {
@@ -335,17 +335,17 @@ class TwoVerificationActivity : BaseActivity() {
                 LogUtils.i("======当前认证方式$mTag")
                 when (mVerTyps) {
                     1 -> {
-                        MediaPlayerHelper.playRawMp3(this, R.raw.dierwei_renlianshibie)
+                        AudioPlayer.getInstance().play(R.raw.dierwei_renlianshibie)
                     }
 
                     2 -> {
                         //只有刷卡
-                        MediaPlayerHelper.playRawMp3(this, R.raw.dierweishuakarenzheng)
+                        AudioPlayer.getInstance().play(R.raw.dierweishuakarenzheng)
                     }
 
                     3 -> {
                         //只有扫码
-                        MediaPlayerHelper.playRawMp3(this, R.raw.shuangren_tongguo)
+                        AudioPlayer.getInstance().play(R.raw.shuangren_tongguo)
                     }
                 }
             }
@@ -488,7 +488,7 @@ class TwoVerificationActivity : BaseActivity() {
             }
             return@setOnTouchListener false
         }
-        MediaPlayerHelper.playRawMp3(this, R.raw.shuangren_tongguo)
+        AudioPlayer.getInstance().play(R.raw.shuangren_tongguo)
     }
 
     private val countdownRunnable = object : Runnable {
@@ -789,7 +789,7 @@ class TwoVerificationActivity : BaseActivity() {
             //第二个人的操作
             when (mVerTwo) {
                 1 -> { //关闭人脸
-                    MediaPlayerHelper.playRawMp3(this, R.raw.dierwei_renlianshibie)
+                    AudioPlayer.getInstance().play(R.raw.dierwei_renlianshibie)
                     viewBinding.imgFace.visibility = View.GONE
                     try {
                         mFotoapparat.stop()
@@ -846,7 +846,7 @@ class TwoVerificationActivity : BaseActivity() {
                 }
 
                 2 -> { //刷卡
-                    MediaPlayerHelper.playRawMp3(this, R.raw.dierweishuakarenzheng)
+                    AudioPlayer.getInstance().play(R.raw.dierweishuakarenzheng)
                     mHandleScanEvent = false
                     when (mVerOne) {
                         1 -> {
@@ -889,7 +889,7 @@ class TwoVerificationActivity : BaseActivity() {
                 3 -> {//扫码
                     viewBinding.viewScanRoa.visibility = View.VISIBLE
                     viewBinding.imgRoa.visibility = View.VISIBLE
-                    MediaPlayerHelper.playRawMp3(this, R.raw.dierren_saoma)
+                    AudioPlayer.getInstance().play(R.raw.dierren_saoma)
                     mHandleScanEvent = true
                     when (mVerOne) {
                         1 -> {
@@ -943,7 +943,7 @@ class TwoVerificationActivity : BaseActivity() {
             LogUtils.i("======当前认证方式$mTag")
             when (mVerTyps) {
                 1 -> {
-                    MediaPlayerHelper.playRawMp3(this, R.raw.dierwei_renlianshibie)
+                    AudioPlayer.getInstance().play(R.raw.dierwei_renlianshibie)
                     viewBinding.imgFace.visibility = View.GONE
                     //只有人脸
                     try {
@@ -981,13 +981,13 @@ class TwoVerificationActivity : BaseActivity() {
 
                 2 -> {
                     //只有刷卡
-                    MediaPlayerHelper.playRawMp3(this, R.raw.dierweishuakarenzheng)
+                    AudioPlayer.getInstance().play(R.raw.dierweishuakarenzheng)
                     mHandleScanEvent = false
                 }
 
                 3 -> {
                     //只有扫码
-                    MediaPlayerHelper.playRawMp3(this, R.raw.shuangren_tongguo)
+                    AudioPlayer.getInstance().play(R.raw.shuangren_tongguo)
                 }
             }
         }

+ 6 - 6
app/src/main/java/xn/hxp/ui/warehousing/ChemicalLabelingActivity.kt

@@ -239,7 +239,7 @@ class ChemicalLabelingActivity : BaseActivity() {
                         }
                     } else {
                         //没有锁 不需要开锁
-                        MediaPlayerHelper.playRawMp3(this, R.raw.quchuhuaxuepin)
+                        AudioPlayer.getInstance().play(R.raw.quchuhuaxuepin)
                     }
 
 //                    //不需要认证
@@ -247,7 +247,7 @@ class ChemicalLabelingActivity : BaseActivity() {
 //                        openLock(mLockStr)
 //                    } else {
 //                        //没有锁 不需要开锁
-//                        MediaPlayerHelper.playRawMp3(this, R.raw.quchuhuaxuepin)
+//                        AudioPlayer.getInstance().play(R.raw.quchuhuaxuepin)
 //                    }
                 }
             } else {
@@ -266,7 +266,7 @@ class ChemicalLabelingActivity : BaseActivity() {
                     }
                 } else {
                     //没有锁 不需要开锁
-                    MediaPlayerHelper.playRawMp3(this, R.raw.quchuhuaxuepin)
+                    AudioPlayer.getInstance().play(R.raw.quchuhuaxuepin)
                 }
             }
         }
@@ -369,7 +369,7 @@ class ChemicalLabelingActivity : BaseActivity() {
                     }
                 } else {
                     //没有锁 不需要开锁
-                    MediaPlayerHelper.playRawMp3(this, R.raw.quchuhuaxuepin)
+                    AudioPlayer.getInstance().play(R.raw.quchuhuaxuepin)
                 }
                 Constants.AUTHENTICATION = false
             }
@@ -946,7 +946,7 @@ class ChemicalLabelingActivity : BaseActivity() {
                     dismissLoading()
                     //柜门已开去除化学品
                     customDialogView(1, "柜门已开,请取出化学品")
-                    MediaPlayerHelper.playRawMp3(this, R.raw.bgm_qu_chu_hua_xue_p)
+                    AudioPlayer.getInstance().play(R.raw.bgm_qu_chu_hua_xue_p)
                     handlerUtil.stopAllTasks()
                     countdownTimer?.cancel()
                     viewBinding.openLok.text = "再次开门"
@@ -1055,7 +1055,7 @@ class ChemicalLabelingActivity : BaseActivity() {
             dismissLoading()
             //柜门已开去除化学品
             customDialogView(1, "柜门已开,请取出化学品")
-            MediaPlayerHelper.playRawMp3(this, R.raw.bgm_qu_chu_hua_xue_p)
+            AudioPlayer.getInstance().play(R.raw.bgm_qu_chu_hua_xue_p)
             handlerUtil.stopAllTasks()
             countdownTimer?.cancel()
             viewBinding.openLok.text = "再次开门"

+ 3 - 3
app/src/main/java/xn/hxp/ui/warehousing/WarehousingActivity.kt

@@ -436,10 +436,10 @@ class WarehousingActivity : BaseActivity() {
                 dismissLoading()
 
                 if (types == 0) {
-                    MediaPlayerHelper.playRawMp3(this, R.raw.qingjianghuaxuekaimen)
+                    AudioPlayer.getInstance().play(R.raw.qingjianghuaxuekaimen)
                     customDialogView(1, "请将化学品放入化学品柜")
                 } else {
-                    MediaPlayerHelper.playRawMp3(this, R.raw.guimenyikai)
+                    AudioPlayer.getInstance().play(R.raw.guimenyikai)
                     customDialogView(1, "柜门已开,请将化学品放入化学品柜")
                 }
                 mAdapterChemicals.data.clear()
@@ -578,7 +578,7 @@ class WarehousingActivity : BaseActivity() {
                 if (socket != null) {
                     // 连接成功后的处理逻辑
                     // 在这里使用返回的 BluetoothSocket 对象进行后续操作
-                    MediaPlayerHelper.playRawMp3(this@WarehousingActivity, R.raw.qing_zheng_zhong)
+                    AudioPlayer.getInstance().play(R.raw.qing_zheng_zhong)
                     // 连接成功后的处理逻辑
                     withContext(Dispatchers.Main) {
                         do {

+ 0 - 49
app/src/main/java/xn/hxp/utils/MediaPlayerHelper.kt

@@ -1,49 +0,0 @@
-package xn.hxp.utils
-
-import android.content.Context
-import android.media.AudioAttributes
-import android.media.MediaPlayer
-import android.net.Uri
-
-@Deprecated(
-    "没有释放资源,并且占用context,容易内存泄露",
-    ReplaceWith("AudioPlayer"),
-    DeprecationLevel.WARNING
-)
-object MediaPlayerHelper {
-    private var mediaPlayer: MediaPlayer? = null
-
-    fun playRawMp3(context: Context, resId: Int) {
-        stopAudio()
-
-        val uri = Uri.parse("android.resource://${context.packageName}/$resId")
-
-        mediaPlayer = MediaPlayer().apply {
-            setAudioAttributes(
-                AudioAttributes.Builder()
-                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
-                    .setUsage(AudioAttributes.USAGE_MEDIA)
-                    .build()
-            )
-
-            setDataSource(context, uri)
-            prepareAsync()
-
-            setOnPreparedListener {
-                start()
-            }
-
-            setOnCompletionListener {
-                stopAudio()
-            }
-        }
-    }
-
-    private fun stopAudio() {
-        mediaPlayer?.apply {
-            stop()
-            release()
-        }
-        mediaPlayer = null
-    }
-}

+ 144 - 41
app/src/main/java/xn/hxp/utils/PrintTool.java

@@ -2,8 +2,11 @@ package xn.hxp.utils;
 
 import android.graphics.Bitmap;
 import android.util.Log;
+import android.widget.Toast;
 
+import com.blankj.utilcode.util.ActivityUtils;
 import com.blankj.utilcode.util.LogUtils;
+import com.blankj.utilcode.util.ThreadUtils;
 import com.caysn.autoreplyprint.AutoReplyPrint;
 import com.sun.jna.Pointer;
 
@@ -13,59 +16,159 @@ import xn.hxp.ui.PrintBean;
 public enum PrintTool {
     INSTANCE;
 
-    private Pointer pointer;
+    private Pointer pointer = Pointer.NULL;
+    private AutoReplyPrint.CP_OnPortOpenedEvent_Callback openedEventCallback;
+    private AutoReplyPrint.CP_OnPortOpenFailedEvent_Callback openFailedEventCallback;
+    private AutoReplyPrint.CP_OnPrinterStatusEvent_Callback statusEventCallback;
+    private AutoReplyPrint.CP_OnPrinterReceivedEvent_Callback receivedEventCallback;
 
-    public void print(boolean isBelong, PrintBean printBean) {
+    public void print(boolean isBelong, PrintBean printBean) throws Exception {
         try {
-            AutoReplyPrint.INSTANCE.CP_Port_AddOnPortOpenedEvent((handle, name, private_data) -> {
-                LogUtils.d("打印机打开成功");
-                Bitmap bitmap = BitmapUtils.INSTANCE.generateBitmap(isBelong, printBean);
-                AutoReplyPrint.INSTANCE.CP_Label_BackPaperToPrintPosition(pointer);
-                LogUtils.d("打印机退纸成功");
-                AutoReplyPrint.CP_Pos_PrintRasterImageFromData_Helper.PrintRasterImageFromBitmap(pointer,
-                        bitmap.getWidth(),
-                        bitmap.getHeight(),
-                        bitmap,
-                        AutoReplyPrint.CP_ImageBinarizationMethod_Thresholding,
-                        AutoReplyPrint.CP_ImageCompressionMethod_None
-                );
-                LogUtils.d("打印机打印图片成功");
-                AutoReplyPrint.INSTANCE.CP_Label_PagePrint(pointer, 1);
-                LogUtils.d("打印机文字成功");
-                if (AutoReplyPrint.INSTANCE.CP_Pos_HalfCutPaper(pointer)) {
-                    LogUtils.d("打印机切割成功");
-                    AudioPlayer.getInstance().play(R.raw.huaxuepinbiaoqian);
-                }
-            }, Pointer.NULL);
-            LogUtils.d("打开打印机");
-            pointer = AutoReplyPrint.INSTANCE.CP_Port_OpenUsb("VID:0x0FE6,PID:0x811E", 1);
+            if (null != openedEventCallback) {
+                openedEventCallback = (handle, name, private_data) -> LogUtils.d("打印机打开成功");
+                AutoReplyPrint.INSTANCE.CP_Port_AddOnPortOpenedEvent(openedEventCallback, pointer);
+            }
+            if (null != openFailedEventCallback) {
+                openFailedEventCallback = (handle, name, private_data) -> {
+                    pointer = AutoReplyPrint.INSTANCE.CP_Port_OpenUsb("VID:0x0FE6,PID:0x811E", 1);
+                    LogUtils.d("打开打印机失败");
+                };
+                AutoReplyPrint.INSTANCE.CP_Port_AddOnPortOpenFailedEvent(openFailedEventCallback, pointer);
+            }
+
+            if (null != statusEventCallback) {
+                statusEventCallback = (handle, printer_error_status, printer_info_status, private_data) -> {
+                    AutoReplyPrint.CP_PrinterStatus status = new AutoReplyPrint.CP_PrinterStatus(printer_error_status, printer_info_status);
+                    String error_status_string = String.format(" Printer Error Status: 0x%04X", printer_error_status & 0xffff);
+                    if (status.ERROR_OCCURED()) {
+                        if (status.ERROR_CUTTER())
+                            error_status_string += "[ERROR_CUTTER]";
+                        if (status.ERROR_FLASH())
+                            error_status_string += "[ERROR_FLASH]";
+                        if (status.ERROR_NOPAPER())
+                            error_status_string += "[ERROR_NOPAPER]";
+                        if (status.ERROR_VOLTAGE())
+                            error_status_string += "[ERROR_VOLTAGE]";
+                        if (status.ERROR_MARKER())
+                            error_status_string += "[ERROR_MARKER]";
+                        if (status.ERROR_ENGINE())
+                            error_status_string += "[ERROR_MOVEMENT]";
+                        if (status.ERROR_OVERHEAT())
+                            error_status_string += "[ERROR_OVERHEAT]";
+                        if (status.ERROR_COVERUP())
+                            error_status_string += "[ERROR_COVERUP]";
+                        if (status.ERROR_MOTOR())
+                            error_status_string += "[ERROR_MOTOR]";
+                    }
+                    String info_status_string = String.format(" Printer Info Status: 0x%04X", printer_info_status & 0xffff);
+                    if (status.INFO_LABELMODE())
+                        info_status_string += "[Label Mode]";
+                    if (status.INFO_LABELPAPER())
+                        info_status_string += "[Label Paper]";
+                    if (status.INFO_PAPERNOFETCH())
+                        info_status_string += "[Paper Not Fetch]";
+                    LogUtils.d("打印机状态", error_status_string, info_status_string);
+                };
+                AutoReplyPrint.INSTANCE.CP_Printer_AddOnPrinterStatusEvent(statusEventCallback, pointer);
+            }
+            if (null != receivedEventCallback) {
+                receivedEventCallback = (handle, printer_received_byte_count, private_data) -> LogUtils.d("打印机回传", printer_received_byte_count);
+                AutoReplyPrint.INSTANCE.CP_Printer_AddOnPrinterReceivedEvent(receivedEventCallback, pointer);
+            }
+            // 判断是否打开打印机
+            if (AutoReplyPrint.INSTANCE.CP_Port_IsOpened(pointer)) {
+                startPrint(isBelong, printBean);
+            } else {
+                pointer = AutoReplyPrint.INSTANCE.CP_Port_OpenUsb("VID:0x0FE6,PID:0x811E", 1);
+                LogUtils.d("打开打印机", pointer);
+                startPrint(isBelong, printBean);
+            }
         } catch (Exception e) {
             LogUtils.d(Log.getStackTraceString(e));
         }
     }
 
+    private void startPrint(boolean isBelong, PrintBean printBean) {
+        Bitmap bitmap = BitmapUtils.INSTANCE.generateBitmap(isBelong, printBean);
+        if (AutoReplyPrint.INSTANCE.CP_Label_BackPaperToPrintPosition(pointer)) {
+            LogUtils.d("打印机退纸成功");
+            if (AutoReplyPrint.CP_Pos_PrintRasterImageFromData_Helper.PrintRasterImageFromBitmap(pointer,
+                    bitmap.getWidth(),
+                    bitmap.getHeight(),
+                    bitmap,
+                    AutoReplyPrint.CP_ImageBinarizationMethod_Thresholding,
+                    AutoReplyPrint.CP_ImageCompressionMethod_None
+            )) {
+                LogUtils.d("打印机打印图片成功");
+                if (AutoReplyPrint.INSTANCE.CP_Label_PagePrint(pointer, 1)) {
+                    LogUtils.d("打印机文字成功");
+                    if (AutoReplyPrint.INSTANCE.CP_Pos_HalfCutPaper(pointer)) {
+                        LogUtils.d("打印机切割成功");
+                        AudioPlayer.getInstance().play(R.raw.huaxuepinbiaoqian);
+                    } else {
+                        ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机切割失败", Toast.LENGTH_LONG).show());
+                    }
+                } else {
+                    ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机文字失败", Toast.LENGTH_LONG).show());
+                }
+            } else {
+                ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机打印图片失败", Toast.LENGTH_LONG).show());
+            }
+        } else {
+            ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机退纸失败", Toast.LENGTH_LONG).show());
+        }
+    }
+
     public void print(String string) {
         try {
-            AutoReplyPrint.INSTANCE.CP_Port_AddOnPortOpenedEvent((handle, name, private_data) -> {
-                Bitmap bitmap = BitmapUtils.INSTANCE.airBottlePrint(string);
-                AutoReplyPrint.INSTANCE.CP_Label_BackPaperToPrintPosition(pointer);
-                AutoReplyPrint.CP_Pos_PrintRasterImageFromData_Helper.PrintRasterImageFromBitmap(pointer,
-                        bitmap.getWidth(),
-                        bitmap.getHeight(),
-                        bitmap,
-                        AutoReplyPrint.CP_ImageBinarizationMethod_Thresholding,
-                        AutoReplyPrint.CP_ImageCompressionMethod_None
-                );
-                AutoReplyPrint.INSTANCE.CP_Label_PagePrint(pointer, 1);
-                if (AutoReplyPrint.INSTANCE.CP_Pos_HalfCutPaper(pointer)) {
-                    AudioPlayer.getInstance().play(R.raw.zhantiefrid);
-                }
-                AutoReplyPrint.INSTANCE.CP_Port_Close(pointer);
-            }, Pointer.NULL);
-            pointer = AutoReplyPrint.INSTANCE.CP_Port_OpenUsb("VID:0x0FE6,PID:0x811E", 1);
+            // 判断是否打开打印机
+            if (AutoReplyPrint.INSTANCE.CP_Port_IsOpened(pointer)) {
+                startPrint(string);
+            } else {
+                pointer = AutoReplyPrint.INSTANCE.CP_Port_OpenUsb("VID:0x0FE6,PID:0x811E", 1);
+                AutoReplyPrint.INSTANCE.CP_Port_AddOnPortOpenedEvent(new AutoReplyPrint.CP_OnPortOpenedEvent_Callback() {
+                    @Override
+                    public void CP_OnPortOpenedEvent(Pointer handle, String name, Pointer private_data) {
+                        startPrint(string);
+                    }
+                }, pointer);
+                LogUtils.d("打开打印机");
+            }
         } catch (Exception e) {
             LogUtils.d(Log.getStackTraceString(e));
         }
     }
 
+    private void startPrint(String string) {
+        LogUtils.d("打印机打开成功");
+        Bitmap bitmap = BitmapUtils.INSTANCE.airBottlePrint(string);
+        if (AutoReplyPrint.INSTANCE.CP_Label_BackPaperToPrintPosition(pointer)) {
+            LogUtils.d("打印机退纸成功");
+            if (AutoReplyPrint.CP_Pos_PrintRasterImageFromData_Helper.PrintRasterImageFromBitmap(pointer,
+                    bitmap.getWidth(),
+                    bitmap.getHeight(),
+                    bitmap,
+                    AutoReplyPrint.CP_ImageBinarizationMethod_Thresholding,
+                    AutoReplyPrint.CP_ImageCompressionMethod_None
+            )) {
+                LogUtils.d("打印机打印图片成功");
+                if (AutoReplyPrint.INSTANCE.CP_Label_PagePrint(pointer, 1)) {
+                    LogUtils.d("打印机文字成功");
+                    if (AutoReplyPrint.INSTANCE.CP_Pos_HalfCutPaper(pointer)) {
+                        LogUtils.d("打印机切割成功");
+                        AudioPlayer.getInstance().play(R.raw.huaxuepinbiaoqian);
+                    } else {
+                        ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机切割失败", Toast.LENGTH_LONG).show());
+                    }
+                } else {
+                    ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机文字失败", Toast.LENGTH_LONG).show());
+                }
+            } else {
+                ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机打印图片失败", Toast.LENGTH_LONG).show());
+            }
+        } else {
+            ThreadUtils.runOnUiThread(() -> Toast.makeText(ActivityUtils.getTopActivity(), "打印机退纸失败", Toast.LENGTH_LONG).show());
+        }
+    }
+
 }

+ 8 - 10
app/src/main/java/xn/hxp/utils/bluetooth/BluetoothTool.java

@@ -5,19 +5,18 @@ import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothManager;
 import android.bluetooth.BluetoothSocket;
-import android.os.Build;
 import android.util.Log;
 
 import com.blankj.utilcode.util.LogUtils;
 import com.blankj.utilcode.util.Utils;
-import xn.hxp.utils.Tool;
-import com.kongzue.dialogx.dialogs.PopTip;
 
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.Set;
 import java.util.UUID;
 
+import xn.hxp.utils.Tool;
+
 public enum BluetoothTool {
     INSTANCE;
     BluetoothAdapter bluetoothAdapter;
@@ -29,12 +28,8 @@ public enum BluetoothTool {
 
     private BluetoothTool() {
         uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
-            BluetoothManager bluetoothManager = Utils.getApp().getSystemService(BluetoothManager.class);
-            bluetoothAdapter = bluetoothManager.getAdapter();
-        } else {
-            bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
-        }
+        BluetoothManager bluetoothManager = Utils.getApp().getSystemService(BluetoothManager.class);
+        bluetoothAdapter = bluetoothManager.getAdapter();
     }
 
     @SuppressLint("MissingPermission")
@@ -49,14 +44,17 @@ public enum BluetoothTool {
         }
         try {
             bluetoothSocket = bluetoothDevice.createInsecureRfcommSocketToServiceRecord(uuid);
+            LogUtils.d("连接蓝牙前");
             bluetoothSocket.connect();
             inputStream = bluetoothSocket.getInputStream();
             int bytesRead;
             String weight = "";
+            LogUtils.d("读取蓝牙数据前");
             while (null != bluetoothSocket && bluetoothSocket.isConnected() && null != inputStream && (bytesRead = inputStream.read(buffer)) != -1) {
                 // 处理读取的数据
                 String data = new String(buffer, 0, bytesRead, StandardCharsets.UTF_8);
                 String[] split = data.split("\n", -1);
+                LogUtils.d("处理前的蓝牙数据", data, split);
                 if (split.length > 0) {
                     String line = split[0].trim();
                     if (!weight.equals(line)) {
@@ -64,7 +62,7 @@ public enum BluetoothTool {
                         bluetoothCallBack.callBack(weight);
                     }
                 }
-                Thread.sleep(1);
+                Thread.sleep(5);
             }
         } catch (Exception e) {
             disconnect();

+ 2 - 2
app/src/main/java/xn/hxp/weidith/AirBottleNewDialog.kt

@@ -14,7 +14,7 @@ import android.widget.Button
 import android.widget.EditText
 import android.widget.TextView
 import xn.hxp.R
-import xn.hxp.utils.MediaPlayerHelper
+import xn.hxp.utils.AudioPlayer
 
 // 更换RFID 标签
 class AirBottleNewDialog(private val ct: Context,private var rfids:String?,private val lintDate: ILintDate) : Dialog(ct) {
@@ -48,7 +48,7 @@ class AirBottleNewDialog(private val ct: Context,private var rfids:String?,priva
                 dismiss()
             }
         }
-        MediaPlayerHelper.playRawMp3(ct, R.raw.xinrfidbiaoqian)
+        AudioPlayer.getInstance().play(R.raw.xinrfidbiaoqian)
         mHandler.postDelayed({
             dismiss()
         }, 1000 * 15) // 15秒后关闭对话框

+ 12 - 14
app/src/main/java/xn/hxp/weidith/BluetoothWeighDialog.java

@@ -70,7 +70,18 @@ public class BluetoothWeighDialog extends AppCompatDialog {
         // 规格
         binding.specsTV.setText(hxpChemicalVo.getSpecNum() + hxpChemicalVo.getSpecUnit());
         // 蓝牙称
-        ThreadUtils.executeByCached(weightTask);
+        ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Object>() {
+            @Override
+            public Object doInBackground() throws Throwable {
+                BluetoothTool.INSTANCE.connect(bluetoothCallBack);
+                return null;
+            }
+
+            @Override
+            public void onSuccess(Object result) {
+
+            }
+        });
         // 确认
         binding.confirmBT.setOnClickListener(v -> {
             Editable netWtETText = binding.netWtET.getText();
@@ -141,21 +152,8 @@ public class BluetoothWeighDialog extends AppCompatDialog {
     protected void onStop() {
         super.onStop();
         BluetoothTool.INSTANCE.disconnect();
-        ThreadUtils.cancel(weightTask);
     }
 
-    ThreadUtils.SimpleTask<Object> weightTask = new ThreadUtils.SimpleTask<Object>() {
-        @Override
-        public Object doInBackground() throws Throwable {
-            BluetoothTool.INSTANCE.connect(bluetoothCallBack);
-            return null;
-        }
-
-        @Override
-        public void onSuccess(Object result) {
-
-        }
-    };
 
     public interface DialogCallBack {
         // 成功

+ 2 - 2
app/src/main/java/xn/hxp/weidith/LabelDialog.kt

@@ -24,13 +24,13 @@ import xn.hxp.receiver.UsbReceiver
 import xn.hxp.ui.PrintBean
 import xn.hxp.ui.adapter.CustomSpinnerAdapter
 import xn.hxp.ui.adapter.LabelDialogAdapter
-import xn.hxp.utils.MediaPlayerHelper
 import com.blankj.utilcode.util.LogUtils
 import com.rc.httpcore.HttpConfig
 import com.rc.httpcore.bean.StockDetailsModel
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
+import xn.hxp.utils.AudioPlayer
 import java.time.Instant
 import java.time.LocalDateTime
 import java.time.format.DateTimeFormatter
@@ -218,7 +218,7 @@ class LabelDialog(
                 ILin.onItemClick(null, 1)
             }
         }
-        MediaPlayerHelper.playRawMp3(ac, R.raw.saomiaobiaoqian)
+        AudioPlayer.getInstance().play(R.raw.saomiaobiaoqian)
 //        customDialogView(0, "请扫描标签")
         butClos = findViewById<Button>(R.id.butClos)
 

+ 10 - 3
app/src/main/java/xn/hxp/weidith/prin_label_dialog/PrintLabelDialog.java

@@ -141,6 +141,7 @@ public class PrintLabelDialog extends AppCompatDialog {
         // 确定
         binding.determine.setOnClickListener(v -> {
             printState(true);
+
             ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Object>() {
                 @Override
                 public Object doInBackground() throws Throwable {
@@ -191,10 +192,18 @@ public class PrintLabelDialog extends AppCompatDialog {
                 public void onSuccess(Object result) {
                     printState(false);
                     hxpChemicalVo.setStockDetailsModelList(labelList);
-
                     printLabelCallBack.confirm();
                     dismiss();
                 }
+
+                @Override
+                public void onFail(Throwable t) {
+                    super.onFail(t);
+                    PopTip.show("打印失败,已打印标签无效,请重试!");
+                    printLabelCallBack.close();
+                    dismiss();
+                    LogUtils.e(Log.getStackTraceString(t));
+                }
             });
         });
     }
@@ -205,8 +214,6 @@ public class PrintLabelDialog extends AppCompatDialog {
     private void printState(boolean isPrinting) {
         if (isPrinting) {
             binding.loadingLL.setVisibility(View.VISIBLE);
-            binding.loadingLL.setOnClickListener(v1 -> {
-            });
             binding.determine.setClickable(false);
             binding.butClos.setClickable(false);
         } else {

+ 11 - 0
app/src/main/res/drawable/shape_unlock_g.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <!-- 边框 -->
+    <stroke
+        android:width="1px"
+        android:color="#d5d5d5" />
+
+
+</shape>

+ 14 - 0
app/src/main/res/drawable/shape_unlock_t.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+
+    <!-- 填充色(可选) -->
+    <solid android:color="#2697FF" /> <!-- 黄色填充 -->
+
+    <!-- 圆角(可选) -->
+    <corners
+        android:topLeftRadius="20dp"
+        android:topRightRadius="20dp" /> <!-- 20dp 圆角 -->
+
+</shape>

+ 19 - 1
app/src/main/res/layout/activity_unlock.xml

@@ -201,7 +201,7 @@
                     <TextView
                         android:layout_width="match_parent"
                         android:layout_height="80px"
-                        android:background="#2697FF"
+                        android:background="@drawable/shape_unlock_t"
                         android:gravity="center"
                         android:text="同时打开多个柜门\n请联系以下任意人员协助开门"
                         android:textColor="@color/white"
@@ -210,6 +210,7 @@
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="100px"
+                        android:background="@drawable/shape_unlock_g"
                         android:orientation="horizontal">
 
                         <TextView
@@ -220,6 +221,11 @@
                             android:text="柜门管理员"
                             android:textSize="20px" />
 
+                        <View
+                            android:layout_width="1px"
+                            android:layout_height="match_parent"
+                            android:background="#d5d5d5" />
+
                         <TextView
                             android:id="@+id/admin_TV"
                             android:layout_width="wrap_content"
@@ -231,6 +237,7 @@
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="100px"
+                        android:background="@drawable/shape_unlock_g"
                         android:orientation="horizontal">
 
                         <TextView
@@ -241,6 +248,11 @@
                             android:text="实验室安全员"
                             android:textSize="20px" />
 
+                        <View
+                            android:layout_width="1px"
+                            android:layout_height="match_parent"
+                            android:background="#d5d5d5" />
+
                         <TextView
                             android:id="@+id/safety_TV"
                             android:layout_width="wrap_content"
@@ -252,6 +264,7 @@
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="100px"
+                        android:background="@drawable/shape_unlock_g"
                         android:orientation="horizontal">
 
                         <TextView
@@ -262,6 +275,11 @@
                             android:text="实验室负责人"
                             android:textSize="20px" />
 
+                        <View
+                            android:layout_width="1px"
+                            android:layout_height="match_parent"
+                            android:background="#d5d5d5" />
+
                         <TextView
                             android:id="@+id/director_TV"
                             android:layout_width="wrap_content"

+ 1 - 1
app/src/main/res/layout/item_save_list.xml

@@ -11,7 +11,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical"
-        android:visibility="gone">
+        android:visibility="visible">
 
         <RelativeLayout
             android:layout_width="match_parent"

+ 12 - 12
serialport/.cxx/Debug/6e5q1f5t/arm64-v8a/configure_fingerprint.bin

@@ -2,28 +2,28 @@ C/C++ Structured Logb
 `
 ^D:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\additional_project_files.txtC
 A
-?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	¦•‘èÒ2 —’¼‘Ò2_
+?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint	ŸŸÈ¶Ó2 —’¼‘Ò2_
 ]
-[D:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\android_gradle_build.json	¦•‘èÒ2˜
+[D:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\android_gradle_build.json	ŸŸÈ¶Ó2˜
  œ’¼‘Ò2d
 b
-`D:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\android_gradle_build_mini.json	¦•‘èÒ2”	 ¼’¼‘Ò2Q
+`D:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\android_gradle_build_mini.json	ŸŸÈ¶Ó2”	 ¼’¼‘Ò2Q
 O
-MD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\build.ninja	¦•‘èÒ2މ 쑼‘Ò2U
+MD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\build.ninja	ŸŸÈ¶Ó2މ 쑼‘Ò2U
 S
-QD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\build.ninja.txt	¦•‘èÒ2Z
+QD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\build.ninja.txt	ŸŸÈ¶Ó2Z
 X
-VD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\build_file_index.txt	¦•‘èÒ2
? ¿’¼‘Ò2[
+VD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\build_file_index.txt	ŸŸÈ¶Ó2
? ¿’¼‘Ò2[
 Y
-WD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\compile_commands.json	¦•‘èÒ2¸ 둼‘Ò2_
+WD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\compile_commands.json	ŸŸÈ¶Ó2¸ 둼‘Ò2_
 ]
-[D:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\compile_commands.json.bin	¦•‘èÒ2	… 둼‘Ò2e
+[D:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\compile_commands.json.bin	ŸŸÈ¶Ó2	… 둼‘Ò2e
 c
-aD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\metadata_generation_command.txt	¦•‘èÒ2
+aD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\metadata_generation_command.txt	ŸŸÈ¶Ó2
 ž ¾’¼‘Ò2X
 V
-TD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\prefab_config.json	¦•‘èÒ2
( ¾’¼‘Ò2]
+TD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\prefab_config.json	ŸŸÈ¶Ó2
( ¾’¼‘Ò2]
 [
-YD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\symbol_folder_index.txt	¦•‘èÒ2
X ¾’¼‘Ò2C
+YD:\work\HuaXuePin\xn_hxp\serialport\.cxx\Debug\6e5q1f5t\arm64-v8a\symbol_folder_index.txt	ŸŸÈ¶Ó2
X ¾’¼‘Ò2C
 A
-?D:\work\HuaXuePin\xn_hxp\serialport\src\main\cpp\CMakeLists.txt	¦•‘èÒ2
Ó ÈÒðê©2
+?D:\work\HuaXuePin\xn_hxp\serialport\src\main\cpp\CMakeLists.txt	ŸŸÈ¶Ó2
Ó ÈÒðê©2