Есть несколько способов узнать, когда происходит точный момент соединения.Это может быть сделано на нескольких уровнях:
Журналы Android по умолчанию
Обычно при подключении к периферийному устройству BLE в logcat
:
отображается определенная строкаD / BluetoothGatt: onClientConnectionState () - статус = 0 clientIf = 6 устройство = 00: 00: 00: 00: 00: 00
RxAndroidBle
журналы
Можно установить RxBleLog.setLogLevel(RxBleLog.VERBOSE)
, что сделает внутренние журналы библиотеки видимыми.Момент, когда система информирует библиотеку о том, что соединение установлено, помечается журналом:
D / RxBle # BluetoothGatt: onConnectionStateChange newState = 2 status = 0
Низкоуровневая передача ACL
Большинство ОС Android передают информацию, когда установлено низкоуровневое соединение Bluetooth.Чтобы получить к нему доступ, необходимо зарегистрировать BroadcastReceiver
:
Context context = /* your Context */;
IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.d("Connected", "BluetoothDevice[macAddress=" + bluetoothDevice.getAddress() + ']');
}
};
context.registerReceiver(broadcastReceiver, intentFilter);
Это приведет к запуску приведенного ниже журнала:
D / Подключено: BluetoothDevice [macAddress = 00: 00:00: 00: 00: 00]