天天看點

【Android】藍牙開發—— 經典藍牙連接配接方法

一、官方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,如果實際過程指定了序列槽号連接配接,需要使用指定的序列槽号連接配接。