用Android 開發一個應用,其中想使用藍牙來作數據交換。服務器
先查了一下資料,感受還算簡單,因而就開始了一成天的痛苦歷程。socket
基本上用discover之類的可以很快的發現對方的藍牙設備,可是在spa
創建socket的時候,就出了一堆問題。剛開始,服務端用server
adapter.listenUsingRfcommWithServiceRecordip
加上某個UUID來監聽,同時得到serverSocket,客戶端用 開發
serverDevice.createRfcommSocketToServiceRecordget
來獲取socket,而後就在 socket.connect的時候,出了不少it
奇怪的錯誤。io
最開始是 Service discovery failed ,class
而後是 connection refused,
而後是 File descriptor in bad state
總之搜索了一下,確實千奇百怪的錯誤都有。後來看到有人用
Method m = serverDevice.getClass().getMethod( "createRfcommSocket", new Class[]{int.class});
BluetoothSocket socket = (BluetoothSocket) m.invoke( serverDevice, Integer.valueOf( 1));