本來想開發一款藍牙軟體,因為網上已經有各種教程,是以本來是沒必要繼續開一編文章來說些什麼的,但是親自體驗過後發現,實際上Android與Android之間的藍牙通訊實在有不少坑,唯有自己總結一下并記錄下來
//采用端口進行連結,這裡值得注意的是,網上基本上第二個參數都表示1,其實這個數值可以是1-30,表示通過1-30之間的某個端口來進行連接配接
Device.getClass().getMethod("createRfcommSocket", new Class[]{int.class}); method.invoke(device, );
如果手機之間通過藍牙通信,那麼必須伺服器先以UUID來建立,用戶端才可以用createRfcommSocketToServiceRecord…..UUID來連結獲得socket,否則永遠timeout,除非使用上述的端口連接配接,既然使用藍牙端口連接配接,那麼同樣的道理服務端也應使用端口建立
常用的伺服器名:bpssp
手機作為伺服器的話,
soctet.getInputStream()
會累積所有未接收的資料流緩存
藍牙多機連結的話,允許6-8台機器對伺服器進行連接配接,此時伺服器應存在一條線程專門負責接收其他機器的連結資訊,另一條線程負責處理對應機器的業務
class OtherServer implements Runnable {
@Override
public void run() {
try {
createLog("createing server");
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
serverSoctet = bluetoothAdapter.listenUsingRfcommWithServiceRecord("btspp", UUID.fromString(uuid));
while (true) {
createLog("waiting connection");
BluetoothSocket soctet = serverSoctet.accept();
new Thread(new ServerThread(soctet)).start();
}
} catch (Exception e) {
}
}
}
親測4.0的藍牙傳輸距離在無障礙的環境下,可以達到數十米