Android的外围BluetoothGattServerCallback onServiceAdded()不获取调用

问题描述 投票:2回答:2

所以我有Android Studio中我编码我的三星S8手机上运行一个简单的外围应用。我可以设置所有的BLE广告和特点就好了,但是当我加入我的服务。从另一个中央装置(即另一手机有一个应用程序中发现蓝牙广告)连接时,我没有看到预期的结果。

从Android的工作室logcat的输出:

LogCat output

按照日志,我只能看到这对任何关贸总协定服务器的默认服务2默认服务,这是通用属性(1800)和通用访问(1801)。我觉得我缺少“onServiceAdded()”是应该告诉服务是否确实添加和发现的回调。

我的代码没有错误和addService()调用成功。我的问题是为什么我无法从onServiceAdded得到响应()?虽然像onConnectionStateChange()等覆盖功能似乎很好地工作。这似乎是很基本的,我看着吨的例子,但不能似乎得到这最后一点工作。任何人只要有一个解决方案或一些很好的参考一下将不胜感激。

java android bluetooth bluetooth-lowenergy gatt
2个回答
0
投票

我有同样的问题,这似乎是在客户端(中心)的GATT服务器被重新启动时,先前连接回调不叫。

如果断开所有的客户,并重新从干净的状态服务器(外围),你会看到回调的工作(在我的情况下,即使添加了2个服务)。

我的服务器是三星Galaxy S7(安卓8.0)为好。客户端是7个的Android设备。

(除了这个回调问题:)有一些缓存或奇怪的事情,如果你有以前的连接不与多个服务(一个预定义和自定义一个)很好地工作。在我的情况下,当客户端已经连接和启动时,如果我增加超过1个服务的服务器,gattServer.getService(UUID)是返回null。添加一个服务是好的。


0
投票

我有同样的问题(诺基亚6.1),其中onServiceAdded被称为只有一次,虽然我加入2个服务,我随机得到

onCharacteristicReadRequest() no char for handle nnn

当试图从其他设备连接。

我发现在文档https://developer.android.com/reference/android/bluetooth/BluetoothGattServer.html#addService(android.bluetooth.BluetoothGattService)相关点

该BluetoothGattServerCallback.onServiceAdded(INT,BluetoothGattService)回调将表明是否该服务已成功添加。不要这个回调之前添加其他服务。

该可靠的解决方案,我发现是添加一个服务,等待onServiceAdded被调用,然后添加第二个服务,再等待onServiceAdded,然后我打电话startAdvertising。

© www.soinside.com 2019 - 2024. All rights reserved.