2011-10-13 41 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 
}