【发布时间】:2013-12-03 13:14:23
【问题描述】:
我使用 Nexus 4(4.4 kitkat)作为中心,iPad 作为外围设备。外围设备有一个正在广告的服务。广告数据包有一些数据(22 字节)+ 服务 UUID。当我尝试从发现了Android,iPad外围设备。但是,当我尝试从回调中的scanRecord参数获取服务UUID时,我找不到它。我得到的是外围设备正在发送的20字节数据。当我尝试扫描设备时UUID 我无法发现那些外围设备。
以下是宣传服务的 iOS 代码。使用的服务 id 是“0000192f-0000-1000-8000-00805f9b34fb”
CBUUID *serviceUuid = [CBUUID UUIDWithString:TRANSFER_SERVICE_UUID];
[self.peripheralManager startAdvertising:@{CBAdvertisementDataServiceUUIDsKey : @[serviceUuid],
CBAdvertisementDataLocalNameKey:[[BTLEConfigs sharedBTLEConfig] getAdvertizingUUID]}];
当我在没有服务 UUID 的情况下扫描时发现设备。
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//-- how to retrieve the service id from scanRecord
}
});
}
};
服务是在两个 iOS 设备之间发现的,但在 Android 设备和 iOS 外围设备之间它不起作用。如何使用 16 位服务 UUID 扫描外围设备?感谢任何帮助。
【问题讨论】:
-
我也想找到解决办法。
-
终于我能够从 scanRecord 中获取服务 UUID。这个链接帮助了我 - stackoverflow.com/a/19060589/662025.But 我仍然想知道如何使用 16 位 UUID 扫描传感器。
-
您是否尝试过使用 TRANSFER_SERVICE_UUID=@"192f" ?
标签: android ios bluetooth-lowenergy