使用码枪扫收款码等信息时,若当前使用的是部分中文输入法,则会可能出现扫码结果不准确的问题,解决此问题的方法是自定义EditText,并根据实际需求重写dispatchKeyEventPreIme方法。具体方法如下:
/**
* 支持扫码的EditText
* 解决扫码枪与中文输入法冲突的问题
*/
public class ScannerEditText extends AppCompatEditText {
// 扫码结果
public String mResult = "";
// 回调接口
public ScanResultListener mScanResultListener;
public void setScanResultListener(ScanResultListener scanResultListener) {
mScanResultListener = scanResultListener;
}
public ScannerEditText(Context context) {
super(context);
}
public ScannerEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScannerEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
if("Virtual".equalsIgnoreCase(event.get