RxAndroidBLE 源码分析:扫描蓝牙设备

![Uploading Paste_Image_636799.png . . .]
](http://upload-images.jianshu.io/upload_images/2596054-46f96204ef789e92.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

实现类:RxBleClientImpl

对父亲声明的方法进行 具体实现。

扫描蓝牙设备

扫描的代码如下:

rxBleClient.scanBleDevices()

各种检查(值得借鉴啊!):

  1. 蓝牙是否支持?
  2. 蓝牙是否启用?
  3. 位置权限是否授予了?
  4. 位置服务是否打开了?

继续:

queuedScanOperations:

他就是个集合,存储了当前正在被执行的 可被观察的对象(观察:扫描蓝牙的操作)

继续:


ok,boss来了:

RxBleRadioOperationScan


RxBleRadioOperationScan

1. 生产

我们只需要关注生产了什么东西:

扫描调用了系统的api:bluetoothAdapter.startLeScan(leScanCallback);
扫描到了蓝牙设备,发射扫描到的结果。

Paste_Image.png

2. 操作入队 与 可被观察

rxBleRadio.queue(scanOperation)
Paste_Image.png

3. 控制生产结果

Paste_Image.png

试想:
你在扫描蓝牙设备的时候,蓝牙关闭了,怎么办?
告诉订阅者,蓝牙关闭了呗。

所以要再观察一个东西:

观察蓝牙开关状态

map:转换了 扫描到的蓝牙设备对象。(多包装了一点信息)

Paste_Image.png

** 观察吧:**
share

  1. public
  1. refCount
Paste_Image.png

使之可被多个订阅者 订阅。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容