Можно ли установить несколько Bluetooth-соединений между одними и теми же устройствами в Android? - PullRequest
6 голосов
/ 23 марта 2012

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

Затем клиент пытается снова подключиться к серверу, чтобы запросить другой файл. Прямо сейчас я получаю java.io.IOException: Device or resource busy при попытке подключения (socket.connect()). Это потому, что Bluetooth (на Android) позволяет только один канал между двумя устройствами? (если бы это было другое устройство, оно бы работало, но если оно не изменилось?) Обратите внимание, что обе попытки выполняются с одним и тем же именем службы и UUID.

Даже если ошибка связана с моим кодом, я хотел бы знать, так ли это на самом деле.

Система: Android 2.2.1 взаимодействует с библиотекой bluecove bluetooth.

Ответы [ 2 ]

6 голосов
/ 14 ноября 2012

Определенно не с тем же UUID (универсальный уникальный идентификатор).

Ссылка на это взята из здесь

Может быть, с более чем одним. Вы можете подключить несколько устройств в стиле Сервер / Клиент, вы можете попробовать установить одно из устройств в качестве сервера и запустить несколько клиентов на другом. Моим первым предположением будет запуск нескольких клиентских потоков, но вам, возможно, придется найти способ изменить MAC-адрес для каждого из них.

Здесь вы можете найти еще одну дискуссию о том, как изменить ваш MAC-адрес, но работает только в корневых устройствах. Я не могу найти ничего другого для нерутированных. Не знаю, как это сделать программно, но это может дать вам начало.

Здесь обсуждается одновременное подключение нескольких клиентов к серверу. Я получил от этот вопрос . (Я думаю, что это может быть ваш ближайший выстрел)

Здесь вы обсуждаете одноранговые сети.

1 голос
/ 23 марта 2012

AFAIK, множественное подключение невозможно в случае подключения Bluetooth.Bluetooth - это подключение API по умолчанию синхронизирован, поэтому возможно только одно подключение за раз.Таким образом, вы не можете выполнить несколько соединений.

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

...