2015-02-26 119 views
1

我是使用Bluecove API的新手,看來經過大量研究,我仍然無法找到一種方法來檢查RemoteDevice是否已經與運行中的機器配對。Bluecove:檢查設備是否配對?

首先,我成功地開始掃描,但是,我發現奇怪Bluecove沒有提供一種方法來查找處於可發現模式的設備,因此需要檢查是否配對...

爲了更加精確,我正在「翻譯」一個我在C#中開發的項目,使用InTheHand.dll進行藍牙管理。這個程序集非常好,幫助我實現了我想要做的事情:掃描可發現模式和範圍內的設備,啓動配對過程,通過Bluetooth streams處理數據。 我需要用Bluecove做同樣的事情。

爲什麼很難找到答案?文檔幾乎沒有提到配對,儘管我設法配對了一個我不知道通過RemoteDevice.authenticate()配對的設備。

反正summup:

  1. 如何啓動發現模式,只有設備的掃描?
  2. 如何找出設備是否已配對?

注: 同時使用RemoteDevice.isAuthenticated()RemoteDeviceHelper.implIsAuthenticated(remoteDevice)總是返回false無論配對狀態。

注2: 此外,查看RemoteDeviceHelper.javahttp://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 getFriendlyName()的n參數表示代理是否應該查詢設備名稱,但如果設備不可用,則返回緩存名稱(至少我的測試顯示)