2011-10-13 77 views
2

這很奇怪。我正在嘗試在Droid X And​​roid 2.3.4上設置藍牙SPP。我已經包括從試圖打開一個RFCOMM插座,一個是反射(需要支持某些手機)反射問題createRfcommSocket

然而,隨着Droid X的一個奇怪的事情發生了幾個不同的方法。當我第一次連接到藍牙設備我的應用程序打開了和第一次嘗試SPP:

Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); 
mmSocket = (BluetoothSocket) m.invoke(mmDevice, Integer.valueOf(1)); 

而且,如果它不能找到方法,它會嘗試正常

mmSocket = mmDevice.createRfcommSocketToServiceRecord(SerialPortServiceClass_UUID); 

該作品正確的第一次通過。但如果我關閉程序然後重新打開它出於某種原因反射方法然後實際上找到該方法,嘗​​試連接沒有任何錯誤,但它實際上並沒有連接。

如果我關閉應用程序,電源循環藍牙適配器在手機上,然後再試一次它會正常工作。

我對正在發生的事情不知所措,所以任何幫助將不勝感激。

回答

0

好吧,我想出了一個創可貼式的修復,我不是很滿意,但會工作,直到我能找到問題的根源或更好的解決方案。我只需製作一個共享首選項對象,其中包含要嘗試的方法的「級別」。

這些級別標記爲1-4,如果級別設置爲< = =當前級別,則將在未建立連接時嘗試該方法。

if(level<=1){ 
success set level = 1 
fail set level = 0 
} 

if(level<=2){ 
success set level = 2 
fail set level = 0 
} 

... 


if(level<=4){ 
success set level = 4 
fail set level = 0 
}