2016-09-16 3 views

ответ

0

RxBleConnection экземпляр появляется в методе onConnectionReceived, когда соединение успешно, если BLE разъединены, RxBleConnection будет не в состоянии выполнить любую операцию, как для чтения/записи, которые могут быть захвачены обратного вызова, чтобы определить соединение не удалось

Однако лучший подход будешь проверять на связи не в состоянии обратного вызова он сам, чтобы определить соединение не является активным

Благодаря Swayam

+0

Какой обратный вызов? Я не помню таких в библиотеке –

+0

Когда вы пытаетесь создать соединение, как показано ниже: - connectionSubscription = bleDevice.establishConnection (this, autoConnectToggleSwitch.isChecked()) . Подписка (это :: onConnectionReceived, this :: onConnectionFailure); в случае сбоя соединения вы получите обратный вызов в методе onConnectionFailure, из которого вы можете определить, нет ли активного соединения –

0

Я предполагаю, что вы пытаетесь сохранить RxBleConnection открытым в неактивном способе. В этой ситуации вам нужно будет следить за состоянием соединения самостоятельно. Вы можете сделать это с помощью вспомогательного класса:

static class ConnectionWithState { 
    RxBleConnection connection; 
    boolean isActive; 
} 

И при установлении соединения вобще:

final ConnectionWithState connectionWithState = new ConnectionWithState(); 
final Subscription connectionSubscription = bleDevice 
     .establishConnection(this, false) 
     .subscribe(
       connection -> { 
        connectionWithState.connection = connection; 
        connectionWithState.isActive = true; 
       }, 
       throwable -> connectionWithState.isActive = false, 
       () -> connectionWithState.isActive = false 
     ); 

И разъединитель бы нужно, чтобы вы отказаться от connectionSubscription.

С наилучшими пожеланиями

Смежные вопросы