日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用flutter控制蓝牙通讯_使用Flutter控制蓝牙通讯

發(fā)布時間:2023/12/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用flutter控制蓝牙通讯_使用Flutter控制蓝牙通讯 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景知識視頻教程

Dart和Flutter:完整的開發(fā)人員指南 - 國外課棧?viadean.comFlutter使用Firestore構(gòu)建復(fù)雜的Android和ios應(yīng)用 - 國外課棧?viadean.comFlutter的實際項目 - 國外課棧?viadean.com

您想使用藍牙玩物聯(lián)網(wǎng)設(shè)備,但不能在其中放置任何軟件嗎? 在這里,我們將了解如何使用電話應(yīng)用程序通過藍牙與IoT設(shè)備進行通信。 是使用Android還是iOS? 都可以! 我們將使用Flutter作為移動應(yīng)用程序的開發(fā)框架。 我們將編寫一個nRF連接燈,以便在設(shè)備上進行掃描,連接,讀取和寫入操作。

添加依賴項

>...

更改用于Android的minSdkVersion

Android {

defaultConfig {

minSdkVersion: 19

添加藍牙權(quán)限

我們需要添加使用藍牙和訪問位置的權(quán)限:

Android

在AndroidManifest.xml中添加:

>...

iOS

在Info.plist中添加:

>...

開始

現(xiàn)在是我們的main.dart:

import 'package:flutter/material.dart';

>...

我們將可以通過使用_MyHomePageState小部件內(nèi)的widget.flutterBlue屬性來訪問它。

掃描藍牙設(shè)備

現(xiàn)在開始掃描藍牙設(shè)備,并將其顯示在ListView中。

首先,我們在MyHomePage類中添加一個包含設(shè)備的列表:

>...

并在_MyHomePage類中編寫一個方法,該方法將有助于在列表中填充該方法:

>...

現(xiàn)在,通過在_MyHomePage的initState方法內(nèi)開始掃描來填充它:

注意:開始掃描時,您只會列出尚未連接的設(shè)備。因此,我們還將通過訪問FlutterBlue實例的connectedDevices屬性將已連接的設(shè)備添加到列表中。

>...

現(xiàn)在,我們的列表將填充FlutterBlue通過掃描找到的設(shè)備。

現(xiàn)在,以deviceList作為內(nèi)容構(gòu)建ListView:

>...

將此listView分配為我們主要支架的主體:

>...

現(xiàn)在我們應(yīng)該有附近的支持藍牙的設(shè)備列表。接下來,我們將連接到其中一個,并顯示其具有的服務(wù)和特征。

連接到設(shè)備并顯示具有特征的服務(wù)

出于可讀性考慮,我們將不會創(chuàng)建新視圖來連接到設(shè)備,而是會修改MyHomePage的當(dāng)前內(nèi)容,以使其取決于我們是否已連接。 為此,我們首先要添加一個函數(shù),該函數(shù)將返回正確的視圖以顯示。

因此,讓我們在_MyHomePageState中添加一個表示要連接的設(shè)備的狀態(tài)及其公開的服務(wù)列表:

>...

函數(shù):

>...

_buildConnectDeviceView方法目前尚不做很多事情:

>...

現(xiàn)在,我們的構(gòu)建方法將返回此_buildView:

>...

最后,我們可以在FlatButton的onPressed方法中添加一些邏輯,在該方法中我們將停止FlutterBlue的掃描,連接到該設(shè)備并將該設(shè)備設(shè)置為先前創(chuàng)建的狀態(tài)_connectedDevice并獲取該設(shè)備的服務(wù)并顯示列表。

>...

更改_buildConnectDeviceView如下:

>...

顯示特性

現(xiàn)在,我們有可供使用的服務(wù)列表。我們將顯示每個服務(wù)的特征,并根據(jù)我們是否可以讀取,寫入或通知此功能來添加按鈕。

我們新的_buildConnectDeviceView看起來像這樣:

>...

然后添加一個計算按鈕的函數(shù):

>...

現(xiàn)在的結(jié)果:

讀取,寫入和接收來自特征的通知

最后一步是在讀取,寫入和通知按鈕上添加邏輯。

我們將首先添加一個Map以按特征存儲我們的值,以便能夠顯示它們。

在MyHomePage類中,添加以下內(nèi)容:

>...

然后在_buildConnectDeviceView方法中添加一個新行以顯示我們的值:

>...

讀取

首先讓我們在讀取按鈕的onPressed方法中添加邏輯:

>...

在這里,我們首先聽取特征變化并將其新值存儲在我們先前創(chuàng)建的Map中。然后它將更新我們的視圖并顯示更新的值。

寫入

為了將數(shù)據(jù)發(fā)送到設(shè)備,我們將在對話框內(nèi)創(chuàng)建一個TextField字段,將控制器鏈接到該字段并發(fā)送其內(nèi)容。

因此,讓我們向_MyHomePageState添加一個控制器:

>...

并使用寫入按鈕的onPressed方法內(nèi)部的邏輯創(chuàng)建我們的對話框:

>...

因此,我們只需將傳遞給我們的輸入值調(diào)用特征的write函數(shù),然后使用dart:convert將其轉(zhuǎn)換為字節(jié)數(shù)組

通知

通知只是在每次處理通知的特征值更新時執(zhí)行的回調(diào):

>...

現(xiàn)在,每次此特征的值發(fā)生變化時,我們都會得到通知,這也將更新我們UI中的值。

現(xiàn)在,我們有了一個完整的應(yīng)用程序,可以掃描藍牙設(shè)備,連接到它們,顯示它們的服務(wù),讀取它們的值,更新它們并收到有關(guān)更改的通知。

完整源碼

使用Flutter控制藍牙通訊 - 國外課棧?viadean.com

總結(jié)

以上是生活随笔為你收集整理的使用flutter控制蓝牙通讯_使用Flutter控制蓝牙通讯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。