Как получить блютуз сопряженных устройств в зоне - PullRequest
2 голосов
/ 03 августа 2011

Я хочу получить список всех устройств в этом районе.

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

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

Спасибо за помощь

Ответы [ 3 ]

2 голосов
/ 04 мая 2012

Я решил это, попытавшись подключиться к устройству.Кажется, он работает до тех пор, пока рассматриваемое устройство действительно прослушивает соединение.Если вы не знаете, с каким типом устройства вы имеете дело, вам необходимо выполнить поиск доступных служб, которые он предоставляет.Это немного странно, поскольку кажется, что вызвать getUuids можно только с помощью отражения.См. Код ниже.

try {
    Method method = device.getClass().getMethod("getUuids"); /// get all services
    ParcelUuid[] parcelUuids = (ParcelUuid[]) method.invoke(device); /// get all services

    BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(parcelUuids[0].getUuid()); ///pick one at random
    socket.connect();
    socket.close();
} catch (Exception e) {
    Log.e("BluetoothPlugin", device.getName() + "Device is not in range");
}
1 голос
/ 03 августа 2011

Устройства Bluetooth, которые у меня есть, не могут быть обнаружены после их соединения, поэтому обнаружение не перечисляет их.Это природа устройств (никто другой не может использовать устройство, если вы его уже используете), а не ограничение Android API.

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

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

1 голос
/ 03 августа 2011

Для этого нет прямого API, вы можете сравнить обычные устройства, которые были возвращены discovery и getBondedDevices, чтобы найти связанные устройства поблизости и которые видимы / обнаруживаемы.

...