本篇文章為大家展示了Android中如何使用FastBle藍(lán)牙庫,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護(hù)、公眾號搭建、微信小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!
FastBle VS 原生Android藍(lán)牙API
原生Android的藍(lán)牙API使用有點(diǎn)麻煩,要先獲取設(shè)備的藍(lán)牙適配器,接著注冊廣播來接受藍(lán)牙設(shè)備信息,用完了還需要將廣播給注銷,相對來說有點(diǎn)麻煩。
不好封裝,可以說是原生Android最讓人痛苦的地方,這是因為原生Android的代碼不是很獨(dú)立,與Activity、廣播等相雜糅。市面上的藍(lán)牙庫也是少之又少,先看了看BleLib,感覺還是換湯不換藥,用起來一點(diǎn)也不簡潔。
但是FastLib封裝的就很技巧,基本上能把一個操作的粒度控制在一行內(nèi),另外,代碼也無需與線程、通知之類的打交道,庫中已經(jīng)幫我們把這些復(fù)雜的東西都做完了。
FastBle的Github項目地址在這,大家可以看看:[FastBle - GitHub](https://github.com/Jasonchenlijian/FastBle (本地下載)
它的文檔也相對比較完整,大家可以查看官方文檔來使用它:FastBle - Document
FastBle的使用
0x00 申明權(quán)限
只要使用到了藍(lán)牙,申明權(quán)限是必不可少的,F(xiàn)astBle需要的權(quán)限如下:
這里要注意一點(diǎn),如果Android版本高于6.0,用戶還需要打開位置信息(不光要位置權(quán)限,還需要打開位置信息)才能通過藍(lán)牙進(jìn)行掃描。
0x01 初始化與全局配置
初始化需要在庫中任何函數(shù)被調(diào)用前執(zhí)行,由于庫使用的是單例模式,只需要初始化一次,在哪里都能使用,建議在onCreate里執(zhí)行初始化代碼:
BleManager.getInstance().init(getApplication());
全局配置可以緊跟初始化之后執(zhí)行,當(dāng)然如果不進(jìn)行配置也沒有任何關(guān)系,每一個選項都有默認(rèn)值:
BleManager.getInstance() .enableLog(true) .setReConnectCount(1, 5000) .setSplitWriteNum(20) .setConnectOverTime(10000) .setOperateTimeout(5000);
每一項的詳細(xì)信息你都能在官方文檔中找到說明
0x02 打開藍(lán)牙
使用FastBle中的BleManager類有很多種方式來打開藍(lán)牙,這里推薦使用下面這種方式,這種方式會使線程被阻塞,如果用戶不選擇是否打開藍(lán)牙,線程將會暫停執(zhí)行:
BleManager.getInstance().enableBluetooth();
0x03 掃描設(shè)備
打開藍(lán)牙之后即可掃描設(shè)備,在正式掃描之前,可以自定義掃描規(guī)則,像這樣:
BleScanRuleConfig scanRuleConfig = new BleScanRuleConfig.Builder() .setServiceUuids(serviceUuids) // 只掃描指定的服務(wù)的設(shè)備,可選 .setDeviceName(true, names) // 只掃描指定廣播名的設(shè)備,可選 .setDeviceMac(mac) // 只掃描指定mac的設(shè)備,可選 .setAutoConnect(isAutoConnect) // 連接時的autoConnect參數(shù),可選,默認(rèn)false .setScanTimeOut(10000) // 掃描超時時間,可選,默認(rèn)10秒;小于等于0表示不限制掃描時間 .build(); BleManager.getInstance().initScanRule(scanRuleConfig);
在設(shè)置規(guī)則后,即可開始掃描,像這樣
BleManager.getInstance().scan(new BleScanCallBack() { @Override public void onScanStarted(boolean success) { // 開始掃描的回調(diào) } @Override public void onScanning(BleDevice bleDevice) { // 掃描到一個之前沒有掃到過的設(shè)備的回調(diào) } @Override public void onScanFinished(ListscanResultList) { // 掃描完成的回調(diào),列表里將不會有重復(fù)的設(shè)備 } });
這幾個回調(diào)都是安全的,將會自動返回主線程,所以可以放心使用。
當(dāng)然,在任何地方,任何時候,你都可以直接使用取消掃描這個函數(shù)來停止掃描:
BleManager.getInstance().cancelScan();
0x04 連接設(shè)備
在掃描之后,你已經(jīng)獲取到了一個或多個BleDevice對象,你可以直接使用這些對象向目標(biāo)設(shè)備發(fā)起連接,像這樣:
BleManager.getInstance().connect(bleDevice, new BleGattCallback() { @Override public void onStartConnect() { // 開始連接 } @Override public void onConnectFail(BleDevice bleDevice, BleException exception) { // 連接失敗 } @Override public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) { // 連接成功,BleDevice即為所連接的BLE設(shè)備 } @Override public void onDisConnected(boolean isActiveDisConnected, BleDevice bleDevice, BluetoothGatt gatt, int status) { // 連接中斷,isActiveDisConnected表示是否是主動調(diào)用了斷開連接方法 } });
上述內(nèi)容就是Android中如何使用FastBle藍(lán)牙庫,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。