55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
|
let main, receiver, filter, _codeQueryTag = false, temp = [], init = false, start = false;
|
|||
|
export default {
|
|||
|
initScan() {
|
|||
|
if(init) return
|
|||
|
let _this = this;
|
|||
|
main = plus.android.runtimeMainActivity(); //获取activity
|
|||
|
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
|
|||
|
filter = new IntentFilter();
|
|||
|
//android.intent.ACTION_DECODE_DATA
|
|||
|
filter.addAction(uni._qs_scanlistener_action || "com.uniappPda.ACTION"); // 换你的广播动作,你的pda设备里面看
|
|||
|
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
|
|||
|
onReceive: function(context, intent) {
|
|||
|
plus.android.importClass(intent);
|
|||
|
let code = intent.getStringExtra(uni._qs_scanlistener_label || "com.uniapp.gatedge"); // 换你的广播标签,你的pda设备里面看
|
|||
|
_this.queryCode(code);
|
|||
|
}
|
|||
|
});
|
|||
|
init = true
|
|||
|
},
|
|||
|
startScan() {
|
|||
|
if(!start) {
|
|||
|
start = true
|
|||
|
main.registerReceiver(receiver, filter);
|
|||
|
}
|
|||
|
},
|
|||
|
stopScan() {
|
|||
|
if(start) {
|
|||
|
start = false
|
|||
|
main.unregisterReceiver(receiver);
|
|||
|
}
|
|||
|
},
|
|||
|
install(fn) {
|
|||
|
if(typeof fn == 'function' && !~temp.indexOf(fn)) temp.push(fn)
|
|||
|
},
|
|||
|
uninstall(fn) {
|
|||
|
if(typeof fn == 'function') {
|
|||
|
const index = temp.find(i=>i == fn)
|
|||
|
if(~index) temp.splice(index, 1)
|
|||
|
}
|
|||
|
},
|
|||
|
queryCode: function(code) {
|
|||
|
//防重复
|
|||
|
// if (_codeQueryTag) return false;
|
|||
|
// _codeQueryTag = true;
|
|||
|
// setTimeout(function() {
|
|||
|
// _codeQueryTag = false;
|
|||
|
// }, 150);
|
|||
|
if(temp && temp.length) {
|
|||
|
temp[temp.length - 1](code)
|
|||
|
}
|
|||
|
uni.vibrateShort()
|
|||
|
uni.$emit("qs_scanlistener_handle", code);
|
|||
|
}
|
|||
|
}
|