Можно ли подключить устройство iOS и Android с помощью Bluetooth?

Мне нужно создать приложение для сопряжения устройства iOS и Android (iPhone 5, iPad 3, Galaxy S3, Nexus 7, все они используют Bluetooth 4.0), а затем отправлять данные друг другу.

  • Ограничен ли этот объем данных? Можем ли мы отправить что-то вроде фотографии или PDF-файла?

Я уже выполнил сопряжение и отправку данных между двумя устройствами iOS с помощью CoreBluetooth и примера кода от Apple BTLE_Transfer

Из того, что я понял, периферийное устройство (сервер) может рекламировать центральное устройство (клиент). Этот центр сканирует вокруг себя, а затем пытается найти Сервер, ища UUID рекламируемой службы.

Когда я делаю сервер на Android, он ждет соединения (прослушивания), я знаю UUID и MAC-адрес моего сервера. Но когда я сканирую с помощью своего iPhone (конечно, ищу тот же UUID), я не могу найти сервер.

  • Так есть ли возможность для сервера Android рекламировать как периферийное устройство на iOS?
  • Или, может быть, возможность для моего iPhone-клиента подключиться с использованием MAC-адреса сервера?

person MarthyrZ    schedule 30.04.2013    source источник
comment
Какую платформу Android с открытым исходным кодом вы используете для BLE? Вы видите это на своем iPhone, если не ищете ограничительный список периферийных устройств? Поскольку TexasInstruments выделила основные этапы обновления прошивки по воздуху через BLE, она должна работать с большими файлами (я слышал, что вам нужно реализовать какие-то уведомления).   -  person Larme    schedule 30.04.2013


Ответы (3)


В: Ограничен ли этот объем данных? Можем ли мы отправить что-то вроде фотографии или PDF-файла?

Bluetooth Low Energy не был оптимизирован для отправки больших объемов данных и не оптимизирован для потоковой передачи. Он больше подходит для периодической отправки небольших фрагментов данных (например, показаний температуры, времени и т. Д.). Взгляните на этот ответ, чтобы понять, чем передача BLE отличается от классического Bluetooth. При этом вы все равно можете отправлять большие объемы данных через BLE, и объем данных неограничен. Однако это может оказаться ненадежным и относительно медленным.

В: Так есть ли возможность для сервера Android размещать рекламу, как периферийное устройство на iOS?

Быть сервером / клиентом - совсем другое дело, чем быть периферийным / центральным: -

Периферийное / центральное определяет способ установления соединения. Центральное устройство должно инициировать соединение. Периферийное устройство должно объявить и дождаться запроса на соединение.

Клиент / Сервер определяет, как распределяются данные. Сервер Gatt хранит данные. Клиент Gatt может читать, записывать или получать уведомления (получая непрерывный поток считываний) этих данных. В большинстве случаев сервер также является периферийным устройством, но это не обязательно.

Итак, чтобы ответить на ваш вопрос, да, сервер может рекламировать как периферийное устройство на iOS. Однако для Android эта функция пока недоступна и будет частью выпуска следующей версии (Android L). Дополнительную информацию см. В этом ответе.

В: Или, может быть, мой клиент iPhone может подключиться с использованием MAC-адреса сервера?

Насколько мне известно, в coreBluetooth вам понадобится UUID, а не MAC-адрес периферийного устройства для подключения к нему. Вам не нужно знать рекламируемые услуги с периферийного устройства. Лучше всего сканировать периферийные устройства, а затем подключаться к тому, с UUID и / или рекламными данными, которые, как вы знаете, принадлежат вашему периферийному устройству.

Надеюсь, это поможет.

person Youssif Saeed    schedule 31.07.2014

Я не уверен. Bluetooth LE - не лучшая идея для передачи больших файлов. В одном телефоне запроса у вас всего 18 байт.

Микросхема Bluetooth Nexus 7 имеет дефект - работает некорректно.

Попробуйте бесплатное приложение для iPhone - Light Blue.

so...

Первый вопрос: да.

Во-вторых: да, но это плохая идея. Адрес MAc в Iphone чередуется каждые 10 минут и все включают / выключают bluetooth.

person Rafał Gawlik    schedule 31.07.2014

В общем, отправку больших файлов лучше всего выполнять с помощью подключения к Интернету (через облако), существует множество фреймворков, которые могут сократить накладные расходы для вас.

Однако главный вопрос по-прежнему заключается в том, как определить, на какое устройство вы хотите отправить данные.

Это может быть несколько способов сделать это самостоятельно, например, использовать BLE или даже звук.

Честно говоря, это большая работа, поэтому, если ваше приложение ориентировано на конечного пользователя, я бы предложил использовать структуру, которая может выполнять кроссплатформенное обнаружение для вас, например: http://p2pkit.io или Google поблизости.

Отказ от ответственности: я работаю в Uepaa, разрабатывая p2pkit для iOS и Android

person p2pkit    schedule 10.05.2016