Когда физически устанавливается BLE-соединение?по телефону установить соединение ()?или назвать первую характеристику после нее? - PullRequest
0 голосов
/ 08 октября 2018

Я на самом деле запутался в ответах на другие вопросы, связанные с 'establishconnection()' и соответствующими обсуждениями.Поскольку я начал работать с установкой подключения BLE устройства с низким энергопотреблением к моему приложению, у меня возникли сомнения относительно физического установления связи между приложением и устройством.В моей программе я вызываю establishconnection() перед чтением характеристики.Но я всегда сталкиваюсь с проблемой соединения между приложением и устройством во время синхронизации после него.Поэтому мне нужно еще раз тщательно проверить процедуру подключения к моему устройству.Не могли бы вы дать мне точный код из приведенных выше пунктов , где физическое соединение с BLE-устройством фактически устанавливается из приложения .

1 Ответ

0 голосов
/ 17 октября 2018

Есть несколько способов узнать, когда происходит точный момент соединения.Это может быть сделано на нескольких уровнях:

Журналы 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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...