Flutter使用 Wakelock 插件控制屏幕常亮方法
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比重慶網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式重慶網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋重慶地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
[原文地址 ]
需要使屏幕處于常亮狀態(tài),可以使用Wakelock 插件。
wakelock在android的電源管理系統(tǒng)中扮演一個核心的角色,wakelock是一種鎖的機制, 只要有task拿著這個鎖, 系統(tǒng)就無法進入休眠, 可以被用戶態(tài)進程和內(nèi)核線程獲得。這個鎖可以是有超時的或者是沒有超時的, 超時的鎖會在時間過去以后自動解鎖。如果沒有鎖了或者超時了, 內(nèi)核就會啟動標(biāo)準(zhǔn)linux的那套休眠機制機制來進入休眠。
github介紹:
安裝使用說明:
1、添加到pubspec.yaml 文件
wakelock: ^0.1.4+2
2、獲取插件:flutter pub get
3、在Manifest中添加如下權(quán)限
4在頁面引入和使用:
于是就有了寫作本文的動力,--------解決同時連接多臺藍(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è)備也可以用,可以在模擬器上進行調(diào)試藍(lán)牙
感覺后2個第三方庫都可以使用,本人先入為主使用了flutter_reactive_ble,所以本文以flutter_reactive_ble為基礎(chǔ)進行介紹
先聲明4個全局變量,后面會用到
開始掃描
如果掃描過程,不使用過濾條件,withServices這個參數(shù)可以給個空數(shù)組
停止掃描如下
連接設(shè)備
斷開設(shè)備,
每連接成功一個設(shè)備后,就會產(chǎn)生一個_connectionStreamSubscription,對應(yīng)設(shè)備的斷開,就用對應(yīng)的StreamSubscription去斷開, 可以用一個HashMap,去記錄 連接成功的設(shè)備 與 StreamSubscription 的對應(yīng)關(guān)系
去掃描服務(wù),并過濾服務(wù),掃描結(jié)果服務(wù)里面是包含有特征的數(shù)組,如: serviceId:[fff0,fff1,fff2,fff3,...]
去監(jiān)聽上報來的數(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è)備同時連接的分享就到這里嘍,小伴們,覺得有點用的話,或者已經(jīng)看到這里面來的請點個贊吧~~ 后續(xù)分享更多有關(guān)flutter的文章。如果有疑問的話,請在下方留言~
過一段時間后,我在項目把這個藍(lán)牙庫用起來了,基本能滿足日常需求.效果如下:
未初始化的變量值都是null
var可以接受任意類型的變量,但一旦被賦值,類型就會被確定。
dynamic可以接受任意類型的變量,被賦值后,類型還可以再被賦值再改變。
final與const都可以修飾一個不可變的變量,但final變量是一個運行時常量,在第一次使用的時候被初始化。
const變量是一個編譯時常量,在編譯的時候就被初始化了。所以,const的性能比final高。
a?.cancel():a不為空才會執(zhí)行a的cancel()方法
var i = a??"a是空":a是空時,將a賦值為字符串"a是空"
k??="1":如果k之前沒有賦值,則會被賦值為“1”,如果之前有值,這句話就無效。
例如有一個函數(shù):String say(String from, String msg, [String device])
那么device可以傳也可以不傳值,下面兩種調(diào)用方式都是對的。
例如有一個函數(shù):void fun1({int i,int j}),
使用時:fun1(i = 1)、fun1(j = 10)、fun1(i = 10,j = 20)都可以。
可選位置參數(shù)和可選命名參數(shù)都可以設(shè)置默認(rèn)參數(shù)值
例如:
void fun1({int i = 1,int j = 2})
String say(String from = "a", String msg = "b", [String device = "c"])