Я использую Nexus 4 (4.4 kitkat) как центральный и iPad как периферийный. Периферийный сервис, который он рекламирует. В рекламном пакете есть некоторые данные (22 байт) + сервис UUID. Когда я пытаюсь отсканировать периферию от Android, iPad периферия обнаружена.Однако, когда я пытаюсь получить UUID службы из параметра scanRecord в обратном вызове, я не смог его найти. Все, что я получаю, это данные в 20байт, которые посылает периферийное устройство. Когда я пытаюсь сканировать устройства с UUID, я не могу обнаружить эти периферийные устройства.
Ниже приведен код iOS для рекламы сервиса. Используемый идентификатор службы "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 службы? Любая помощь приветствуется.