极速版手机蓝牙APP开发

news/2024/10/24 5:18:07/

极速版手机蓝牙APP开发

  • 零、效果展示
  • 一、环境介绍
  • 二、开发过程
    • 控件布局
    • 代码逻辑
      • 蓝牙部分
      • 摇杆部分
      • 其他部分
  • 三、整体优化
  • 四、结束语

零、效果展示

“这是一个充满科技风的手机蓝牙APP”
在这里插入图片描述

一、环境介绍

App Inventor是一款谷歌公司开发的手机编程软件,主要支持各种安卓软件的开发。不知道大家是否在做单片机项目时,是否遇到这样的一个烦恼,需要一款蓝牙APP来实现控制功能,但市面上现成的蓝牙APP并不好用,实现的功能参差不齐,但如果用Android Studio开发,需要花费大量时间,有没有一种能够实现快速开发的软件呢?Appinventor非常适合想编写自己的app,但是又没有专业的学过app开发的人,能够让你根据自己的想法迅速出一个demo。而且,秉承着前人栽树,后人乘凉的思路,有前辈对该环境进行了维护管理,适合在国内使用,不仅可以通过下载资源包在电脑上部署离线环境,也可以直接在网页实现编程。
在这里插入图片描述

二、开发过程

在App Inventor项目开发中,首先是界面设计和布局,部署好相应的控件(常见的有按键、显示框等等),然后通过图形化编程实现相关逻辑功能,验证功能是否按预期需求实现,最后进行界面优化。以下为整个工作区。
在这里插入图片描述
切记,在整个开发过程中,一定不要盲目地从头干到尾,要结合AI伴侣、USB模拟器实时的观察,及时对自己设计不合理的地方去改进。

控件布局

在这一步中首先需要明确本项目要用到哪些控件,比如要用多少个按键,按键的位置要放在何处等等这些问题,由于控件的位置摆布需要用到垂直布局和水平布局,所以将各个框架先部署好,将各个组件直接拖动至手机界面即可。(一般用垂直和水平布局较多,顾名思义,就是在该框架内的控件按照垂直和水平的方式放置)
在这里插入图片描述

紧接着将项目需要用到的控件放入各个框架中,在左边的控件框中直接拖出需要用到的控件,放置在布局中。在这个过程,需要注意格式的对齐,比如说按键按照整齐的格式排布,可以按照百分比的形式操作,这样有利于整体界面的管理。
在这里插入图片描述

由于涉及到摇杆操作,而该软件并没有摇杆组件,所以通过内部的球形控件来实现摇杆的功能。先摆放好一个画布,作为摇杆移动的背景部分。再拖出两个球控件,其中一个半径设计大一些,作为摇杆移动的范围,另一个球控件则是摇杆本身,可在固定范围内(由于摇杆的移动范围为圆形,所以需要自己设计)移动。
在这里插入图片描述

对于这两个球控件的属性,首先是球位置的坐标,默认球的坐标为左上角的坐标,我们需要将其选择为中心坐标,这样减少了运算过程中坐标偏移,就显得不那么复杂。而球的坐标是基于画布的左上角为原点,右边为x轴,下方为y轴。
在这里插入图片描述

再将其它需要用到的控件,一一放置在目标区域中,设置好其大小,位置等相关属性。将所有的控件摆布好之后,控件的布局就大致完成了,为接下来图形化编程奠定了基础。

代码逻辑

代码部分包括蓝牙通信代码、显示部分、输入部分、摇杆部分。通过右上角进入编程界面。
在这里插入图片描述

蓝牙部分

蓝牙部分的代码首先需要加入蓝牙客户端这个不可视组件,再加入一个对话框不可视组件,用于提示蓝牙连接。
在这里插入图片描述

再通过一个蓝牙选择框,显示可连接的蓝牙地址,选择需要连接的蓝牙模块,并将目标蓝牙地址显示在选择框界面上,可通过断开按键断开蓝牙,同时通过一个标签模块,显示蓝牙的状态。

摇杆部分

摇杆部分的代码思路是,调用球控件的图形化代码块,实时得知当前球的坐标位置,通过求模长和三角变换得到其当前角度和距离中心的长度,若长度超过了圆形边界,则将其限制在当前角度最大距离处。
在这里插入图片描述

然后再根据当前的角度,长度情况,发送相应的控制指令,从而控制目标执行。
在这里插入图片描述

其他部分

其他部分有按键部分、显示部分等等。

按键部分的主要代码,是调用按键按下图形化模块,当按键按下时,判断当前是否保持了蓝牙连接,若有蓝牙连接,则通过蓝牙发送该按键所对应的字母模块。
在这里插入图片描述

