第一次知道超市用的那种扫描枪居然还可以通过蓝牙连接,直接把扫描结果显示在editText.
既然需求来了那就做把,刚开始一脸懵逼,google一下吧!看了几篇相关的文章大概了解有两种连接蓝牙的方式,一种是自己实现蓝牙的扫描,发现设备,连接设备,但是我觉得只是连一下扫描枪,用不到这么麻烦,因为这还涉及到版本支持,蓝牙4.3以及以上才可以用。还有一种方式,就是自己手动匹配连接扫描枪。这里我使用的是第二种实现方式,因此,这篇文章主要说说,在这种方式下遇到的坑。
扫描枪蓝牙连接或者断开的时候,会导致当前所在的activity onDestroy -> onCreate
即activity被销毁又重建,类似屏幕旋转导致activity重建
解决办法: 在xml中配置:android:configChanges="orientation|keyboard|keyboardHidden"
然后在activity中重写onConfigurationChanged()方法,不做任何处理,就是重写就行了
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
2.扫描枪一般都可以设置为扫描完自带回车。这就遇到问题了,本次扫描完,获取数据,然后edittext的文字不能清空,要一直显示着,直到下一次扫描,这就蛋疼了。
你也许想到了TextWatcher beforeChanged我也是这么想的,但是很纠结,因为有时候会有数据的第一位被清除的尴尬情况:
比如:扫描出来的数据应该是 1234567890;
但用了如上方法有时候文本框会只显示 234567890.
这样肯定不行。 后来想到通过hint做些文章。
扫描完成,获取扫描的数据后,就把文本框清空,然后把数据设置成hint, 然后hint文字的颜色跟输入的文字颜色相同。