2013-03-28 1 views
0

Я пишу приложение, которое позволяет своим пользователям автоматически обмениваться данными с другими соседними пользователями через BlueTooth. Как правило, двум пользователям придется вручную соединять друг с другом, прежде чем это произойдет.Как подключиться к пользователям того же приложения через Bluetooth

Мне было интересно, есть ли способ обойти этот шаг и автоматически обнаружить и подключиться к соседним пользователям моего приложения, возможно, используя какую-то подпись идентификатора приложения для обеспечения безопасности?

Спасибо!

+0

Я нашел многообещающее решение в другой статье, используя новый формат Bluetooth: «Один из механизмов SSP позволяет спариваться без какого-либо вмешательства пользователя. Этот метод называется моделью «Just-works», API-интерфейс createInsecureRfcommSocket() использует этот метод. – Argus9

ответ

1

Из вашего комментария видно, что вы уже нашли решение части «соединения» вашего вопроса: API для создания небезопасного соединения без ручного сопряжения.

Но это все еще оставляет открытие. Чтобы создать соединение, вам нужен адрес Bluetooth (bd addr) цели. Для этого вам нужно будет открыть телефон одного пользователя в режиме обнаружения, а затем сделать открытие на другом телефоне. Это невозможно сделать тихо - ваше приложение может вызывать эти режимы, но это заставит телефон запрашивать пользователя. Не так плохо, но, вероятно, не так автоматически, как вы хотите.

Если два телефона находятся в одной сети, они могут обмениваться bd_addr по сети - устраняя необходимость обнаружения. Или это может случиться с сервером в качестве посредника, но это намного больше, если вы еще не планируете иметь сервер.

+0

Да, использование Wi-Fi-сети - интересная идея, но большая часть коммуникаций будет поступать от прямых подключений Bluetooth. Я считаю, что я читал, что вы можете установить в своем коде, как долго устройство остается доступным для обнаружения - так, например, я не мог настроить устройство на постоянное обнаружение, только требуя, чтобы пользователь разрешил это один раз? Это всего лишь идея, и я уверен, что есть соображения безопасности для изучения, но я также планирую предоставить пользователю возможность выбрать, как долго они будут доступны для поиска. Однако это может быть больно, если пользователь должен каждый раз авторизовать его. – Argus9

+0

@ Argus9 Хотя Bluetooth поддерживает идею постоянного обнаружения, а старые телефоны используются для работы таким образом, я считаю, что Android поддерживает только ограниченную по времени возможность обнаружения. Они должны разрешать каждый раз, когда хотят найти нового партнера для общения, но только один раз на одного партнера. Bd_addr не изменяется. – Tom

+0

Я считаю, что есть способ вызова, чтобы сделать устройство доступным для обнаружения, и один из аргументов, который он принимает, - это то, как долго вы хотите, чтобы время обнаружения продолжалось. Если вы положите 0, он останется в режиме обнаружения неопределенно долго. – Argus9

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