1
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user