Android实现蓝牙通讯项目记录

安卓实现蓝牙通讯项目记录

想想上一次愉快的写博客已经是好久好久好久之前了,纵使自己非常想补一补自己的博客,可是最近在做一个安卓小项目,实在是分身无暇。经过我几天的不懈努力,今天下午这个项目终于可以进行上下位机联调了,在我写完最后一行代码的时候我瞬间感觉到如释重负,这是好久我都没有过的感觉了。说实话,这种感觉超级爽的。好了不光说我了,说说这个项目吧,先上图吧。

Android实现蓝牙通讯项目记录_第1张图片Android实现蓝牙通讯项目记录_第2张图片Android实现蓝牙通讯项目记录_第3张图片Android实现蓝牙通讯项目记录_第4张图片

在对图片做一些简单的介绍之前要说明一下,本人是安卓小白,所以不是很会界面美化,还忘各位大牛不要在过在意,嘴下留情。
言归正传,接下来对界面做一下简单的介绍,首先是第一个界面也就是蓝牙设备列表界面,其中可以显示本机蓝牙已经绑定的蓝牙设备,包括设备名、设备mac地址以及设备的状态,这里的状态我自定义的是ready,然后可以选择下拉列表或者点击底部按钮让本机蓝牙进行设备检索其他蓝牙设备。最后通过点击某一蓝牙设备进行连接。当连接成功之后则会进入到上面的第二个图所示的界面。
第二个界面就是显示蓝牙所连接到的硬件设备电机状态监控和控制电机的一个界面。通过指定的通讯协议可以解析出各个状态的值进而可以显示在界面上,供用户进行观测。
通过左滑屏幕即可进入到下一界面,也就是第三界面 → 设置参数界面。其实现的是通过数据通讯协议向下位机发送相关的参数限定值。
最后一个界面则是选择下位机程序bin文件,来进行对下位机在线烧写程序。
好了,基本的功能就是这些了,介绍也就介绍到这里了。接下来我将记录一下我在开发中所遇到的问题和我是怎么解决的。如果能帮助到同样有该问题的程序员那就再好不过了。
1. 首先遇到的第一个问题是作为一个安卓小白,可以说是项目经验为0,当我拿到这个需求的时候,界面是一个让我很烦的一个东西。因为我大学学的主要是后端,前端的技术以及审美观点和设计感几乎是没有的,可是我又不想搞的很难看,毕竟作为一名程序员还是要对得起这个职业的嘛。如果弄的太丑的话说实话面子上真的挂不上。可是没有经验的我又改如何解决这个问题呢?
① 我先是思考了一下如何使自己的安卓界面看起来好看一些,于是我去手机上打开了比较大众的软件来观察,于是发现了一点,就是几乎所有的软件都应用了底部导航栏(BottomNavigationView)的一个设计。不得不说这个设计确实带来了很好的用户体验。所以我也决定采用这个底部导航栏,起码得跟上主流啊。于是奔着这个目标我去CSDN看了一些很优秀的教程博客,在这里非常感谢这些无私奉献的博主。于是我实现了BottomNavigation + PageView + Fragment。这也就大概解决了一下交互体验不好之类的问题。这里是传送门
2. 接下来的这个问题是关于上面实现的底部可滑动导航栏,其中在运用了ViewPage之后,默认会预加载当前页面的下一界面。所以相应的fragment的生命周期会发生变化。业务逻辑将变得非常不好控制。
② 其实fragment生命周期中有一个函数在上述情况下可以做为该fragment真正的onResume()函数和onPause()函数的,可以自己打印出log信息进行查看。
      //判断该fragment是否开始标志
    private boolean hasStarted = false;
    //多个fragment真正的onResume()函数和onPause()函数
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if(isVisibleToUser)
        {
            hasStarted = true;
            Log.d(TAG, "setUserVisibleHint: 开始界面!");
        }
        else
        {
            if(hasStarted)
            {
                hasStarted = false;
                Log.d(TAG, "setUserVisibleHint: 结束界面!");
            }
        }
    }

3. 然后接下来的一个问题是如何打开文件管理器并选择bin文件读取到其中的内容。之前我没有做过这方面的需求,毕竟才开始做项目嘛,有很多不会的我觉得并不是很奇怪。所以我就像往常一样先去百度这方面的列子来学习。可是经过我的测试之后我发现我百度到的列子都是失效的,不能正常运行的。后来我了解到原来是Android更新了很多方法,摒弃了原来的方法。所以那些列子所用的方法不再被安卓支持以至于不能够正常运行。
③ 在这个时候你非常得需要一份官方文档,因为官方文档在任何时候都是我们开发者进行开发的指南。这里是传送门

最后我想说的是,作为一名软件开发工程师,我们在开发的过程中也许会遇到很多很多的问题,有些问题甚至是很莫名其妙的。但是我们不应对他们感到畏惧,我们应该勇敢的面对他们,握紧我们那充满力量的智慧之矛,猛烈得冲击在他们身上,当成功战胜他们之后你就会发现你当时就如那横扫千军的项羽一般勇猛,无人可与之匹敌。哈哈哈。。。开个小玩笑。其实在我们勇敢去面对困难的时候,这时的你才是最成熟、最勇敢、最帅气的你!

你可能感兴趣的:(android,java,android,studio)