在一个小团队中,我们正在开发一个可同时部署到Android(平板电脑)和ChromeOS设备上的应用程序。为此,我们有几个构建目标,例如Pixel C,Galaxy Tabs,Asus C302 Chromebook和Pixelbook。
我们正在通过BLE与Windows 10系统开发BLE的应用程序,该系统运行一个接受传入BLE连接的应用程序。我们在应用程序中执行的操作:
将我们的应用程序部署到Android目标时,它成功连接到W10应用程序并检索其服务(onServicesDiscovered)。 但是,当在ChromeOS上运行相同版本的App时,会检索以下异常以获取服务:
08-17 10:46:52.750 3827-3846/com.(our namespace) D/TheApp: BleGattHandler | onServicesDiscovered() called with: gatt = [android.bluetooth.BluetoothGatt@baff2ee], status = [0]
08-17 10:46:52.751 3827-3846/com.(our namespace) W/BluetoothGatt: Unhandled exception in callback
java.lang.NullPointerException: Attempt to invoke virtual method 'android.bluetooth.BluetoothGattCharacteristic android.bluetooth.BluetoothGattService.getCharacteristic(java.util.UUID)' on a null object reference
at com.(our namespace).communication.bluetooth.lowenergy.BleGattHandler.onServicesDiscovered(BleGattHandler.java:90)
at android.bluetooth.BluetoothGatt$1.onSearchComplete(BluetoothGatt.java:237)
at android.bluetooth.IBluetoothGattCallback$Stub.onTransact(IBluetoothGattCallback.java:103)
at android.os.Binder.execTransact(Binder.java:565)
我们的结论是,由于某种原因,ChromeOS无法检索BLE设备的服务。我们在这里茫然不知所措,希望听到您是否有人知道原因或可能的解决方案(我们也欢迎您提供专业帮助)
我们正在使用什么版本的ChromeOS
我们最近(今天)的测试是在Pixelbook上进行的:
我们到目前为止所发现的内容
此ChromeOS问题,但据报告已修复: https://bugs.chromium.org/p/chromium/issues/detail?id=722987
Android app which interacts with BLE devices not working on Chromebook
为什么我们不使用“普通”蓝牙(经典)?
我们当前正在使用C#W10应用连接到该应用。但是,此应用程序目前仅用作存根,并且在不久的将来将被我们正在开发的需要通过BLE进行操作的低功耗嵌入式解决方案(可穿戴产品)取代。因此,我们必须使用BLE。