如何阅读蓝牙条码扫描器硬件设备

时间:2017-07-22 23:28:53

标签: android android-bluetooth

我一直试图获得一段代码连接到我买的蓝牙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

任何有小费的人都可以给我?

谢谢!

1 个答案:

答案 0 :(得分:0)

我能想到一些事情。

(1)您正在阅读设计不佳的&#39;二维条码。一些较旧的&#39;标准&#39;条形码具有简单的校验和,因此使用基于激光的扫描仪的大量随机数据实际上可以产生解码值。如果我没记错的话,Interleaved 2 of 5就是其中之一。

(2)如果您启用了“阅读所有条形码”。可能的是,码字的子序列(白色和黑色空格)映射到有效的条形码定义。我只会启用您实际阅读的二维条码类型。

(3)在Android端,您的蓝牙序列阅读器不能足够快地获取数据。这可以通过扫描仪发送前缀/后缀值来减轻,以便应用程序知道您是否知道这是传输错误。