2011-07-31 134 views
2

我想知道如何在Android上通過藍牙廣播信息。如何在Android上通過藍牙廣播信息?

我正在考慮在listenUsingRfcommWithServiceRecord()中使用SDP記錄的服務名稱來廣播信息。但是,我找不到任何方法來讀取SDP記錄的服務名稱。我可以知道有什麼方法可以讀取嗎?

或者還有其他更合適的方法來通過藍牙廣播信息嗎?如果你知道的話,我會告訴你。真的需要爲我的項目快速瞭解這一點。烏爾的幫助將不勝感激。 =)

回答

0

不幸的是,Android藍牙API沒有提供獲取發現服務名稱的公共方法。它也不提供獲取目標設備上正在運行的服務的UUID的方法。但是,在開發我自己的應用程序時,我發現了this post,其中詳細介紹了訪問隱藏方法以提供UUID所需的步驟。當然不支持使用私有API等,但我可以在我的應用程序中使用它。據說,我決定不使用私有API,而是嘗試連接到我想要的服務(使用特定的UUID),捕獲連接嘗試中的任何錯誤。

+0

Thx很多爲你的答案。 =) 1.顯然,隱藏方法只是檢索UUID,而不是SDP記錄的名稱。你如何得到服務的名字? 2.順便說一句,據我所知,一個服務只與一個UUID相關聯,但我看到在後面提到的方法,能夠檢索一個ParcelUUID數組。這是否意味着服務可以與多個UUID關聯? 3.我不確定獲取UUID有什麼用處,因爲如果你能確定你將連接哪個UUID,這是否意味着你事先知道了UUID? – Fenixtriver

+0

你說得對,我有點困惑:-)我會更新我的答案。但是,針對您的問題:1)我無法在Android中找到這樣的方法,這使我重做了基於服務名稱的整個藍牙協議。 2)不,您在ParcelUUID中收到的是您正在檢查的設備上註冊的每項服務的一組UUID。 3)如果您只想連接到您確定正在運行所需服務的設備,則獲取UUID非常有用。對於我的應用程序,這額外的開銷是沒有必要 – zeitkunst

+0

好的,等待你的更新,我想知道一些事情。你正在爲你的應用程序寫一個新的藍牙協議嗎?你是否正在設計你的應用程序來傳播信息呢?如果是的話,是否需要編寫一個藍牙協議來廣播信息?你在覆蓋Android API中的哪一部分? – Fenixtriver