最近需求在扫码枪上开发入库出库的功能,公司选择买了霍尼韦尔扫码枪,下面总结一下使用方法。
//Activity实现BarcodeReader.BarcodeListener,
// BarcodeReader.TriggerListener这两个接口
//创建manager和barcodeReader实例
private static BarcodeReader barcodeReader;
private AidcManager manager;
onCreate()
AidcManager.create(this, new AidcManager.CreatedCallback() {
@Override
public void onCreated(AidcManager aidcManager) {
manager = aidcManager;
barcodeReader = manager.createBarcodeReader();
}
});
@Override
public void onResume() {
super.onResume();
if (barcodeReader != null) {
try {
barcodeReader.claim();
} catch (ScannerUnavailableException e) {
e.printStackTrace();
Toast.makeText(this, "Scanner unavailable", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onPause() {
super.onPause();
if (barcodeReader != null) {
// release the scanner claim so we don't get any scanner
// notifications while paused.
barcodeReader.release();
}
}
onDestroy()
if (barcodeReader != null) {
// close BarcodeReader to clean up resources.
barcodeReader.close();
barcodeReader = null;
}
if (manager != null) {
// close AidcManager to disconnect from the scanner service.
// once closed, the object can no longer be used.
manager.close();
}
//初始化扫码枪
private void initBarcodeReader(){
if (barcodeReader != null) {
// register bar code event listener
barcodeReader.addBarcodeListener(this);
// set the trigger mode to client control触发模式为客户端控制
try {
barcodeReader.setProperty(BarcodeReader.PROPERTY_TRIGGER_CONTROL_MODE,
BarcodeReader.TRIGGER_CONTROL_MODE_AUTO_CONTROL);
} catch (UnsupportedPropertyException e) {
Toast.makeText(this, "Failed to apply properties", Toast.LENGTH_SHORT).show();
}
// register trigger state change listener
barcodeReader.addTriggerListener(this);
Map<String, Object> properties = new HashMap<String, Object>();
// Set Symbologies On/Off
properties.put(BarcodeReader.PROPERTY_CODE_128_ENABLED, true);
properties.put(BarcodeReader.PROPERTY_GS1_128_ENABLED, true);
properties.put(BarcodeReader.PROPERTY_QR_CODE_ENABLED, true);
properties.put(BarcodeReader.PROPERTY_CODE_39_ENABLED, true);
properties.put(BarcodeReader.PROPERTY_DATAMATRIX_ENABLED, true);
properties.put(BarcodeReader.PROPERTY_UPC_A_ENABLE, true);
properties.put(BarcodeReader.PROPERTY_EAN_13_ENABLED, true);
properties.put(BarcodeReader.PROPERTY_AZTEC_ENABLED, false);
properties.put(BarcodeReader.PROPERTY_CODABAR_ENABLED, false);
properties.put(BarcodeReader.PROPERTY_INTERLEAVED_25_ENABLED, false);
properties.put(BarcodeReader.PROPERTY_PDF_417_ENABLED, false);
// Set Max Code 39 barcode length
properties.put(BarcodeReader.PROPERTY_CODE_39_MAXIMUM_LENGTH, 20);
// Turn on center decoding
properties.put(BarcodeReader.PROPERTY_CENTER_DECODE, true);
// Enable bad read response
properties.put(BarcodeReader.PROPERTY_NOTIFICATION_BAD_READ_ENABLED, true);
// Apply the settings
barcodeReader.setProperties(properties);
}
}
@Override
public void onBarcodeEvent(final BarcodeReadEvent barcodeReadEvent) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 处理扫码结果
loadingView.show();
getFiberMessage(barcodeReadEvent.getBarcodeData());
}
});
}
@Override
public void onFailureEvent(BarcodeFailureEvent barcodeFailureEvent) {
}
// When using Automatic Trigger control do not need to implement the
// onTriggerEvent function
@Override
public void onTriggerEvent(TriggerStateChangeEvent triggerStateChangeEvent) {
}
以上是pda的简单使用,sdk和测试用例可在我的资源中自行下载