天天看點

android藍牙配對與連接配接,Android藍牙接受()/連接配接()與已配對的裝置

我無法通過藍牙連接配接兩個Android裝置,隻有在配對之前才會發生此問題。我運作一個作為伺服器,另一個作為用戶端。Android藍牙接受()/連接配接()與已配對的裝置

這裡的東西在伺服器端的順序:

檢查各種藍牙狀态(可用擴充卡,啟用等)。

用我選擇的預定義的UUID調用listenUsingRfcommWithServiceRecord()。

請求使裝置可發現

由于可發現異步發生,我調用accept()并等待傳入​​連接配接。

在用戶端:

檢查各種藍牙狀态(擴充卡可用,啟用等)。

getBondedDevices()中的每個裝置,我将getName()與伺服器名稱進行比較。如果比對,請跳到步驟6.

開始BT發現

對于每個發現的裝置(請注意2a的配對裝置不會在此顯示),請将裝置名稱與伺服器名稱進行比較。如果存在比對,則轉到步驟6。

取消發現

在那個從步驟2中找到的裝置,呼叫createRfcommSocketToServiceRecord()與已在伺服器側使用的相同的預先定義的UUID。

調用connect()并等待它傳回連接配接的套接字。

當用戶端和伺服器之前從未配對時,上述過程對我來說工作得非常好。但是,在Android注冊到裝置清單中後,它們将不可避免地在connect()/ accept()階段逾時。

反射方法不為我工作的。看起來connect()會立即傳回,但是當我嘗試getOutputStream()時,我得到一個異常。在accept()方面,它甚至不記錄有人試圖連接配接。我認真需要一些幫助或訓示讓裝置建立連接配接,一旦他們以前配對。

下面是有關裝置的一些資訊:

我測試伺服器和用戶端上的兩個LG G2X手機。

他們都在Android 2.3.3上運作,這對應于API級别10.

同樣,上述工作在我在設定中手動解除裝置配對後運作。

謝謝你提前。我大約在2周内使用Android和藍牙,是以如果您看到任何缺少的步驟或最佳做法,請将它們指出。

2012-02-14

o.c.