2015-02-26 5 views
1

Я новичок в использовании Bluecove API, и кажется, что после многих исследований я все еще не могу найти способ проверить, уже ли подключен RemoteDevice к работающей машине или нет.Bluecove: проверьте, спарено ли устройство?

Прежде всего, мне удалось запустить сканирование, однако мне показалось странным, что Bluecove не предлагает способ искать устройства, находящиеся в режиме обнаружения, следовательно, необходимо проверить, спарен или нет.

Чтобы быть более точным, я переводил проект, который я разработал на C#, используя InTheHand.dll для управления Bluetooth. Эта сборка велика и помогла мне достичь того, что я хотел: сканировать устройства в режиме обнаружения и в диапазоне, инициировать процесс сопряжения, обрабатывать данные через Bluetooth streams. Мне нужно сделать то же самое с Bluecove.

Почему так сложно найти ответы? В документации почти ничего не сказано о спаривании, хотя мне удалось соединить устройство, которое, как я знал, не было сопряжено через RemoteDevice.authenticate().

Во всяком случае summup:

  1. Как начать сканирование только устройства в режиме обнаружения?
  2. Как узнать, было ли устройство уже сопряжено или нет?

Примечание: использование как RemoteDevice.isAuthenticated() и RemoteDeviceHelper.implIsAuthenticated(remoteDevice) всегда возвращает false независимо от парного состояния.

Примечание 2: Кроме того, имея lookg на RemoteDeviceHelper.java от http://bluecove.googlecode.com/svn/trunk/bluecove/src/main/java/com/intel/bluetooth/RemoteDeviceHelper.java, есть частная собственность для boolean paired.

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

Даже страннее и desperatly frustating в режиме отладчика, глядя на определенном RemoteDevice, я могу увидеть значение этого свойства. Это действительно неверно, если устройство не сопряжено, и верно, если устройство сопряжено! Так почему же API не может мне так сказать?

Что мне делать? Спасибо за помощь !

ответ

0

Список спаренных устройств:

import javax.bluetooth.* 
... 
RemoteDevice[] rdList = LocalDevice.getLocalDevice().getDiscoveryAgent().retrieveDevices(DiscoveryAgent.PREKNOWN); 

Получить имя & адрес парного устройства:

rdList[0].getBlueToothAddress(); 
rdList[0].getFriendlyName(true); 

Некоторые комментарии:

  1. список сопряженных устройств может содержать множество устройств, имеющих одно то же имя
  2. boolea n параметра getFriendlyName() означает, что агент должен запрашивать устройство для его имени, но возвращает имя кэша, если устройство недоступно (по крайней мере, мои тесты показали это)
Смежные вопросы