2012-04-25 125 views
6

我想了解工作客戶端服務器藍牙。 Android是客戶端。 PC是服務器。我發現了code。這工作了三星Galaxy 10.1(安卓3.2),但不工作三星Galaxy S(機器人2.3.3)和HTC野火(Android 2.2)。發現服務遠程藍牙

MY_UUID = UUID.fromString("04c6093b-0000-1000-8000-00805f9b34fb"); 

04-25 18:32:37.023: D/BluetoothCommandService(13665): setState() 1 -> 2 
04-25 18:32:37.033: I/BluetoothCommandService(13665): BEGIN mConnectThread 
04-25 18:32:37.063: E/BluetoothService.cpp(102): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session) 
04-25 18:32:37.103: E/BluetoothCommandService(13665): Unable to start Service Discovery 
04-25 18:32:37.103: E/BluetoothCommandService(13665): java.io.IOException: Unable to start Service Discovery 
04-25 18:32:37.103: E/BluetoothCommandService(13665): at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:367) 
04-25 18:32:37.103: E/BluetoothCommandService(13665): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:201) 
04-25 18:32:37.103: E/BluetoothCommandService(13665): at com.luugiathuy.apps.remotebluetooth.BluetoothCommandService$ConnectThread.run(BluetoothCommandService.java:258) 
04-25 18:32:37.103: D/BluetoothCommandService(13665): setState() 2 -> 1 

回答

6

您的設備出現故障(我想是這樣)。

  1. 我已閱讀有關衆多三星設備和HTC設備的BT問題,但專門針對L2CAP/HID配置文件的問題。 溶液:你可以,如果你使用的是L2CAP

  2. 如果您使用的是方案中提到上述之一,那麼標準UUID使用嘗試

SPP 00001101-0000-1000-使用SPP或RFCOMM 8000-00805F9B34FB

RFCOMM 00000003-0000-1000-8000-00805F9B34FB

編輯

或者您可以嘗試使用反射來獲取你的插座式連接器類似下面的方法

private static BluetoothSocket createBluetoothSocket(
     int type, int fd, boolean auth, boolean encrypt, String address, int port){ 
    try { 
     Constructor<BluetoothSocket> constructor = BluetoothSocket.class.getDeclaredConstructor(
       int.class, int.class,boolean.class,boolean.class,String.class, int.class); 
     constructor.setAccessible(true); 
     BluetoothSocket clientSocket = (BluetoothSocket) 
      constructor.newInstance(type,fd,auth,encrypt,address,port); 
     return clientSocket; 
    }catch (Exception e) { return null; } 
} 
+0

不工作,可以有更多的選擇嗎? – alezhka 2012-04-26 07:01:38

+0

這是工作的是Android 2.3,但不包括2.2 – alezhka 2012-04-26 07:43:20

+0

給你帶來任何新的錯誤或相同issue..and它與所有2.3設備的工作原理,你有 – 2012-04-26 07:44:09

2

試試這個:

static int sdk = Integer.parseInt(Build.VERSION.SDK); 

private static final UUID MY_UUID = 
    UUID.fromString((sdk<=8||sdk>=11)?"04c6093b-0000-1000-8000-00805f9b34fb":"00001101-0000-1000-8000-00805F9B34FB"); 

它已經爲我工作:)
測試在2.1 - 3.3和4.0.4 android版本。

+0

它也爲我工作。但爲什麼?? – Hugo 2015-01-13 08:50:41

+0

我想這是因爲新款智能手機不使用相同的藍牙協議比舊的,因此他們的UUID也發生了變化。 – nonozor 2015-04-16 14:29:55