2016-05-17 3 views
0

Я хочу передать пакет данных iBeacon с телефона Android с флагом данных.Может ли устройство Android действовать как iBeacon с флагом?

Data Flag (0x01) - это спецификация Bluetooth GAP, которая представляет возможности маяка.

Моя ситуация:

В настоящее время я пытаюсь рекламировать с помощью BluetoothLeAdvertiser. Но это не работает, как я думал. Я обнаружил, что я могу только рекламировать «данные, относящиеся к конкретным производителям».

BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE); 
mBluetoothAdapter = manager.getAdapter(); 
mBluetoothLeAdvertiser = mBluetoothAdapter.getBluetoothLeAdvertiser(); 

// Settings here 

mBluetoothLeAdvertiser.startAdvertising(settings, getAdvertiseData(), mAdvertiseCallback); 


Мой текущий результат:

enter image description here


Что я хочу:

Common IBeacon пакетной передачи данных (изображение ниже) имеет флаг данных, Тип 0x01. И я хочу добавить этот флаг в свой рекламный пакет iBeacon.
Это означает, что я хочу добавить необработанные данные «0x020106», чтобы возглавить часть пакета.
Как я могу архивировать это?

enter image description here


Etc:

Я уже читал о вопросе ниже, но это не помогает моей проблемы.
Can an Android device act as an iBeacon?


Кроме того, я уже прочитал, что андроид BLE апи не поддерживает флаг данных.
Но комментарий был в 2015 году, есть ли какие-либо обнадеживающие изменения сейчас?

https://github.com/AltBeacon/android-beacon-library/issues/141

К сожалению, это в настоящее время не допускается Андроида BLE APIs, поэтому библиотека не может этого.


Любая помощь будет оценена. Спасибо.

+0

iBeacon является частью собственной BLE компании Apple. Был законный спор над библиотекой поддержки AltBeacon и Apple не так давно, если память правильно работает. – t0mm13b

+0

Спасибо за ваш комментарий, t0mm13b. Я понимаю. Я хочу сказать, могу ли добавить «Флаг данных (0x01)» с «Специфическими для производителя данными (0xFF)» в моем «Маячном пакете»? –

+0

Вы на самом деле попробовали это в первую очередь? – t0mm13b

ответ

1

К сожалению, API Java BLE от Android не могут этого сделать. Я исследовал эту тему, чтобы ответить на указанную вами Android Beacon Library Issue. API Java позволяет рекламировать только данные службы или данные производителя. Они просто недостаточно гибки, чтобы вы могли указывать любые другие рекламные блоки PDU. Это не изменилось с мая 2016 года.

Возможно, вы сможете сделать все, что захотите, спустившись на более низкий уровень и поговорив с C BlueDroid API. Но для этого потребуется внедренное устройство и, возможно, установка пользовательского образа ОС Android, чтобы предоставить вам доступ.