【CSRMesh蓝牙开发】CSRMeshDemo源码分析 -- 启动过程

   今天终于成功用自己的代码实现了CSR蓝牙灯泡的控制。这一个多月来,作为一个Android、Java的门外汉,在没有开发经验的情况下,盲人摸象、黑盒开发总算是有一点小小的成就。趁着记忆还很新鲜,特将自己开发过程中对CSRmesh开发理解,主要是源码分析,记下供其它新手查看。能少走点弯路就少走。
  • 简单启动逻辑序列图:
Created with Raphaël 2.1.0 SecurityActivity SecurityActivity MainActivity MainActivity Association Fragment Association Fragment ScanResultsActivity ScanResultsActivity MeshService MeshService LightControllFragment LightControllFragment 初次使用 设置密码 设置灯泡分组 启动(扫描结果) 绑定服务 回调句柄 发现设备 跳转控制界面 连接成功 断开连接
  • 逻辑序列图解读:
    该项目的代码比较多,我并不是十分擅长将代码用合适的方式表达出来。大体的过程如上图所示。在程序开始运行的时候,首先进入的就是ScanResults界面。如果是程序安装后的第一次运行,将先执行Security界面,设置组网密码。再进入Association界面,绑定灯泡所属的分组。然后,点开进入灯泡控制界面,在这个界面中,可以对灯光的亮度、颜色、开关进行操作。下面具体分析每一部分的作用:

ScanResultsFragment.java:
      这个部分如其名字一样,是一个展示扫描结果的界面。点击界面上的扫描按键后,程序将会开始扫描蓝牙低功耗设备。扫描后,有一个延时函数,将结果放入数组,绑定Intent,启动MainActivity.

MainActivity.java:
      这部分为安卓端的主要控制部分。该部分里完成了CSRMesh工程中大部分的函数。DeviceControll等都是实例化该类得到,大部分接口的实现都放在了MainActivity里。当MainAcitity启动的时候,在onCreate里,绑定MeshService.class,并接受Intent的数据,准备连接第一个设备。
     连接的过程写在回调函数mServiceConnection()里。包括三个主要的函数:mMeshHandler.postDelayed()延迟函数,restorSettings()重新存储设置函数以及connect()函数。延迟函数,保证了在一定的连接尝试次数下,一直尝试连接,其延迟的对象正是connect(). 当尝试的次数达到上限的时候,就会弹出无连接,并请求重置蓝牙。
       因为我是准备将该程序开发成Cordova插件的形式,不需要界面和本地存储。所以一开始分析代码的时候跳过了restoreSe
ttings()。直到写完后,不能实际控制灯泡的时候,重新阅读源码,才发现最关键的地方,应该就是这个函数。在这个函数里,读取了联网密码,并设置uuidHash,网络密钥。这些才是真正关键的地方。

LightControllerFragment.java
     这个跟它的名字一样,指的就是灯泡的控制。主要是取色盘的绘制,改变颜色事件的监听和传递,灯泡开关和亮度的控制。引用CSRMesh里的东西主要是LightModelApi、LightStateApi.

SecurityActivity.java
     设置密码界面。设置密码的时候有一个Authried的选项,不用勾选,其功能暂时不清楚。密码设置成功后,它会启动AssociationFragment.java。

AssociationFragment.java
    在这个界面上,将会进入灯泡级别的设置。将连接,扫描到的灯泡进行分组,重命名等等操作。在此期间灯泡(CSRMesh的CSR1010模块)会进入等待状态。灯泡持续闪烁,交替颜色,不响应其它控制。

MeshService.class
        这是CSR公司提供蓝牙Mesh网络的API。通过这个,可以控制蓝牙模块组成的网络。对灯泡网络的控制主要是通过使用该API来实现的。

以上就是该工程的较为完整的启动逻辑过程,更具体的代码分析将在后续中给出。会做出一个流程图来,希望大家给予指导意见,尤其是在代码分析、调试过程的一些技巧。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值