前言
我們知道PDA(優(yōu)博訊)設(shè)置模塊-輸出方式 有鍵盤方式輸出 和廣播輸出
①.鍵盤方式輸出谬哀,直接調(diào)用uniapp的文本框回車能拿到掃描的值
②.廣播輸出需開(kāi)發(fā)些額外代碼翁狐,需獲取【廣播動(dòng)作】A和【廣播數(shù)據(jù)標(biāo)簽】B忌卤。以下講解用A與B指代了
問(wèn)題點(diǎn):PDA是基恩士牌子(PDA設(shè)置模塊-廣播方式輸出),從瀏覽器測(cè)試是OK的炫掐。安裝apk后需掃2次才獲取到值仓蛆。解決方案:采用廣播方式輸出
先貼2張圖,這里是優(yōu)博訊的掃描設(shè)置
1670815827937_44FDFCB3-D39A-4d29-BAE9-F4BB776F2FAF.png
1670815866773_D11B2059-8DFF-492e-AE98-975203F71976.png
1蝌诡、定義掃描工具類scanCode.js
let main;
let filter;
let receiver;
let tag = false;
/**
* 開(kāi)始廣播監(jiān)聽(tīng)掃碼
*/
const start = () => {
/* #ifdef APP-PLUS */
main.registerReceiver(receiver, filter);
/* #endif */
}
/**
* 停止廣播監(jiān)聽(tīng)掃碼
* that:傳this溉贿;
*/
const stop = () => {
/* #ifdef APP-PLUS */
main.unregisterReceiver(receiver);
/* #endif */
}
/** 剩余下個(gè)變量已經(jīng)做了全局變量
*
* 定義廣播
* that:傳this;
*/
const init = (onReceive) => {
/* #ifdef APP-PLUS */
//獲取activity
main = plus.android.runtimeMainActivity();
const IntentFilter = plus.android.importClass('android.content.IntentFilter');
filter = new IntentFilter();
// 掃描設(shè)置的廣播名稱A(上面指代了)
filter.addAction("android.intent.ACTION_DECODE_DATA");
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function(context, intent) {
plus.android.importClass(intent);
// 掃描設(shè)置的標(biāo)簽名稱B(上面指代了)
const code = intent.getStringExtra("barcode_string");
if (tag) return;
tag = true;
setTimeout(function() {
tag = false;
}, 150);
//到這里掃描成功了浦旱,可以調(diào)用自己的業(yè)務(wù)邏輯宇色,code就是掃描的結(jié)果 return出code進(jìn)行業(yè)務(wù)處理
onReceive && onReceive(code);
}
});
/* #endif */
}
export const broadcastScan = {
init,
start,
stop,
};
2.掛在vue原型鏈上 ,在main.js
import {broadcastScan} from '@/common/scanCode'
Vue.prototype.$broadcastScan=broadcastScan
3.調(diào)用函數(shù)獲取掃描的值
onLoad(option){
this.$broadcastScan.init(this.getScancode);
},
onUnload() {
this.$broadcastScan.stop();
},
onHide() {
this.$broadcastScan.stop();
},
onShow() {
this.$broadcastScan.start();
},
methods:{
getScancode(code){
// 有些PDA會(huì)自帶換行符颁湖,trim函數(shù)處理下
code=code.trim()
//code就是掃描獲取的值
console.log(code)
},
}