![Uploading Paste_Image_636799.png . . .]
](http://upload-images.jianshu.io/upload_images/2596054-46f96204ef789e92.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
實(shí)現(xiàn)類:RxBleClientImpl
對父親聲明的方法進(jìn)行 具體實(shí)現(xiàn)。
掃描藍(lán)牙設(shè)備
掃描的代碼如下:
rxBleClient.scanBleDevices()
各種檢查(值得借鑒啊Q缟薄):
- 藍(lán)牙是否支持匈子?
- 藍(lán)牙是否啟用?
- 位置權(quán)限是否授予了敌土?
- 位置服務(wù)是否打開了?
繼續(xù):
queuedScanOperations:
他就是個(gè)集合,存儲(chǔ)了當(dāng)前正在被執(zhí)行的 可被觀察的對象(觀察:掃描藍(lán)牙的操作)
繼續(xù):
ok,boss來了:
RxBleRadioOperationScan
RxBleRadioOperationScan
1. 生產(chǎn)
我們只需要關(guān)注生產(chǎn)了什么東西:
掃描調(diào)用了系統(tǒng)的api:bluetoothAdapter.startLeScan(leScanCallback);
掃描到了藍(lán)牙設(shè)備留凭,發(fā)射掃描到的結(jié)果。
Paste_Image.png
2. 操作入隊(duì) 與 可被觀察
rxBleRadio.queue(scanOperation)
Paste_Image.png
3. 控制生產(chǎn)結(jié)果
Paste_Image.png
試想:
你在掃描藍(lán)牙設(shè)備的時(shí)候偎巢,藍(lán)牙關(guān)閉了蔼夜,怎么辦?
告訴訂閱者压昼,藍(lán)牙關(guān)閉了唄求冷。
所以要再觀察一個(gè)東西:
觀察藍(lán)牙開關(guān)狀態(tài)
map:轉(zhuǎn)換了 掃描到的藍(lán)牙設(shè)備對象瘤运。(多包裝了一點(diǎn)信息)
Paste_Image.png
** 觀察吧:**
share:
- public
- refCount
Paste_Image.png
使之可被多個(gè)訂閱者 訂閱。