0

Socket Mobile SDK 文档指出,socket 移动扫描器必须处于“SPP”模式才能使用 SingleEntry 示例。但是,在此模式下进行初始配对时,我测试过的所有 Android 手机似乎都无法识别该设备。它确实显示在配对设备列表中,可以正常连接,但在扫描发生时不会触发任何事件(OnDeviceArrival、OnDecodedData 等)。

我只能按照以下步骤(完全正确)让 SingleEntry 示例应用程序与我的 Socket Mobile S800 一起使用:

  1. 确保扫描仪处于 HID 模式(默认)
  2. 在我的 Android 设备上,扫描可配对的设备。(S800 显示一个键盘图标)
  3. 选择 S800 设备。(S800 在连接时会发出哔声确认)
  4. 设备配对后,取消配对。
  5. 通过扫描相应的代码将 S800 模式更改为“SPP”(推荐模式与 Xamarin SingleEntry 示例一起使用)
  6. 与我的 Android 手机上的 S800 设备重新配对。(S800 图标现在是桌面而不是键盘)
  7. 打开“Socket EZ Pair”应用程序,选择使用蓝牙配对,从列表中选择我的 S800 设备。
  8. 现在 OnDecodedData 回调在 SingleEntry 项目中触发。

在“SPP”模式下,我应该在我的代码中执行哪些“Socket EZ Pair”应用程序以正确配对设备?

有没有更好的跨平台蓝牙扫描解决方案?我只对 OnScan (OnDecodedData) 事件特别感兴趣......

4

1 回答 1

1

更新

解释其实很简单。SingleEntry Xamarin.Android 应用不处理为 ScanAPI 配置扫描仪。

如您所述,配对扫描仪后,您需要使用 EZ Pair 才能让您的应用程序识别扫描仪。这是因为当您使用蓝牙设置配对扫描仪时,它会创建到扫描仪的传出连接,但 ScanAPI 会侦听传入连接。EZ Pair 为您提供配对的蓝牙设备列表,它连接到您选择的设备,并配置该扫描仪以在关闭连接之前重新连接。

SingleEntry Android示例应用程序包含 EZ Pair 逻辑,但 Xamarin 示例不包含。

但是,一旦您使用 EZ Pair 将扫描仪配置为重新连接,您应该会在未修改的 SingleEntry Xamarin.Android 示例应用程序中收到设备到达和解码数据通知。

原始答案

不是解决方案,但很好检查

Android 6.0 中引入了运行时权限,并且 SingleEntry 尚未更新以检查所需的权限。不幸的是,设置目标框架的文件没有签入 git,因此示例应用程序的新克隆现在针对比 SingleEntry 设计的更新版本。

如果您打开设置 > 应用程序 > 单个条目 > 权限并启用存储权限,那么它应该开始工作。

真正的解决方法是在调用应用程序WRITE_EXTERNAL_STORAGE之前检查BLUETOOTH权限。ScanApiHelper.Open()

于 2016-12-21T21:15:23.017 回答