天天看點

【Android 應用開發】BluetoothServerSocket詳解

一. BluetoorhServerSocket簡介

1. 繼承關系

public final class BluetoothServerSocket extends Object implements Closeable      

繼承了Object類, 實作了Closeable接口;

Closeable是可以關閉的資料源或者目标, 實作該接口必須重寫close()方法, 調用close()方法可以釋放該對象儲存的資源;

2. 該類簡介

使用BluetoothServerSocket可以建立一個監聽服務端口, 使用accept()方法阻塞, 當該方法監測到連接配接的時候, 就會傳回一個BluetoothSocket對象來管理這個連接配接, 例如擷取輸入輸出流等; 

RFCOMM端口是最常用的藍牙端口, 該端口是面向連接配接的, 通過這個連接配接進行資料傳輸要遵守序列槽行為規範(Serial Port Profile, SPP);

該類用法 : BluetoothServerSocket對象時BluetoothAdapter對象調用listenUsingRfcommWithServiceRecord()方法, 調用accept()方法該方法就會将程序阻塞, 如果有BluetoothSock調用connect()方法連接配接到這個accept()中, 那個這個accept()方法就會傳回一個BluetoothSocket對象;

調用BluetoothServerSocket方法的close()方法, 會釋放該類占用的資源, 但是該類衍生出的BluetoothSocket對象不會被關閉;

二. 公共方介紹

(1)監聽帶逾時連接配接

public BluetoothSocket accept (int timeout)      

作用 : 該方法會阻塞, 知道監聽到一個連接配接, 或者逾時;

參數 : 阻塞時間;

傳回值 : 監聽到的BluetoothSocket連接配接;

(2)監聽連接配接

public BluetoothSocket accept ()      

作用 : 阻塞一直到連接配接建立;

傳回值 : 監聽到的BluetoothSocket連接配接;

(3)關閉端口

public void close ()      

作用 : 關閉端口, 釋放該端口占用的資源;

注意 : 如果這個端口在其它線程中accept()阻塞, 那麼就會跑出異常, 關閉這個端口不會關閉accept()方法傳回的BluetoothSocket對象;