接着上文的串口协议,本文再介绍下android端如何实现。现在程序员分工很明确,很多会C的不会java,会java不一定会开发android。而我的本职工作是开发java后台的,android的开发只能算个业余选手,但开发一个小车的控制程序还是可以的。
先介绍一下android的开发环境,Android Studio。如下图:
我们新建一个项目后,主要的要改的文件都在这个main文件夹中。java文件夹是.java文件,放程序逻辑。res文件放用于界面展示的配置文件,AndroidManifest.xml是配置整个项目的权限,入口代码等。
我的设计是这样,进去的第一个界面先展示蓝牙列表与控制按钮。选择蓝牙连接上后,隐藏蓝牙列表,界面就只有控制按钮了。下面的进度条样子的控件是用于利用android的pwm功能来设置速度。
连接上蓝牙后:
这里面设置很多小的技术点,如设置横屏,如何隐藏控件,控件如何自适应屏幕大小。这些在专业的android程序员眼可能都不是事,但我做时还是用了不少时间查的。比如隐藏后如何自动适应屏幕,我用的是相对布局。这个可以看黑马程序员的android的视频课程。
这里介绍一个简单而重要的技术点,蓝牙如何保持连接?在实际的操作过程中,使用者可能会发现蓝牙会无缘无故断掉。一开始我只有重启app再连接,真到改了如下几行代码:
try {
os.write(msg.getBytes());
} catch (IOException e) {
e.printStackTrace();
//发送发生异常,重连Socket
System.out.println("发送发生异常,重连Socket");
connectSocket(lvDevices);
}
解释一下os是OutputStream,蓝牙的输出流。msg是要发送的消息内容。如果发生异常就再去连接蓝牙。其实最好的是连接之后再发送一次内容。
好了,一个简单的控制程序就介绍完了。