2012-12-19 148 views
1

我在android api level 15中執行藍牙應用程序,我想要使用藍牙來識別遠程設備。我使用fetchUuidsWithSdp()獲取UUID。我得到所有其他設備,如諾基亞,電腦,但不是Android設備的uuids。在android中識別android藍牙設備

從Doucment,

fetchUuidsWithSdp().//此API是異步的,並且意圖ACTION_UUID發送,與由遠端支撐的UUID。如果在獲取SDP記錄時出現錯誤,或者進程需要很長時間,則ACTION_UUID意圖將與當前存在於緩存中的UUID一起發送。如果不執行服務發現,客戶端應該使用getUuids()來獲取UUID。

來自docs'客戶端應該使用getUuids()',我的問題是,我如何確定UUID是來自其他設備還是來自android?

回答

1

你不能。

Android docs:「UUID的要點是它足夠大,您可以選擇任意隨機數並且不會發生衝突。」

除了串行端口配置文件(SPP)UUID 00001101-0000-1000-8000-00805F9B34FB之外,由於上述原因,沒有衆所周知的UUID。

0x1101是串行端口配置文件的ID - 這就是爲什麼UUID以00001101開頭的原因。因此,您顯然能夠識別其他設備支持的配置文件(這是SDP首要考慮的主要原因)。您可能會嘗試查看設備ID(DID)配置文件,並查看是否有任何可用於檢測對方製造商的信息。

關於您沒有從Android設備獲取任何UUID:確保這些設備通過藍牙實際提供至少一項服務(例如網絡訪問) - 您應該獲得以網絡ID開頭的UUID訪問配置文件(例如PAN)。

和fetchUuidsWithSdp()getUuids之間的差值()是一樣的文檔狀態,即後者實際上執行SDP請求向所述其他設備,而前者只返回那些取出與最後應答(最常見的是一個在發現藍牙2.1+後收到)。

+0

感謝您的回覆,我想要何時使用getUuid()進行android藍牙設備?,我如何知道它是android設備還是其他blutoothDevice對象? –

+0

正如我所說的,如果遠程設備是Android,您無法從BluetoothDevice知道。具體來說,getUuid()也無濟於事。 – domsom

+0

有沒有解決這個問題的方法? –