我一直试图获得一段代码连接到我买的蓝牙bardcode阅读器,并且几乎尝试了Android Arsenal中的每个库。
目前,我正在使用这个:https://github.com/MacroYau/Blue2Serial
我在清单中拥有所有权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
我还会在应用程序打开时请求权限:
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.BLUETOOTH,
android.Manifest.permission.BLUETOOTH_ADMIN,
android.Manifest.permission.BLUETOOTH_PRIVILEGED,
Manifest.permission.ACCESS_COARSE_LOCATION},
0);
我可以从应用程序连接到扫描仪设备,它配对好了。但是,当我扫描某些内容时,我没有看到public void onBluetoothSerialRead(String message)
方法启动。这与我尝试的所有其他库完全相同。我可以配对,但不能读它。
相反,如果我在同一部手机中打开记事本类型的应用并进行扫描,则会立即将内容写入记事本。
我使用的扫描仪设备是这个:https://www.zebra.com/us/en/products/scanners/companion-scanners/cs4070.html
任何有小费的人都可以给我?
谢谢!
答案 0 :(得分:0)
我能想到一些事情。
(1)您正在阅读设计不佳的&#39;二维条码。一些较旧的&#39;标准&#39;条形码具有简单的校验和,因此使用基于激光的扫描仪的大量随机数据实际上可以产生解码值。如果我没记错的话,Interleaved 2 of 5就是其中之一。
(2)如果您启用了“阅读所有条形码”。可能的是,码字的子序列(白色和黑色空格)映射到有效的条形码定义。我只会启用您实际阅读的二维条码类型。
(3)在Android端,您的蓝牙序列阅读器不能足够快地获取数据。这可以通过扫描仪发送前缀/后缀值来减轻,以便应用程序知道您是否知道这是传输错误。