当前位置:首页 > 物联网 > IoT设计分享
[导读]在本教程中,我们将构建一个Android应用程序,我们将能够使用蓝牙用我们自己的Android应用程序控制Arduino的板上LED。但本教程是我们的Android Studio for Internet of Things系列的延续,在那里我们制作了我们的第一个Android应用程序,有一个灯泡和一个按钮的图像。在这个教程中,你需要有一些耐心,请按照这个教程一步一步,因为我有很多错误,而第一次实现它。

在本教程中,我们将构建一个Android应用程序,我们将能够使用蓝牙用我们自己的Android应用程序控制Arduino的板上LED。但本教程是我们的Android Studio for Internet of Things系列的延续,在那里我们制作了我们的第一个Android应用程序,有一个灯泡和一个按钮的图像。在这个教程中,你需要有一些耐心,请按照这个教程一步一步,因为我有很多错误,而第一次实现它。

我们要建造什么?

我们已经在之前的教程中创建了MainActivity。在下面给出的图片中,你可以看到我们在之前的教程中已经做了什么。如果你感兴趣,你可以看看Getting started with Android Studio for Internet of Things

正如你在上面的图片中看到的,我们添加了一个灯泡和一个按钮的图像。每当用户点击按钮时,按钮上的文本和图像将按照上面的第二张图片进行更改。现在,让我们看一下下面的图片,以了解我们将在本教程中构建什么。

正如你在上图中看到的,我们需要构建一个工具栏部分,我用红色矩形标记了它。“IOTAPP”是工具栏的标题,“Connect Bluetooth or WiFi”是工具栏的副标题。我们将根据蓝牙连接的状态更改字幕。当用户点击这三个点时,菜单部分就会弹出。

正如你在上图中看到的,我们有一个菜单部分,有两个项目“蓝牙”和“退出”。在蓝牙中,我们需要添加可以显示配对设备的功能,我们可以通过简单的点击连接任何配对设备。在下图中,您可以发现它正在显示配对的设备。就我而言,我已经将它与HC-06蓝牙模块和我的Desktop配对。

当我点击HC-06,然后它会回到主活动,它会改变工具栏的副标题。在下图中,您可以看到工具栏的标题已更改为“Connected to HC-06”,然后我们将在activity_main.xml文件中添加进度条。

到目前为止,我只是给了您一个应用程序的概述。现在,让我们构建应用程序。在下图中,你可以看到我们已经在教程中讨论过的文件夹结构。在本教程中,我们需要创建更多的类、活动和布局。我在下面的图片中用红色标记了这些文件。

根据上面的图片,您需要创建两个Java类。一个是“DeviceInfoModel”,另一个是“DeviceListAdapter”。要创建这些类,只需按照下图所示的简单步骤操作。

步骤1:右键单击“com.example”。“java”文件夹下的“Yourappname”。然后点击“新建> Java类”。你可以看到屏幕上弹出一个窗口。

第二步:给班级起个名字。您需要执行这两个步骤两次来创建“DeviceInfoModel”和“DeviceListAdapter”类。

现在,我们需要创建“deviceselectactical .java”活动文件和“device_info.xml”布局文件。我不打算在这里解释如何创建活动和布局,因为我已经在我们的第一个教程中提到了创建活动和布局的过程。当您创建“deviceselecactivity .java”活动文件时,“activity_device_select.xml”文件将自动创建。现在您可以打开“activity_main.xml”文件,并按照下面的代码进行主活动的布局。

activity_main.xml文件:

activity_main.xml文件是我们在上一个教程中创建的MainActivity.java文件的布局。现在,我们需要在布局中添加更多的项目。最重要的一个是我在上面一节告诉你的工具栏。您可以使用下面的代码在布局上使用工具栏。

我使用“android: Id =“@+ Id /toolbar””为项目提供了一个Id“toolbar”。

“ android:layout_width=”match_parent“”和“ android:layout_height=”wrap_content“ ”用于给出工具栏的尺寸。

另一个组件是“进度条”。参考下面给出的代码,在布局中添加进度条。所以,我们已经创建了主活动的布局,你可以在下面的图片中看到。

在上面的图片中,你可以看到我们已经添加了一个进度条,我在灯泡图片下方的红色圆圈中提到过。在布局的顶部,您可以找到工具栏。至此,我们已经准备好了主活动的布局文件。

deviceinfommodel类和DeviceListAdapter类:

