一、官方API
Android官方API給出的經典藍牙連接配接方法有2個
-
createRfcommSocketToServiceRecord
該方法建立的是一種安全的連接配接。意思就是,與藍牙裝置建立連接配接時,如果與藍牙裝置沒有建立過配對關系,那麼連接配接時會先去建立配對關系,然後再執行連接配接;如果與藍牙裝置已建立了配對關系,那麼就會直接執行連接配接。
調用的結果是,連接配接成功的同時也配對成功了。
//建立安全的藍牙連接配接
BluetoothSocket BluetoothSocket
= bluetoothDevice.createRfcommSocketToServiceRecord(UUID.fromString(uuid));
-
createInsecureRfcommSocketToServiceRecord
該方法建立的是一種非安全的連接配接。意思就是,與藍牙裝置建立連接配接時,如果與藍牙裝置沒有建立過配對關系,就會跳過配對過程,直接執行連接配接。
調用的結果是,連接配接成功了,但是沒有建立配對關系。
//建立不安全的藍牙連接配接
BluetoothSocket BluetoothSocket
= bluetoothDevice.createInsecureRfcommSocketToServiceRecord(UUID.fromString(uuid));
二、通過反射擷取的序列槽号連接配接的方法
反射方法擷取的通過序列槽号連接配接方法有2個:
BluetoothSocket BluetoothSocket
= (BluetoothSocket)mmDevice.getClass().getMethod("createRfcommSocket",new Class[] {int.class}).invoke(bluetoothDevice,channel);
BluetoothSocket BluetoothSocket
= (BluetoothSocket) mmDevice.getClass().getMethod("createInsecureRfcommSocket",new Class[] {int.class}).invoke(bluetoothDevice,channel);
預設序列槽号為1,如果實際過程指定了序列槽号連接配接,需要使用指定的序列槽号連接配接。