我正在构建一个对蓝牙低功耗有特定要求的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)