MTU изменить в следующем примере - PullRequest
0 голосов
/ 03 апреля 2019

Я пишу приложение для Android, которое использует RxAndroidBle, для поддержки моего устройства мне нужен более высокий MTU

Я следовал приведенному примеру библиотеки: https://github.com/Polidea/RxAndroidBle/wiki/Tutorial:-MTU-negotiation

Но это не такcompiling


private ObservableTransformer<RxBleConnection, RxBleConnection> mtuNegotiationObservableTransformer = upstream -> {
        return upstream.doOnSubscribe(ignoredDisposable -> Log.i("MTU", "MTU negotiation is supported")
                     .flatMapSingle(connection ->
                                connection.requestMtu(GATT_MTU_MAXIMUM)
                                        .doOnSubscribe(ignoredDisposable -> Log.i("MTU", "Negotiating MTU started"))
                                        .doOnSuccess(mtu -> Log.i("MTU", "Negotiated MTU: " + mtu))
                                        .ignoreElement()
                                        .andThen(Single.just(connection)));
    };

Сообщение компилятора: не удается разрешить метод 'flatmapsingle'

Почему это не работает?В других частях моего кода я использую .flatMapSingle без проблем.Спасибо за помощь!

1 Ответ

0 голосов
/ 03 апреля 2019

Кажется, есть ошибка в количестве заключительных скобок.Попробуйте следующий код:

private ObservableTransformer<RxBleConnection, RxBleConnection> mtuNegotiationObservableTransformer = upstream -> {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        return upstream.doOnSubscribe(ignoredDisposable -> Log.i("MTU", "MTU negotiation is not supported")); // added a closing bracket here
    }

    return upstream
            .doOnSubscribe(ignoredDisposable -> Log.i("MTU", "MTU negotiation is supported")) // and here
                    .flatMapSingle(connection ->
                            connection.requestMtu(GATT_MTU_MAXIMUM)
                                    .doOnSubscribe(ignoredDisposable -> Log.i("MTU", "Negotiating MTU started"))
                                    .doOnSuccess(mtu -> Log.i("MTU", "Negotiated MTU: " + mtu))
                                    .ignoreElement()
                                    .andThen(Single.just(connection)));
};
...