Red de conocimiento informático - Computadora portátil - Protocolo Bluetooth de Android: emparejamiento y conexión Bluetooth

Protocolo Bluetooth de Android: emparejamiento y conexión Bluetooth

Antes de conectarse, un dispositivo Bluetooth primero verificará si el dispositivo se ha emparejado. De lo contrario, se emparejará primero. Una vez completado el emparejamiento, se iniciará la conexión.

La conexión Bluetooth se inicia en el método onPreferenceTreeClick de la lista de dispositivos DeviceListPreferenceFragment.

DeviceListPreferenceFragment es una lista de dispositivos Bluetooth. Haga clic en uno de los dispositivos Bluetooth para iniciar el proceso de conexión Bluetooth.

Llame al método onDevicePreferenceClick y luego llame al método onClicked de BluetoothDevicePreference para iniciar la conexión y detectar el estado antes de la conexión.

Obtenga el estado de enlace de mCachedDevice

El método de par llamará a CachedBluetoothDevice.startPairing para iniciar el emparejamiento

createBond llama al método BluetoothDevice.createBond y BluetoothDevice. .createBond luego llama al método IBluetooth.createBond, el servicio remoto de Bluetooth se llamará a continuación.

Al igual que el escaneo de Bluetooth, la clase que implementa la interfaz IBluetooth es AdapterServiceBinder.

AdapterServiceBinder implementa la interfaz IBluetooth.Stub y es una clase interna privada de AdapterService. se reenviará a AdapterService para su procesamiento, por lo que el método IBluetooth.createBond llamará al método AdapterService.createBond.

El método createBond comprobará la información de atributos del dispositivo remoto, cancelará la tarea de escaneo de Bluetooth nuevamente y transferirá la tarea de emparejamiento a mBondStateMachine, que procesará la información.

El estado inicial de la máquina de estado BondStateMachine es StableState, por lo que BondStateMachine.CREATE_BOND es procesado por StableState, y StableState llama al método BondStateMachine.createBond en ProcessMessage

El método createBondNative se implementa en com_android_bluetooth_btservice_AdapterService.cpp