思路:
重写Activity的dispatchKeyEvent()方法 将获取到的内容自定义处理 然后再回调得到扫描内容
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements ScannerKeyEventHelper.OnScanSuccessListener {
private ScannerKeyEventHelper mScannerKeyEventHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mScannerKeyEventHelper = new ScannerKeyEventHelper(this);
}
/**
* 截取按键事件 分发给扫描枪解析类
* 这里没有返回true进行事件拦截是由于 业务需要在HTML中input有焦点时自动查询
* @param event
* @return
*/
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
mScannerKeyEventHelper.analysisKeyEvent(event);
return super.dispatchKeyEvent(event);
}
/**
* 扫描成功回调
* @param barcode
*/
@Override
public void onScanSuccess(String barcode) {
Toast.makeText(MainActivity.this,"扫描枪内容:"+barcode,Toast.LENGTH_SHORT).show();
//根据业务需求处理扫描到的内容
}
@Override
protected void onDestroy() {
mScannerKeyEventHelper.onDestroy();
super.onDestroy();
}
}
扫描枪解析类:
public class ScannerKeyEventHelper {