RxAndroidBLE — простое чтение и отображение 1 значения

Я совершенно новичок в Android Studio. Моя простая цель — прочитать значение из моего BLE112 и отобразить его в приложении. Я использую Android Studio 2.4 Preview 7. Я взял официальный пример кода для RxAndroidBLE и сократил его, но до сих пор не могу его скомпилировать. Любая помощь/предложения будут очень признательны.

Может быть уместно упомянуть мою конечную цель, которая состоит в том, чтобы передать эти значения в график в реальном времени со скоростью 1000 выборок в секунду. У меня уже есть график RealTime, работающий с MPAndroidCharts. Просто нужны значения...

Это текущие ошибки, но я уверен, что есть еще несколько....

Ошибка: (21, 52) ошибка: пакет com.trello.rxlifecycle.android.ActivityEvent не существует Ошибка: (48, 41) ошибка: не удается найти символьную переменную PAUSE


package com.example.monik.rx5;

import android.support.v7.app.AppCompatActivity;

import android.bluetooth.BluetoothGattCharacteristic;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;

import com.polidea.rxandroidble.RxBleConnection;
import com.polidea.rxandroidble.RxBleDevice;
import com.polidea.rxandroidble.RxBleClient;
import com.polidea.rxandroidble.utils.ConnectionSharingAdapter;

import java.util.UUID;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.subjects.PublishSubject;

import com.trello.rxlifecycle.android.ActivityEvent.PAUSE;

public class MainActivity extends AppCompatActivity {

    private static String macAddress = "00:07:80:F2:92:D8";
    private UUID characteristicUuid;
    private PublishSubject<Void> disconnectTriggerSubject = PublishSubject.create();
    private Observable<RxBleConnection> connectionObservable;
    private RxBleDevice bleDevice;
    private RxBleClient bleClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        characteristicUuid = UUID.fromString("F90EA017-F673-45B8-B00B-16A088A2ED61");
        bleClient = RxBleClient.create(this);
        bleDevice = bleClient.getBleDevice(macAddress);
        connectionObservable = prepareConnectionObservable();
        onConnectToggleClick();
        onReadClick();
    }

    private Observable<RxBleConnection> prepareConnectionObservable() {
        return bleDevice
                .establishConnection(false)
                .takeUntil(disconnectTriggerSubject)
                .compose(bindUntilEvent(PAUSE))
                .compose(new ConnectionSharingAdapter());
    }

    public void onConnectToggleClick() {

        if (isConnected()) {
            triggerDisconnect();
        } else {
            connectionObservable
                    .flatMap(RxBleConnection::discoverServices)
                    .flatMap(rxBleDeviceServices -> rxBleDeviceServices.getCharacteristic(characteristicUuid))
                    .observeOn(AndroidSchedulers.mainThread())
                    //.doOnSubscribe(() -> connectButton.setText(R.string.connecting))
                    .subscribe(
                            characteristic -> {
                                Log.i(getClass().getSimpleName(), "Hey, connection has been established!");
                            },
                            this::onConnectionFailure,
                            this::onConnectionFinished
                    );
        }
    }

    public void onReadClick() {

        if (isConnected()) {
            connectionObservable
                    .flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUuid))
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(bytes -> {
                        TextView tv = (TextView) findViewById(R.id.read_output);
                        tv.setText(new String(bytes));
                    }, this::onReadFailure);
        }
    }

    private boolean isConnected() {
        return bleDevice.getConnectionState() == RxBleConnection.RxBleConnectionState.CONNECTED;
    }

    private void onConnectionFailure(Throwable throwable) {
    }

    private void onConnectionFinished() {
    }

    private void onReadFailure(Throwable throwable) {
    }

    private void triggerDisconnect() {
    }

}

person user3286543    schedule 18.07.2017    source источник
comment
Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, поскольку он относится к просмотру кода.   -  person G5W    schedule 19.07.2017


Ответы (1)


Судя по ошибке, в вашем проекте нет библиотеки RxLifecycle. Вы обязательно должны добавить к своему build.gradle:

compile 'com.trello:rxlifecycle:1.0'
compile 'com.trello:rxlifecycle-components:1.0'

Сравните с файлом build.gradle примера проекта и другими используемыми зависимости.

person Dariusz Seweryn    schedule 19.07.2017
comment
Спасибо, это очень полезно. Я попробую это. - person user3286543; 20.07.2017