2015-01-15 2 views
0

Я использую CoreBluetooth для подключения своего iPhone с устройством, оснащенным Bluetooth 4.0.CoreBluetooth: UUID периферийного устройства является неотъемлемым атрибутом устройства?

напечатать его (в качестве периферийного) UUID:

<CBPeripheral: 0x1742fca80, identifier = B148AD69-1FC7-498C-016F-33BA3BE041A3, name = HMSoft, state = disconnected> 

Интересно, этот идентификатор является ли неотъемлемым атрибутом устройства.

Так как я использую следующий код в андроид получить его UUID, который отличается от того, что я получаю, используя CoreBluetooth в iPhone:

BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
for (ParcelUuid uuid : device.getUuids()) { 
        Log.d("UUID", uuid.getUuid().toString()); 
       } 

(я связываю с тем же устройством, но при print UUID отличается).

+0

Возможный дубликат [Corebluetooth, как получить уникальный UUID?] (Http://stackoverflow.com/questions/12524871/corebluetooth-how-to-get-a-unique-uuid) – Paulw11

+0

** UUID ** периферии уникален в каждом сканировании, но iPhone и Android сканировали разные результаты. – chenzhongpu

+0

Правильно. Данное устройство iOS всегда будет видеть тот же UUID для данного периферийного устройства, но разные устройства iOS получат другой UUID для одного и того же периферийного устройства, а UUID не является MAC-адресом - он создан iOS – Paulw11

ответ

0

Идентификатор в CBPeripheral является случайным образом генерируемым уникальным идентификатором. Это со временем меняется. В случае CBPeripheral нам нужно знать о двух типах UUID. Один из них - ServiceUUID, а другой - CharacteristicUUID. Каждое периферийное вещание передает данные по каждой службе. У одной службы может быть несколько характеристик. Напр. служба информации об устройстве может иметь имя устройства, версию устройства и т. д. в качестве своих характеристик.

См. Следующее изображение для лучшего понимания. CBPeripheral. Apple docs хорошо говорит об этом.

0

Мой первый ответ, поэтому я надеюсь, что не будет делать из себя дурака ;-)

BluetoothDevice.getUuids(): Возвращает поддерживаемые функции (UUIDs) удаленного устройства. То есть UUID услуг, рекламируемых устройством, а не UUID самого устройства. В настоящее время я ищу способ Android для получения UUID обнаруженного устройства BLE ...

Смежные вопросы