国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android藍牙庫FastBle的基礎入門使用

2019-10-21 21:47:49
字體:
來源:轉載
供稿:網友

前言

最近在做物聯網課設,過程中需要用到Android的藍牙API,奈何原生的藍牙API使用有點麻煩。于是上網搜索看有沒有好用的Android藍牙庫,然后發現了這個寶貝,給大家分享一下。

FastBle VS 原生Android藍牙API

原生Android的藍牙API使用有點麻煩,要先獲取設備的藍牙適配器,接著注冊廣播來接受藍牙設備信息,用完了還需要將廣播給注銷,相對來說有點麻煩。

不好封裝,可以說是原生Android最讓人痛苦的地方,這是因為原生Android的代碼不是很獨立,與Activity、廣播等相雜糅。市面上的藍牙庫也是少之又少,先看了看BleLib,感覺還是換湯不換藥,用起來一點也不簡潔。

但是FastLib封裝的就很技巧,基本上能把一個操作的粒度控制在一行內,另外,代碼也無需與線程、通知之類的打交道,庫中已經幫我們把這些復雜的東西都做完了。

FastBle的Github項目地址在這,大家可以看看:[FastBle - GitHub](https://github.com/Jasonchenlijian/FastBle  (本地下載

它的文檔也相對比較完整,大家可以查看官方文檔來使用它:FastBle - Document

FastBle的使用

0x00 申明權限

只要使用到了藍牙,申明權限是必不可少的,FastBle需要的權限如下:

<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

這里要注意一點,如果Android版本高于6.0,用戶還需要打開位置信息(不光要位置權限,還需要打開位置信息)才能通過藍牙進行掃描。

0x01 初始化與全局配置

初始化需要在庫中任何函數被調用前執行,由于庫使用的是單例模式,只需要初始化一次,在哪里都能使用,建議在onCreate里執行初始化代碼:

BleManager.getInstance().init(getApplication());

全局配置可以緊跟初始化之后執行,當然如果不進行配置也沒有任何關系,每一個選項都有默認值:

BleManager.getInstance() .enableLog(true) .setReConnectCount(1, 5000) .setSplitWriteNum(20) .setConnectOverTime(10000) .setOperateTimeout(5000);

每一項的詳細信息你都能在官方文檔中找到說明

0x02 打開藍牙

使用FastBle中的BleManager類有很多種方式來打開藍牙,這里推薦使用下面這種方式,這種方式會使線程被阻塞,如果用戶不選擇是否打開藍牙,線程將會暫停執行:

BleManager.getInstance().enableBluetooth();

0x03 掃描設備

打開藍牙之后即可掃描設備,在正式掃描之前,可以自定義掃描規則,像這樣:

BleScanRuleConfig scanRuleConfig = new BleScanRuleConfig.Builder() .setServiceUuids(serviceUuids) // 只掃描指定的服務的設備,可選 .setDeviceName(true, names)  // 只掃描指定廣播名的設備,可選 .setDeviceMac(mac)   // 只掃描指定mac的設備,可選 .setAutoConnect(isAutoConnect) // 連接時的autoConnect參數,可選,默認false .setScanTimeOut(10000)  // 掃描超時時間,可選,默認10秒;小于等于0表示不限制掃描時間 .build();BleManager.getInstance().initScanRule(scanRuleConfig);

在設置規則后,即可開始掃描,像這樣

BleManager.getInstance().scan(new BleScanCallBack() { @Override public void onScanStarted(boolean success) { // 開始掃描的回調 } @Override public void onScanning(BleDevice bleDevice) { // 掃描到一個之前沒有掃到過的設備的回調 } @Override public void onScanFinished(List<BleDevice> scanResultList) { // 掃描完成的回調,列表里將不會有重復的設備 }});

這幾個回調都是安全的,將會自動返回主線程,所以可以放心使用。

當然,在任何地方,任何時候,你都可以直接使用取消掃描這個函數來停止掃描:

BleManager.getInstance().cancelScan();

0x04 連接設備

在掃描之后,你已經獲取到了一個或多個BleDevice對象,你可以直接使用這些對象向目標設備發起連接,像這樣:

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設備 } @Override public void onDisConnected(boolean isActiveDisConnected, BleDevice bleDevice, BluetoothGatt gatt, int status) {  // 連接中斷,isActiveDisConnected表示是否是主動調用了斷開連接方法 }});

當然,在官方文檔中還有很多詳細的說明,這里只是簡單介紹了一下FastBle的基本使用,了解詳情還請看官方文檔。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵊泗县| 亳州市| 论坛| 莆田市| 彩票| 湟源县| 丽江市| 福海县| 酒泉市| 玛沁县| 南郑县| 图木舒克市| 河东区| 疏附县| 怀化市| 龙川县| 台湾省| 巴林左旗| 呼和浩特市| 揭西县| 安岳县| 临沧市| 闽侯县| 麻城市| 肥乡县| 海盐县| 澄迈县| 渭源县| 高尔夫| 康马县| 腾冲县| 垦利县| 淮安市| 通州市| 博客| 大庆市| 肇庆市| 永登县| 蓝田县| 西畴县| 龙里县|