rfid广播

This commit is contained in:
2025-07-16 17:06:35 +08:00
parent a049fd8ae4
commit 89ae534b45
4 changed files with 105 additions and 14 deletions

View File

@@ -21,28 +21,25 @@
}, },
/* */ /* */
"modules" : { "modules" : {
"Barcode" : {}, "Bluetooth" : {}
"Camera" : {}
}, },
/* */ /* */
"distribute" : { "distribute" : {
/* android */ /* android */
"android" : { "android" : {
"permissions" : [ "permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", "<uses-permission android:name=\"android.permission.BLUETOOTH\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.NFC\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
], ],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ] "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
@@ -87,7 +84,8 @@
} }
} }
} }
} },
"nativePlugins" : {}
}, },
/* */ /* */
"quickapp" : {}, "quickapp" : {},

View File

@@ -32,6 +32,14 @@
} }
} }
,{
"path" : "pages/manage/test",
"style" :
{
"navigationStyle": "custom"
}
}
], ],
"globalStyle": { "globalStyle": {
// "pageOrientation": "landscape", // "pageOrientation": "landscape",

42
pages/manage/test.vue Normal file
View File

@@ -0,0 +1,42 @@
<template>
<view class="zd_container">
<nav-bar :title="title"></nav-bar>
<view class="zd_content">
<text>RFID Data: {{ rfidData }}</text>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import { initRfidScan } from '@/utils/rfid.js'
export default {
components: {
NavBar
},
data() {
return {
rfidData: '', // 存储接收到的 RFID 数据
unregisterRfid: null, // 声明 unregisterRfid 属性
}
},
onLoad (options) {
this.title = options.title
},
onShow() {
// 初始化 RFID 扫描
this.unregisterRfid = initRfidScan((data) => {
this.rfidData = data.rfidEpc; // 更新页面数据
});
},
onHide() {
// 注销 RFID 扫描
if (this.unregisterRfid) {
this.unregisterRfid();
this.unregisterRfid = null;
}
},
methods: {
}
}
</script>

43
utils/rfid.js Normal file
View File

@@ -0,0 +1,43 @@
export const initRfidScan = (callback) => {
// #ifdef APP-PLUS
const main = plus.android.runtimeMainActivity();
const IntentFilter = plus.android.importClass('android.content.IntentFilter');
const filter = new IntentFilter();
filter.addAction('com.ubx.scan.rfid'); // 广播动作
const processedData = new Set(); // 用于记录已处理的数据
let debounceTimer = null; // 用于存储定时器
const debounceDelay = 500; // 防抖延迟时间(毫秒)
const receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: (context, intent) => {
plus.android.importClass(intent);
const rfidEpc = intent.getStringExtra('rfid_epc'); // 广播标签数据
const rfidData = intent.getStringExtra('rfid_data'); // 广播标签数据
// 防抖处理
clearTimeout(debounceTimer);
debounceTimer = setTimeout(() => {
// 检查是否已经处理过该数据
if (!processedData.has(rfidData)) {
processedData.add(rfidData); // 记录已处理的数据
if (callback) {
callback({ rfidEpc, rfidData });
}
} else {
console.log('Duplicate RFID Data:', rfidData);
}
}, debounceDelay);
},
});
main.registerReceiver(receiver, filter);
// 保存引用以便后续注销
return () => {
clearTimeout(debounceTimer); // 清除定时器
main.unregisterReceiver(receiver);
processedData.clear(); // 清空已处理的数据记录
};
// #endif
};