现在,我们需要准备前面创建的两个类。这些类是“deviceinfommodel”类和“DeviceListAdapter”类。在“deviceinfommodel”类中,我们将保存设备数据(即设备的名称和硬件设备的地址)。“DeviceListAdapter”是一个回收器视图适配器,它将帮助我们从“deviceinfommodel”类中获取设备数据。你可以访问这个链接来了解更多关于ViewModel和RecyclerViewAdapter的信息。

deviceinfommodel类:

在上面的代码中,在DeviceInfoModel公共类中,我们有一个DeviceInfoModel()构造函数,它是模型和适配器类之间的桥梁。

我们有两个getter getDeviceName()和getDeviceHardwareAddress()这两个getter方法用于从设备属性中获取值我们将在主活动中使用这些值。

DeviceListAdapter类:

上面的代码片段中主要有两个变量“context”和“deviceList”。上下文用于访问特定于应用程序的资源和类,以及调用应用程序级操作,如启动活动、广播和接收意图等。deviceList提供了一个可调整大小的数组,这意味着在我们的例子中,设备的名称和地址可以从列表中添加和删除。它实现了List接口。然后我们创建一些Override方法

ViewHolder():在这个方法中,我们定义视图,并根据它们的Id从XML中获取文本视图或图像视图。

1.DeviceListAdapter():创建一个参数化的构造函数——>构造函数是Adapter和Activity之间的中介。

2.onCreateViewHolder():这个方法为用户创建一个视图。

3.onBindViewHolder():该方法将数据与项目列表绑定。

4.getItemCount():该方法指示将在AdapterView中显示的数据集中有多少项(或行)。

我们准备了两个类模型和回收器适配器类。现在,我们需要显示模型类中的数据。

我们将使用“deviceselecactivity .java”和“activity_device_select.xml”文件。

activity_device_select.xml文件:

在activity_device_select.xml文件中,我们需要添加回收器视图,它将帮助我们显示配对设备的列表。下面的代码可用于在应用程序中添加回收者视图。

我已经给了一个ID的RecyclerView使用android: ID ="@+ ID /recyclerViewDevice"。其他属性可用于在布局中给出RecyclerView的适当维度。下图代表了一个回收者视图,你可以看到物品是垂直向下列出的。在我们的示例中,这些项将是设备名称和设备地址。

“deviceselectactical .java”文件:

在deviceselecactivity .java文件中,我们需要显示设备列表,并且需要添加一个方法show,当用户单击设备时,它将保留设备详细信息的记录。然后它会把我们送到主要的活动。您可以按照下面的代码在活动中显示一个回收者视图。

在上面的代码中,BluetoothAdapter允许我们执行基本的蓝牙任务。我使用了蓝牙适配器中可用的一些方法。

getbondeddevices()用于获取配对设备的列表。然后我使用deviceList作为数组,它将存储我们从bluetoothAdapter.getBondedDevices()方法获得的配对设备的列表。我在以下“RecyclerView RecyclerView = findViewById(R.id)”中使用了来自activity_device_select.xml文件的RecyclerView。recyclerViewDevice”线。

然后我调用DeviceListAdapter(),并通过使用“RecyclerView . setadapter (DeviceListAdapter)”方法将适配器设置为RecyclerView。因此,我们准备了deviceselecactivity .java文件来显示配对设备的列表。

MainActivity.java文件:

我已经讨论了主活动文件activity_main.xml的布局。现在,我们需要在MainActivity.java文件中对主活动的后端进行编程。你可以遵循下面的代码,因为我没有必要在这里解释关于Android studio和java的一切。我已经在下面的代码中给出了一些注释,以便您可以对这些概念有一个概述。

蓝牙模块和Arduino Uno原理图

正如我之前所讨论的,我们需要一个Arduino Uno和一个HC-06蓝牙模块来在Arduino Uno和我们的Android应用程序之间建立蓝牙连接。

在上图中,可以看到蓝牙模块的接收器引脚(RXD引脚)用紫色的线连接到Arduino Uno的发射器引脚(TX0引脚),蓝牙模块的发射器引脚(TX0引脚)用橙色的线连接到Arduino Uno的接收器引脚(RXD引脚)。蓝牙模块的VCC引脚与Arduino Uno的5V引脚用红线连接。两块板的GND (Ground)已经用黑线连接。

Arduino Uno的代码

下面的代码是Arduino草图。您可以看到,我们将LED 13定义为一个引脚,以访问Arduino Uno板的内置LED。然后我们使用串行库在蓝牙模块和Arduino Uno之间使用UART通信。将下面的代码上传到Arduino上,并按照上面的原理图连接蓝牙模块。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