diff --git a/app/build.gradle b/app/build.gradle index 591d39c..9df9c38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,7 @@ } dependencies { + implementation fileTree(dir: 'libs', include: ['*.aar']) //基础依赖库 implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.6' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git a/app/build.gradle b/app/build.gradle index 591d39c..9df9c38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,7 @@ } dependencies { + implementation fileTree(dir: 'libs', include: ['*.aar']) //基础依赖库 implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.6' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git "a/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" new file mode 100644 index 0000000..5cf6cbb --- /dev/null +++ "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 591d39c..9df9c38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,7 @@ } dependencies { + implementation fileTree(dir: 'libs', include: ['*.aar']) //基础依赖库 implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.6' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git "a/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" new file mode 100644 index 0000000..5cf6cbb --- /dev/null +++ "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" Binary files differ diff --git a/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt new file mode 100644 index 0000000..7519b4b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.callback + +interface OnTagScanResultCallback { + fun onTagTidScanned(isBarCode: Boolean, tid: String) +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 591d39c..9df9c38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,7 @@ } dependencies { + implementation fileTree(dir: 'libs', include: ['*.aar']) //基础依赖库 implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.6' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git "a/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" new file mode 100644 index 0000000..5cf6cbb --- /dev/null +++ "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" Binary files differ diff --git a/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt new file mode 100644 index 0000000..7519b4b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.callback + +interface OnTagScanResultCallback { + fun onTagTidScanned(isBarCode: Boolean, tid: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java index 5c17778..cb8c679 100644 --- a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java +++ b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java @@ -12,9 +12,9 @@ private String messageTitle; private String messageTopic; private String messageType; - private String relationBusinessId; private String remindDeptId; private String remindId; + private String status; public String getBusinessCode() { return businessCode; @@ -96,14 +96,6 @@ this.messageType = messageType; } - public String getRelationBusinessId() { - return relationBusinessId; - } - - public void setRelationBusinessId(String relationBusinessId) { - this.relationBusinessId = relationBusinessId; - } - public String getRemindDeptId() { return remindDeptId; } @@ -119,4 +111,12 @@ public void setRemindId(String remindId) { this.remindId = remindId; } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } } diff --git a/app/build.gradle b/app/build.gradle index 591d39c..9df9c38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,7 @@ } dependencies { + implementation fileTree(dir: 'libs', include: ['*.aar']) //基础依赖库 implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.6' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git "a/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" new file mode 100644 index 0000000..5cf6cbb --- /dev/null +++ "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" Binary files differ diff --git a/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt new file mode 100644 index 0000000..7519b4b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.callback + +interface OnTagScanResultCallback { + fun onTagTidScanned(isBarCode: Boolean, tid: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java index 5c17778..cb8c679 100644 --- a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java +++ b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java @@ -12,9 +12,9 @@ private String messageTitle; private String messageTopic; private String messageType; - private String relationBusinessId; private String remindDeptId; private String remindId; + private String status; public String getBusinessCode() { return businessCode; @@ -96,14 +96,6 @@ this.messageType = messageType; } - public String getRelationBusinessId() { - return relationBusinessId; - } - - public void setRelationBusinessId(String relationBusinessId) { - this.relationBusinessId = relationBusinessId; - } - public String getRemindDeptId() { return remindDeptId; } @@ -119,4 +111,12 @@ public void setRemindId(String remindId) { this.remindId = remindId; } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt b/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt new file mode 100644 index 0000000..85287f9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt @@ -0,0 +1,86 @@ +package com.casic.xz.meterage.utils + +import android.content.Context +import com.casic.xz.meterage.callback.OnTagScanResultCallback +import com.pengxh.kt.lite.base.BaseSingleton +import com.rfid.API.* +import com.rfid.API.entityclass.Gate_GpiTriggerStateParameter +import com.rfid.API.entityclass.Gate_TriggerRxdDataStateParameter +import com.rfid.API.entityclass.ScanTagParameter +import com.rfid.ui.GlobalData + +class TagReaderHub private constructor(context: Context) { + + companion object : BaseSingleton() { + override val creator: (Context) -> TagReaderHub + get() = ::TagReaderHub + } + + private var reader: CommonReader = + CommonReader(context, "Reader1", GlobalData.ConnectType.RS232.toString(), "") + private var isScanning = false + private var dataMap = HashMap() + + init { + reader.protocol = ProtocolVersion.CPP + reader.readerProtocol = ProtocolVersion.CPP + reader.portSum = 1 + reader.connect(false, null) + if (reader.isConnected) { + if (isScanning) { + //添加标签读取回调 + reader.reader_StopInventory() + } + //物理按钮 + reader.OnTriggerRxdDataState = + object : RxdGpiTriggerStateHandle, TriggerRxdDataStateHandle { + override fun triggerRxdDataStateHandle( + s: String, stateParameter: Gate_TriggerRxdDataStateParameter + ) { + } + + override fun rxdGpiTriggerStateHandle( + s: String, stateParameter: Gate_GpiTriggerStateParameter + ) { + reader.startScanBarcode() + } + } + } + } + + fun initTagScanResultCallback(callback: OnTagScanResultCallback) { + if (reader.isConnected) { + reader.OnTagDataReceivedHandle = TagDataReceivedHandle { _, tag -> + if (tag.tagType == 0) { + val tid = Util.convertByteArrayToHexString(tag.tid) + if (!dataMap.containsKey(tid)) { + dataMap[tid] = tid + callback.onTagTidScanned(false, tid) + } + } else { + callback.onTagTidScanned(true, tag.barcode) + } + } + } + } + + fun startScan() { + try { + val param = ScanTagParameter() + param.antenna = 1 + param.isLoop = true + param.tidParameter = ByteArray(2) + param.tidParameter = byteArrayOf(0, 4) + dataMap.clear() + reader.reader_Inventory(param, 0x00.toByte()) + isScanning = true + } catch (e: Exception) { + e.printStackTrace() + } + } + + fun stopScan() { + reader.reader_StopInventory() + isScanning = false + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 591d39c..9df9c38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,7 @@ } dependencies { + implementation fileTree(dir: 'libs', include: ['*.aar']) //基础依赖库 implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.6' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git "a/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" new file mode 100644 index 0000000..5cf6cbb --- /dev/null +++ "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" Binary files differ diff --git a/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt new file mode 100644 index 0000000..7519b4b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.callback + +interface OnTagScanResultCallback { + fun onTagTidScanned(isBarCode: Boolean, tid: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java index 5c17778..cb8c679 100644 --- a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java +++ b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java @@ -12,9 +12,9 @@ private String messageTitle; private String messageTopic; private String messageType; - private String relationBusinessId; private String remindDeptId; private String remindId; + private String status; public String getBusinessCode() { return businessCode; @@ -96,14 +96,6 @@ this.messageType = messageType; } - public String getRelationBusinessId() { - return relationBusinessId; - } - - public void setRelationBusinessId(String relationBusinessId) { - this.relationBusinessId = relationBusinessId; - } - public String getRemindDeptId() { return remindDeptId; } @@ -119,4 +111,12 @@ public void setRemindId(String remindId) { this.remindId = remindId; } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt b/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt new file mode 100644 index 0000000..85287f9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt @@ -0,0 +1,86 @@ +package com.casic.xz.meterage.utils + +import android.content.Context +import com.casic.xz.meterage.callback.OnTagScanResultCallback +import com.pengxh.kt.lite.base.BaseSingleton +import com.rfid.API.* +import com.rfid.API.entityclass.Gate_GpiTriggerStateParameter +import com.rfid.API.entityclass.Gate_TriggerRxdDataStateParameter +import com.rfid.API.entityclass.ScanTagParameter +import com.rfid.ui.GlobalData + +class TagReaderHub private constructor(context: Context) { + + companion object : BaseSingleton() { + override val creator: (Context) -> TagReaderHub + get() = ::TagReaderHub + } + + private var reader: CommonReader = + CommonReader(context, "Reader1", GlobalData.ConnectType.RS232.toString(), "") + private var isScanning = false + private var dataMap = HashMap() + + init { + reader.protocol = ProtocolVersion.CPP + reader.readerProtocol = ProtocolVersion.CPP + reader.portSum = 1 + reader.connect(false, null) + if (reader.isConnected) { + if (isScanning) { + //添加标签读取回调 + reader.reader_StopInventory() + } + //物理按钮 + reader.OnTriggerRxdDataState = + object : RxdGpiTriggerStateHandle, TriggerRxdDataStateHandle { + override fun triggerRxdDataStateHandle( + s: String, stateParameter: Gate_TriggerRxdDataStateParameter + ) { + } + + override fun rxdGpiTriggerStateHandle( + s: String, stateParameter: Gate_GpiTriggerStateParameter + ) { + reader.startScanBarcode() + } + } + } + } + + fun initTagScanResultCallback(callback: OnTagScanResultCallback) { + if (reader.isConnected) { + reader.OnTagDataReceivedHandle = TagDataReceivedHandle { _, tag -> + if (tag.tagType == 0) { + val tid = Util.convertByteArrayToHexString(tag.tid) + if (!dataMap.containsKey(tid)) { + dataMap[tid] = tid + callback.onTagTidScanned(false, tid) + } + } else { + callback.onTagTidScanned(true, tag.barcode) + } + } + } + } + + fun startScan() { + try { + val param = ScanTagParameter() + param.antenna = 1 + param.isLoop = true + param.tidParameter = ByteArray(2) + param.tidParameter = byteArrayOf(0, 4) + dataMap.clear() + reader.reader_Inventory(param, 0x00.toByte()) + isScanning = true + } catch (e: Exception) { + e.printStackTrace() + } + } + + fun stopScan() { + reader.reader_StopInventory() + isScanning = false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index ba764dc..3a66a4b 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,12 +8,14 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.callback.OnTagScanResultCallback import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.utils.TagReaderHub import com.casic.xz.meterage.vm.ConfigViewModel import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel @@ -25,12 +27,25 @@ class MainActivity : ApplicationBaseActivity() { private val kTag = "MainActivity" + private var isScanning = false private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 private lateinit var pushConfigViewModel: PushConfigViewModel override fun initData() { + //扫描枪回调 + TagReaderHub.obtainInstance(this) + .initTagScanResultCallback(object : OnTagScanResultCallback { + override fun onTagTidScanned(isBarCode: Boolean, tid: String) { + if (!isBarCode) { + runOnUiThread { + "读取到标签,tid:$tid".show(this@MainActivity) + } + } + } + }) + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String pushConfigViewModel.registerPush(clientId) @@ -122,14 +137,34 @@ } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { "再按一次退出应用".show(this) clickTime = System.currentTimeMillis() - true + return true } else { super.onKeyDown(keyCode, event) } - } else super.onKeyDown(keyCode, event) + } else if (keyCode == 280 || keyCode == 139) { + if (!isScanning) { + isScanning = true + TagReaderHub.obtainInstance(this).startScan() + } else { + TagReaderHub.obtainInstance(this).stopScan() + isScanning = false + } + return true + } + return super.onKeyDown(keyCode, event) + } + + override fun dispatchKeyEvent(event: KeyEvent): Boolean { + if (event.keyCode == 280 || event.keyCode == 139) { + if (event.action == 1) { + TagReaderHub.obtainInstance(this).stopScan() + isScanning = false + } + } + return super.dispatchKeyEvent(event) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 591d39c..9df9c38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,7 @@ } dependencies { + implementation fileTree(dir: 'libs', include: ['*.aar']) //基础依赖库 implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.6' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git "a/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" new file mode 100644 index 0000000..5cf6cbb --- /dev/null +++ "b/app/libs/READERSDK\050JAVA\051_Common_V4.0.14.aar" Binary files differ diff --git a/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt new file mode 100644 index 0000000..7519b4b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/callback/OnTagScanResultCallback.kt @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.callback + +interface OnTagScanResultCallback { + fun onTagTidScanned(isBarCode: Boolean, tid: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java index 5c17778..cb8c679 100644 --- a/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java +++ b/app/src/main/java/com/casic/xz/meterage/model/PushMessageModel.java @@ -12,9 +12,9 @@ private String messageTitle; private String messageTopic; private String messageType; - private String relationBusinessId; private String remindDeptId; private String remindId; + private String status; public String getBusinessCode() { return businessCode; @@ -96,14 +96,6 @@ this.messageType = messageType; } - public String getRelationBusinessId() { - return relationBusinessId; - } - - public void setRelationBusinessId(String relationBusinessId) { - this.relationBusinessId = relationBusinessId; - } - public String getRemindDeptId() { return remindDeptId; } @@ -119,4 +111,12 @@ public void setRemindId(String remindId) { this.remindId = remindId; } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt b/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt new file mode 100644 index 0000000..85287f9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/utils/TagReaderHub.kt @@ -0,0 +1,86 @@ +package com.casic.xz.meterage.utils + +import android.content.Context +import com.casic.xz.meterage.callback.OnTagScanResultCallback +import com.pengxh.kt.lite.base.BaseSingleton +import com.rfid.API.* +import com.rfid.API.entityclass.Gate_GpiTriggerStateParameter +import com.rfid.API.entityclass.Gate_TriggerRxdDataStateParameter +import com.rfid.API.entityclass.ScanTagParameter +import com.rfid.ui.GlobalData + +class TagReaderHub private constructor(context: Context) { + + companion object : BaseSingleton() { + override val creator: (Context) -> TagReaderHub + get() = ::TagReaderHub + } + + private var reader: CommonReader = + CommonReader(context, "Reader1", GlobalData.ConnectType.RS232.toString(), "") + private var isScanning = false + private var dataMap = HashMap() + + init { + reader.protocol = ProtocolVersion.CPP + reader.readerProtocol = ProtocolVersion.CPP + reader.portSum = 1 + reader.connect(false, null) + if (reader.isConnected) { + if (isScanning) { + //添加标签读取回调 + reader.reader_StopInventory() + } + //物理按钮 + reader.OnTriggerRxdDataState = + object : RxdGpiTriggerStateHandle, TriggerRxdDataStateHandle { + override fun triggerRxdDataStateHandle( + s: String, stateParameter: Gate_TriggerRxdDataStateParameter + ) { + } + + override fun rxdGpiTriggerStateHandle( + s: String, stateParameter: Gate_GpiTriggerStateParameter + ) { + reader.startScanBarcode() + } + } + } + } + + fun initTagScanResultCallback(callback: OnTagScanResultCallback) { + if (reader.isConnected) { + reader.OnTagDataReceivedHandle = TagDataReceivedHandle { _, tag -> + if (tag.tagType == 0) { + val tid = Util.convertByteArrayToHexString(tag.tid) + if (!dataMap.containsKey(tid)) { + dataMap[tid] = tid + callback.onTagTidScanned(false, tid) + } + } else { + callback.onTagTidScanned(true, tag.barcode) + } + } + } + } + + fun startScan() { + try { + val param = ScanTagParameter() + param.antenna = 1 + param.isLoop = true + param.tidParameter = ByteArray(2) + param.tidParameter = byteArrayOf(0, 4) + dataMap.clear() + reader.reader_Inventory(param, 0x00.toByte()) + isScanning = true + } catch (e: Exception) { + e.printStackTrace() + } + } + + fun stopScan() { + reader.reader_StopInventory() + isScanning = false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt index ba764dc..3a66a4b 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/MainActivity.kt @@ -8,12 +8,14 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.adapter.ViewPagerAdapter import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.callback.OnTagScanResultCallback import com.casic.xz.meterage.fragment.DetectionPageFragment import com.casic.xz.meterage.fragment.HomePageFragment import com.casic.xz.meterage.fragment.MinePageFragment import com.casic.xz.meterage.fragment.TaskPageFragment import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LocaleConstant +import com.casic.xz.meterage.utils.TagReaderHub import com.casic.xz.meterage.vm.ConfigViewModel import com.casic.xz.meterage.vm.PushConfigViewModel import com.casic.xz.meterage.vm.UserViewModel @@ -25,12 +27,25 @@ class MainActivity : ApplicationBaseActivity() { private val kTag = "MainActivity" + private var isScanning = false private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 private lateinit var pushConfigViewModel: PushConfigViewModel override fun initData() { + //扫描枪回调 + TagReaderHub.obtainInstance(this) + .initTagScanResultCallback(object : OnTagScanResultCallback { + override fun onTagTidScanned(isBarCode: Boolean, tid: String) { + if (!isBarCode) { + runOnUiThread { + "读取到标签,tid:$tid".show(this@MainActivity) + } + } + } + }) + pushConfigViewModel = ViewModelProvider(this)[PushConfigViewModel::class.java] val clientId = SaveKeyValues.getValue(LocaleConstant.PUSH_ID, "") as String pushConfigViewModel.registerPush(clientId) @@ -122,14 +137,34 @@ } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { "再按一次退出应用".show(this) clickTime = System.currentTimeMillis() - true + return true } else { super.onKeyDown(keyCode, event) } - } else super.onKeyDown(keyCode, event) + } else if (keyCode == 280 || keyCode == 139) { + if (!isScanning) { + isScanning = true + TagReaderHub.obtainInstance(this).startScan() + } else { + TagReaderHub.obtainInstance(this).stopScan() + isScanning = false + } + return true + } + return super.onKeyDown(keyCode, event) + } + + override fun dispatchKeyEvent(event: KeyEvent): Boolean { + if (event.keyCode == 280 || event.keyCode == 139) { + if (event.action == 1) { + TagReaderHub.obtainInstance(this).stopScan() + isScanning = false + } + } + return super.dispatchKeyEvent(event) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 7d90746..0468f95 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -5,6 +5,8 @@ import android.content.Intent import android.graphics.Color import android.graphics.Paint +import android.os.Handler +import android.os.Message import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultCallback import androidx.activity.result.contract.ActivityResultContracts @@ -35,6 +37,7 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_entrust_add.* @@ -42,7 +45,7 @@ import java.io.File -class EntrustAddActivity : ApplicationBaseActivity() { +class EntrustAddActivity : ApplicationBaseActivity(), Handler.Callback { private val kTag = "EntrustAddActivity" private val context: Context = this@EntrustAddActivity @@ -54,12 +57,14 @@ private lateinit var fileUploadViewModel: FileViewModel private lateinit var entrustViewModel: EntrustViewModel private lateinit var sampleAdapter: CustomerSampleAdapter + private lateinit var weakReferenceHandler: WeakReferenceHandler private var checkedItems = ArrayList() private var isUrgent = "0" private var sampleModels: ArrayList? = null private var dataBeans = ArrayList() override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) //证书 configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] configViewModel.getDictionaryByCode("certificationType") @@ -162,33 +167,40 @@ val modelsJson = data.getStringExtra("sampleModels") if (!modelsJson.isNullOrBlank()) { sampleModels = gson.fromJson(modelsJson, typeToken) + + weakReferenceHandler.sendEmptyMessage(2023070701) } - - //刷新列表 - dataBeans.clear() - sampleModels?.forEach { - val model = EntrustDetailModel.DataModel.CustomerSampleInfoListModel() - - model.customerName = it.customerName - model.customerNo = it.customerNo - model.id = it.id - model.manufacturingNo = it.manufacturingNo - model.measureLastTime = it.measureLastTime - model.measurePeriod = it.measurePeriod - model.orderId = it.orderId - model.remark = it.remark - model.sampleModel = it.sampleModel - model.sampleName = it.sampleName - model.sampleNo = it.sampleNo - model.validDeadline = it.validDeadline - - dataBeans.add(model) - } - sampleAdapter.notifyDataSetChanged() } } }) + override fun handleMessage(msg: Message): Boolean { + if (msg.what == 2023070701) { + //刷新列表 + dataBeans.clear() + sampleModels?.forEach { + val model = EntrustDetailModel.DataModel.CustomerSampleInfoListModel() + + model.customerName = it.customerName + model.customerNo = it.customerNo + model.id = it.id + model.manufacturingNo = it.manufacturingNo + model.measureLastTime = it.measureLastTime + model.measurePeriod = it.measurePeriod + model.orderId = it.orderId + model.remark = it.remark + model.sampleModel = it.sampleModel + model.sampleName = it.sampleName + model.sampleNo = it.sampleNo + model.validDeadline = it.validDeadline + + dataBeans.add(model) + } + sampleAdapter.notifyDataSetChanged() + } + return true + } + override fun initEvent() { leftBackView.setOnClickListener { finish() }