2011-01-19 134 views
1

首先,我可以通過藍牙以編程方式連接到設備,前提是我已手動配對。但是,即使使用未更改的示例Android藍牙代碼,我仍未找到(用戶友好的)方式與未配對的設備(顯然是可發現的)進行連接。Android藍牙開發 - 連接到未配對設備

我想彈出配對對話框,要求用戶輸入設備的密鑰。我的代碼會發生什麼,以及樣品Android的藍牙規範,是使一個套接字發現的藍牙設備

device.createRfcommSocketToServiceRecord(MY_UUID); 

將通知添加到屏幕頂部通知欄;但是,用戶甚至不會注意到新的通知(我知道我沒有)。

我該如何彈出配對對話框,提示用戶輸入密鑰 - 或者更好的辦法是自動提供特定設備的密鑰?

+1

我當然不會希望你的程序,如果你自動連接我到不成對的設備。我希望這樣的安全漏洞不存在。 – 2011-01-19 21:29:37

回答

0

您可以使用BlueCove庫來做到這一點。但是,它可能比你想要的要重一點,因爲它需要一個本地組件,但作爲回報,你可以真正使用手機上的藍牙。 Tim:我可以看到一個流氓應用程序如何濫用這種機制,但是有些設備根本不支持傳統的基於PIN的身份驗證方法(例如WiiMote)。

0

我已經看到了這個幾個線程,但還沒有真正找到一個好的 答案。

我正在連接我的nexus 1到藍牙spp服務器設備以讀取 並寫入數據。

一些實驗後,我發現以下

  1. 如果我卸載建立從UI線程 (我會考慮一個好主意)配對對話框的連接(輸入引腳)是 不顯示 - 而是出現通知項目,用戶必須點擊以配對設備。

  2. 如果我在UI線程內建立連接,那麼 配對對話框將會出現在前臺,但顯然在等待這個時會有一個小小的醜陋UI暫停。

在任一情況下,以建立連接的請求被用戶之前超時 (箱)可以輸入與一個IOException服務 發現銷失敗。

我的理想是配對對話框到達前面(沒有 必須阻止我的UI線程),並且在等待配對輸入時連接嘗試不會 超時。

有沒有人想出了一個方法來使這項工作?