零、效果展示
“这是一个充满科技风的手机蓝牙APP”
一、环境介绍
App Inventor是一款谷歌公司开发的手机编程软件,主要支持各种安卓软件的开发。不知道大家是否在做单片机项目时,是否遇到这样的一个烦恼,需要一款蓝牙APP来实现控制功能,但市面上现成的蓝牙APP并不好用,实现的功能参差不齐,但如果用Android Studio开发,需要花费大量时间,有没有一种能够实现快速开发的软件呢?Appinventor非常适合想编写自己的app,但是又没有专业的学过app开发的人,能够让你根据自己的想法迅速出一个demo。而且,秉承着前人栽树,后人乘凉的思路,有前辈对该环境进行了维护管理,适合在国内使用,不仅可以通过下载资源包在电脑上部署离线环境,也可以直接在网页实现编程。
二、开发过程
在App Inventor项目开发中,首先是界面设计和布局,部署好相应的控件(常见的有按键、显示框等等),然后通过图形化编程实现相关逻辑功能,验证功能是否按预期需求实现,最后进行界面优化。以下为整个工作区。
切记,在整个开发过程中,一定不要盲目地从头干到尾,要结合AI伴侣、USB模拟器实时的观察,及时对自己设计不合理的地方去改进。
控件布局
在这一步中首先需要明确本项目要用到哪些控件,比如要用多少个按键,按键的位置要放在何处等等这些问题,由于控件的位置摆布需要用到垂直布局和水平布局,所以将各个框架先部署好,将各个组件直接拖动至手机界面即可。(一般用垂直和水平布局较多,顾名思义,就是在该框架内的控件按照垂直和水平的方式放置)
紧接着将项目需要用到的控件放入各个框架中,在左边的控件框中直接拖出需要用到的控件,放置在布局中。在这个过程,需要注意格式的对齐,比如说按键按照整齐的格式排布,可以按照百分比的形式操作,这样有利于整体界面的管理。
由于涉及到摇杆操作,而该软件并没有摇杆组件,所以通过内部的球形控件来实现摇杆的功能。先摆放好一个画布,作为摇杆移动的背景部分。再拖出两个球控件,其中一个半径设计大一些,作为摇杆移动的范围,另一个球控件则是摇杆本身,可在固定范围内(由于摇杆的移动范围为圆形,所以需要自己设计)移动。
对于这两个球控件的属性,首先是球位置的坐标,默认球的坐标为左上角的坐标,我们需要将其选择为中心坐标,这样减少了运算过程中坐标偏移,就显得不那么复杂。而球的坐标是基于画布的左上角为原点,右边为x轴,下方为y轴。
再将其它需要用到的控件,一一放置在目标区域中,设置好其大小,位置等相关属性。将所有的控件摆布好之后,控件的布局就大致完成了,为接下来图形化编程奠定了基础。
代码逻辑
代码部分包括蓝牙通信代码、显示部分、输入部分、摇杆部分。通过右上角进入编程界面。
蓝牙部分
蓝牙部分的代码首先需要加入蓝牙客户端这个不可视组件,再加入一个对话框不可视组件,用于提示蓝牙连接。
再通过一个蓝牙选择框,显示可连接的蓝牙地址,选择需要连接的蓝牙模块,并将目标蓝牙地址显示在选择框界面上,可通过断开按键断开蓝牙,同时通过一个标签模块,显示蓝牙的状态。
摇杆部分
摇杆部分的代码思路是,调用球控件的图形化代码块,实时得知当前球的坐标位置,通过求模长和三角变换得到其当前角度和距离中心的长度,若长度超过了圆形边界,则将其限制在当前角度最大距离处。
然后再根据当前的角度,长度情况,发送相应的控制指令,从而控制目标执行。
其他部分
其他部分有按键部分、显示部分等等。
按键部分的主要代码,是调用按键按下图形化模块,当按键按下时,判断当前是否保持了蓝牙连接,若有蓝牙连接,则通过蓝牙发送该按键所对应的字母模块。
输入部分代码,通过输入框控件实现,将其属性设置为可读可写,能够在输入框中直接输入需要发送的内容,若蓝牙已连接,则可通过发送按键发送相应的控制字符。
显示部分代码,通过输入框控件实现,将输入框的属性设置为只读,并用一个字符串容器存储输入的指令,每个指令之间通过换行符间隔开。每一次有指令下发时,将新的指令插入字符串容器中,并更新输入框显示。通过清除按键可清除显示内容。
数字滑动条部分代码,将滑动条总长属性设置为预期的需求,通过一个向下取整图形化模块,将滑动条的步长细分,然后再根据滑动条的位置,发送不同的控制字符指令。
视频显示部分,引入了一个开关控件和web显示控件,当开关控件状态改变时,进入目标网址,从而进行视频流的实时显示。
三、整体优化
在实现了逻辑功能后,考虑整体优化,比如导入素材,将图片显示在按键、输入框等控件上,使显示界面优化,让其充满科技风。
检查一下整体功能是否符合预期,是否有代码块能够优化,使其执行更加简洁高效。
四、结束语
蓝牙控制在嵌入式工程中还是较为常见的,能够满足一些无线通信控制项目需求,通过App Inventor,也能够实现其他的功能,图形化编程能够大大缩减开发时间。总的来说,是一个不错的安卓开发平台。