83 lines
2.4 KiB
Plaintext
83 lines
2.4 KiB
Plaintext
import Activity from 'android.app.Activity';
|
|
import IntentFilter from 'android.content.IntentFilter';
|
|
import BroadcastReceiver from 'android.content.BroadcastReceiver';
|
|
import Context from 'android.content.Context';
|
|
import Intent from 'android.content.Intent';
|
|
|
|
import { OnScanReceiverCallback } from '../../interface.uts';
|
|
|
|
export default class ScanBroadcastReceiver {
|
|
|
|
private static instance : ScanBroadcastReceiver = new ScanBroadcastReceiver();
|
|
|
|
private context : Context | null = null;
|
|
|
|
private scanBroadcastReceiver: ChainwayScanBroadcastReceiver | null = null;
|
|
|
|
private intentFilter: IntentFilter | null = null;
|
|
|
|
private isOpenScan: boolean = false;
|
|
|
|
private constructor() {
|
|
}
|
|
|
|
static getInstance(context : Context | null) : ScanBroadcastReceiver {
|
|
ScanBroadcastReceiver.instance.context = context;
|
|
return ScanBroadcastReceiver.instance;
|
|
}
|
|
|
|
registerReceiver(callback: OnScanReceiverCallback) {
|
|
this.scanBroadcastReceiver = new ChainwayScanBroadcastReceiver(callback);
|
|
if(this.isOpenScan == false) {
|
|
this.isOpenScan = true;
|
|
}
|
|
this.intentFilter = new IntentFilter();
|
|
this.intentFilter!.addCategory(Intent.CATEGORY_DEFAULT);
|
|
this.intentFilter!.addAction("com.infowedge.data");
|
|
|
|
UTSAndroid.getUniActivity()!.registerReceiver(this.scanBroadcastReceiver, this.intentFilter);
|
|
}
|
|
|
|
unregisterReceiver () {
|
|
let uniActivity: Activity | null = UTSAndroid.getUniActivity();
|
|
if(this.scanBroadcastReceiver != null) {
|
|
uniActivity!.unregisterReceiver(this.scanBroadcastReceiver);
|
|
}
|
|
|
|
//停止扫描
|
|
if (this.isOpenScan){
|
|
this.isOpenScan = false;
|
|
}
|
|
|
|
this.scanBroadcastReceiver = null;
|
|
}
|
|
}
|
|
|
|
class ChainwayScanBroadcastReceiver extends BroadcastReceiver {
|
|
|
|
private callback: OnScanReceiverCallback;
|
|
|
|
constructor(callback: OnScanReceiverCallback) {
|
|
super();
|
|
this.callback = callback;
|
|
}
|
|
|
|
override onReceive(context : Context, intent : Intent) {
|
|
let action = intent.getAction();
|
|
if(action == "com.infowedge.data") {
|
|
//let result = intent.getIntExtra("result", -1);
|
|
//console.log("result: " + result);
|
|
let data = intent.getStringExtra("data_string");
|
|
//let decode_data = intent.getByteArrayExtra("decode_data");
|
|
//console.log("decode_data: " + decode_data.toString());
|
|
//let symbol = intent.getIntExtra("symbology", -1);
|
|
//console.log("symbol: " + symbol)
|
|
//let time = intent.getIntExtra("decode_time", -1)
|
|
//console.log("time: " + time + "ms");
|
|
if(data != null) {
|
|
this.callback(data);
|
|
}
|
|
}
|
|
|
|
}
|
|
} |