小编Fre*_*cki的帖子

RxAndroidBle保持持久连接+写入/通知处理

我正在构建一个对蓝牙低功耗有特定要求的Android应用程序.

我需要写一个只写特性并在单独的通知特性上接收响应,我需要在很多很多活动中完成它.是否有Rx方式在第一个特征上发送请求,等待第二个请求的答案,然后继续另一个请求?

另外,为了分享我的RxAndroidBle实例,我想做一些BleManager Singleton,我会公开Observables,所以我可以在我的Presenter中轻松订阅它们.我只是想避免为每个活动复制连接逻辑并且(理想情况下)具有持久连接.这样我只能公开connectionObservable并订阅它,所以我可以轻松发送Write Requests并获取Notifications,但我相信有更好的方法可以做到.

这就是我现在所拥有的:

@Singleton
public class BleManager {

  private PublishSubject<Void> disconnectTriggerSubject = PublishSubject.create();
  private Observable<RxBleConnection> connectionObservable;
  private boolean isConnected;

  private final UUID CTRL_FROM_BRIDGE_UUID = UUID.fromString("someUUID");
  private final UUID BLE_WRITE_CHARACTERISTIC_UUID = UUID.fromString("someOtherUUID");

  private final RxBleClient bleClient;
  private String mMacAddress;
  private final Context context;
  private RxBleDevice bleDevice;

  @Inject
  public BleManager(Context context, RxBleClient client) {
    Timber.d("Constructing BleManager and injecting members");
    this.context = context;
    this.bleClient = client;
  }

  public void setMacAddress(String mMacAddress) {
    this.mMacAddress = mMacAddress;

    // Set the associated device …
Run Code Online (Sandbox Code Playgroud)

android bluetooth-lowenergy rx-java rx-android rxandroidble

9
推荐指数
1
解决办法
3137
查看次数