Невозможно отключить блютуз в андроиде с помощью polidea RxAndroidBLE - PullRequest
0 голосов
/ 08 ноября 2018

Здесь я использую в Gradle последнее обновление библиотеки

compile 'com.polidea.rxandroidble: rxandroidble: 1.2.2'

до

compile 'com.polidea.rxandroidble2: rxandroidble: 1.7.1'

Согласно новым обновлениям, подписка теперь одноразовая, а список подписок теперь CompositeDisposable, а отмена подписки - удаление.

Но утилизация не отключает мое оборудование.

 HashMap<String, ConnectionEntry> mConnections = new HashMap<>();
    public Observable<RxBleConnection> getConnection(String mac) {
        if (mConnections.containsKey(mac)) {
            return mConnections.get(mac).getConnectionObservable();
        } else {
            if (isBluetoothEnabled()) {
                ConnectionEntry entry = new ConnectionEntry();
                RxBleDevice rxBleDevice = mRxBleClient.getBleDevice(mac);

                Observable<RxBleConnection> connectionObservable = rxBleDevice
                        .establishConnection(false)
                        .takeUntil(entry.getDisconnectTriggerSubject())
                        .compose(new ConnectionSharingAdapter());

                entry.setConnectionObservable(connectionObservable);
                mConnections.put(mac, entry);
                return connectionObservable;
            }
        }
        return null;
    }
    public void triggerDisconnect(String mac) {
        ConnectionEntry entry = mConnections.get(mac);
        if (entry != null) {
            synchronized (entry.getSubscriptions()) {
                for (Disposable s : entry.getSubscriptions()) {
                    if (s != null && !s.isDisposed()) {
                        s.dispose();
                    }
                }
            }
            entry.getSubscriptions().clear();
            entry.setConnectionObservable(null);
            entry.getDisconnectTriggerSubject();
            entry.removeFlags();
            mConnections.remove(mac);
            Log.d(TAG, "Connection for " + mac + " removed");
        }
    }
...