我正在尝试使用 4.3 中的新 BTLE API 在 Nexus 7 上实现 BTLE 服务器。我遇到了几个问题。首先,SDK 中没有示例。唯一的例子是针对客户的。其次,文档实际上告诉你做错误的事情。它指出,人们必须使用BluetoothAdapter.getProfileProxy() with a BluetoothProfile.GATT_SERVER
参数来获取BluetoothGattServer
目的。这种方法可行,但无法将其实施联系起来BluetoothGattServerCallback
到 BLE 堆栈。 (此回调是响应客户端读写请求等的方式。)但是,在遇到问题 58582 后,一位开发人员指出了新的BluetoothManager.openGattServer()
方法将您的回调作为参数并返回BluetoothGattServer
目的。嗯,一个问题解决了。
下一个问题就比较麻烦了。这BluetoothGattServer
文档指出,可以使用此类来创建和宣传蓝牙 LE 服务和特性。创建服务等不是问题,但他们忽略了如何开始广告。类本身或我能找到的任何其他类中没有方法。
有谁知道如何做到这一点?目前我所能看到的就是使用与客户使用的相同的方法,但该方法涉及扫描(这不是广告)。所有文件进一步表明BluetoothAdapter.startLeScan()
确实只是用于扫描。
那么,一旦我的所有服务、特征和描述符就位,我该如何调用广告呢?
据我了解,Android实现只能充当中央设备,而不能充当外围设备。在低功耗蓝牙中,只有外围设备可以进行广播。中央设备可以扫描来自外围设备的广告,并发送连接请求作为对(某些类型)广告的答复,以创建与外围设备的连接。
在BLE中,概念之间是有区别的中枢/周边 and 服务器/客户端:
所以回答你的问题:你不能调用广告。您必须开始扫描外围设备才能连接到其中一个或多个。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)