输入部分代码,通过输入框控件实现,将其属性设置为可读可写,能够在输入框中直接输入需要发送的内容,若蓝牙已连接,则可通过发送按键发送相应的控制字符。
显示部分代码,通过输入框控件实现,将输入框的属性设置为只读,并用一个字符串容器存储输入的指令,每个指令之间通过换行符间隔开。每一次有指令下发时,将新的指令插入字符串容器中,并更新输入框显示。通过清除按键可清除显示内容。
在这里插入图片描述
数字滑动条部分代码,将滑动条总长属性设置为预期的需求,通过一个向下取整图形化模块,将滑动条的步长细分,然后再根据滑动条的位置,发送不同的控制字符指令。
在这里插入图片描述

视频显示部分,引入了一个开关控件和web显示控件,当开关控件状态改变时,进入目标网址,从而进行视频流的实时显示。
在这里插入图片描述

三、整体优化

在实现了逻辑功能后,考虑整体优化,比如导入素材,将图片显示在按键、输入框等控件上,使显示界面优化,让其充满科技风。
在这里插入图片描述

检查一下整体功能是否符合预期,是否有代码块能够优化,使其执行更加简洁高效。

四、结束语

蓝牙控制在嵌入式工程中还是较为常见的,能够满足一些无线通信控制项目需求,通过App Inventor,也能够实现其他的功能,图形化编程能够大大缩减开发时间。总的来说,是一个不错的安卓开发平台。


http://www.ppmy.cn/news/211416.html

相关文章

python环境安装

测试电脑环境有无安装python: winR,输入cmd,打开窗口,输入pyhton,查看是否有版本号,没有则是没有安装python环境 找到python-3.7.0-amd64的安装包,直接双击启动。上面是快速安装,我…

python文本注释数学表达式设置|python绘图中的数学表达式设置

本篇文章将介绍如何在Matplotlib中设置文本、注释和数学表达式,以便更好地呈现数据,提高可视化效果。 文章目录 一、Matplotlib中的文本设置1.1 纯文本设置1.2 含箭头的文本设置 二、Matplotlib中的数学表达式设置三、Matplotlib中的字体设置 一、Matplo…

联想C320一体机升级CPU 失败,求高手指点!

联想C320一体机升级CPU 失败,求高手指点! 联想C320一体机CPU:G630,内存4G,独立显卡,原机械硬盘已升级为固态,开机速度还可以。近期闲来无事想升级下CPU,百度了下,先是闲鱼购买了I5 3…

ideapad320_朋友买电脑被套路,联想Ideapad320的配置卖的比320S还贵近千元

身边的朋友前些时候打算买一台笔记本,当时还来问了一下小编,我就给他推荐了几个配置中等,性价比比较高的笔记本电脑。虽然小编也不是很专业,但是关于配置方面多多少少还是了解一些的。当时还推荐朋友在网上可以看看,可…

miix2 10 linux,联想Miix320安装Win10+Ubuntu双系统引导的方法(超简单)

入手联想miix320的童鞋们,原装的win10用的舒服吗?上周趴在床上看《鸟哥的linux私房菜》突然想敲几行代码练练手,但又不想爬起来把我的15寸燃7000搬过来(冬天室内不到18度),如果有一个小巧而又灵活的笔记本该多好,于是上网找个半天终于锁定了一台miix320当晚就下单了,4G-1…

2023_Python全栈工程师入门教程目录

2023_Python全栈工程师入门教程 该路线来自慕课课程,侵权则删,支持正版课程,课程地址为:https://class.imooc.com/sale/python2021 学习路线以三个项目推动,一步步夯实技术水平,打好Python开发基石 目录: 1.0 Python基础入门 2.0 Python语法进阶 3.0 Python数据…

MyBatis 学习笔记

MyBatis学习笔记 1、简介1.1、什么是MyBatis1.2、持久化1.3、持久层1.4、为什么需要MyBatis 2、MyBatis第一个程序2.1、搭建环境2.2、创建一个模块2.3、编写代码2.4、编写测试类 3、CRUD3.1、namespace3.2、select3.3、insert3.4、update3.5、delete3.6、分析错误3.7、万能Map3…

使用 mysql 统计日期范围的数据条数

需求: 查询2019-08到2019-09所有数据 解决方法 方式一: select CONCAT(YEAR(s1.Date),-,RIGHT(MONTH(s1.Date)100,2)) as Month, SUM(f1.Payment) as TicketsRevenue, COUNT(DISTINCT s1.ScheduleId) as FlightsAmount, COUNT(f1.ReservationId) as…