最近在寫flutter應(yīng)用,需要集成藍(lán)牙功能,用了一個(gè)第三方的庫,踩了一些坑,做一下記錄。

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),金壇網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:金壇等地區(qū)。金壇做網(wǎng)站價(jià)格咨詢:18982081108
這是庫的地址 PhilipsHue/flutter_reactive_ble: Flutter library that handles BLE operations for multiple devices. (github.com)
安卓主要的坑就是,在使用藍(lán)牙功能的時(shí)候,需要獲取定位權(quán)限,這個(gè)需要?jiǎng)討B(tài)獲取。
集成之后,編譯出錯(cuò),提示Swift Compiler Error。
(1)首先嘗試,修改對應(yīng)三方庫的Swift編譯版本。
我這邊嘗試修改,沒有成功。
(2) 沒辦法,我這邊手動修改三方庫的源碼文件,進(jìn)行修復(fù)。重新編譯成功。
其他問題
近來閑暇時(shí)間一直在做Flutter,閃屏頁是一個(gè)比較常見的需求,網(wǎng)上的閃屏頁教程大部分是那種類似于廣告頁,而非iOS中的 LaunchScreen 性質(zhì)的閃屏頁.按照原來的方案我們要配置閃屏頁的話,我們需要同時(shí)配置兩端的閃屏頁,那么有沒有比較簡單的方案來配置閃屏頁呢? 毋庸置疑,當(dāng)然是有了,那就是Flutter的插件 - flutter_native_splash . 接下來我們就來看一下具體應(yīng)該怎么使用這個(gè)插件.
首先把 flutter_native_splash 導(dǎo)入到工程的 pubspec.yaml 中.這里需要注意的是需要放在 dev_dependencies 下,而不是 dependencies .具體如下所示.
接下來我們就來配置 flutter_native_splash ,在配置之前我們看一下 flutter_native_splash 的可配置項(xiàng).
例如,我現(xiàn)在只有一個(gè)logo圖片,那么我想生成iOS和android兩端的閃屏頁,這時(shí)候我只需在 pubspec.yaml 如下設(shè)置即可.
當(dāng)然了,如果你有其他配置可以自行進(jìn)行添加.
配置完成了,我們該如何生成呢?這時(shí)候需要我們打開終端 cd 到我們的工程目錄下.如果是Android Studio 或者 VSCode 默認(rèn)就是在當(dāng)前工程目錄下.
然后我們需要執(zhí)行下面的三個(gè)命令來生成閃屏頁
每一次都敲三個(gè)命令實(shí)屬麻煩,我們把上訴的三個(gè)命令整合成一個(gè)命令,如下所示.
那么,我們不想使用該插件生成的閃屏頁該怎么辦呢?我們只需要執(zhí)行下面命令即可.
注:每一次更換圖片都是需要重新執(zhí)行命令重新生成.
OK,上面就是關(guān)于 flutter_native_splash 的使用全部內(nèi)容,其實(shí)比較簡單,如果需要定制化的,建議還是各自平臺配置各自的閃屏頁.如果有任何問題歡迎在評論區(qū)批評指導(dǎo),感謝大家了.
于是就有了寫作本文的動力,--------解決同時(shí)連接多臺藍(lán)牙設(shè)備!!!
flutter_blue 適合于單臺的藍(lán)牙設(shè)備,使用起來簡單
flutter_reactive_ble 適合于單臺的藍(lán)牙設(shè)備,多臺藍(lán)牙設(shè)備也可以用
flutter_ble_lib 適合于單臺的藍(lán)牙設(shè)備,多臺藍(lán)牙設(shè)備也可以用,可以在模擬器上進(jìn)行調(diào)試藍(lán)牙
感覺后2個(gè)第三方庫都可以使用,本人先入為主使用了flutter_reactive_ble,所以本文以flutter_reactive_ble為基礎(chǔ)進(jìn)行介紹
先聲明4個(gè)全局變量,后面會用到
開始掃描
如果掃描過程,不使用過濾條件,withServices這個(gè)參數(shù)可以給個(gè)空數(shù)組
停止掃描如下
連接設(shè)備
斷開設(shè)備,
每連接成功一個(gè)設(shè)備后,就會產(chǎn)生一個(gè)_connectionStreamSubscription,對應(yīng)設(shè)備的斷開,就用對應(yīng)的StreamSubscription去斷開, 可以用一個(gè)HashMap,去記錄 連接成功的設(shè)備 與 StreamSubscription 的對應(yīng)關(guān)系
去掃描服務(wù),并過濾服務(wù),掃描結(jié)果服務(wù)里面是包含有特征的數(shù)組,如: serviceId:[fff0,fff1,fff2,fff3,...]
去監(jiān)聽上報(bào)來的數(shù)據(jù),參數(shù)來自前面掃描到的結(jié)果serviceId--服務(wù)ID, characteristicId--特征ID,deviceId--設(shè)備ID
后面就是各位看官根據(jù)自己的需求去做邏輯處理啦。
對設(shè)備設(shè)置命令,發(fā)送請求(寫操作),list為整形數(shù)據(jù),要寫的數(shù)據(jù)
讀取設(shè)備的信息(讀操作)
flutter 多臺藍(lán)牙設(shè)備同時(shí)連接的分享就到這里嘍,小伴們,覺得有點(diǎn)用的話,或者已經(jīng)看到這里面來的請點(diǎn)個(gè)贊吧~~ 后續(xù)分享更多有關(guān)flutter的文章。如果有疑問的話,請?jiān)谙路搅粞詞
過一段時(shí)間后,我在項(xiàng)目把這個(gè)藍(lán)牙庫用起來了,基本能滿足日常需求.效果如下:
國外地址:
國內(nèi)鏡像:
以 flutter_screenutil 為例
路由框架 annotation_route
狀態(tài)管理 provider
UI適配 flutter_screenutil
刷新控件 flutter_easyrefresh
網(wǎng)絡(luò)請求 dio
toast控件 fluttertoast
圖表庫 charts_flutter
網(wǎng)絡(luò)監(jiān)聽 connectivity
事件總線 event_bus
日歷組件 table_calendar
官方webview webview_flutter
第三方webview flutter_webview_plugin
該篇文章為常用依賴包總結(jié),用來記錄所需要的常用依賴包,后續(xù)會不斷擴(kuò)充內(nèi)容~
flutter 藍(lán)牙開發(fā)遇到的坑
最近在做個(gè)flutter藍(lán)牙功能,用的flutter_blue,在iOS上沒有任何問題,照著例子寫完,正常運(yùn)行藍(lán)牙功能,但是在安卓上發(fā)現(xiàn)各種坑,用這個(gè)插件首先是有些設(shè)備拿不到設(shè)備名稱,還有就是讀寫特征和ios上拿到的也不一樣。折騰好久,最后在github上找到外國友人給出的方案,就是用flutter_bluetooth_serial這個(gè)插件可以解決以上問題,就試了一下,結(jié)果真可以解決問題,而且這個(gè)用法感覺比flutter_blue 更強(qiáng)大,不需要通過讀寫特征值進(jìn)行通訊,直接就能通過connection寫入和接收數(shù)據(jù)。做下記錄,希望能幫到有同樣問題的人。因?yàn)槲以谟龅絾栴}時(shí),百度了全是不能解決問題的辦法。
當(dāng)前題目:flutter_ble,flutter_ble寫特征值沒有權(quán)限
新聞來源:http://chinadenli.net/article13/dsisjgs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、定制開發(fā)、網(wǎng)站導(dǎo)航、網(wǎng)站維護(hù)、微信小程序、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)