1. 接入流程

1.1 概述

本文档是为了方便后续项目维护和管理、记录开发内容而创建。
本文档描述的OTA库是基于杰理的RCSP协议而实现。同时使用于单双备份的OTA流程。

1.2 导入说明

1.2.1 依赖库

Warning

xxx 为版本号,请以最新发布版本为准

  • jl_bt_ota_Vxxx-release.aar : OTA流程封装

1.2.2 导入库

//1.将1.2.1的aar文件放入工程目录中的对应moudle的lib文件夹下
//2.在moudlu的build.gradle中添加
implementation fileTree(include: ['*.aar'], dir: 'libs')

1.2.3 权限清单

AndroidManifest.xml 文件中申请以下权限

<!-- 申请蓝牙权限-->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />

<!-- 申请位置权限,Android 6.0+需要位置权限才能搜索设备-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<!-- 申请存储权限,保存log文件-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!-- 申请蓝牙扫描权限, Android 12+需要蓝牙扫描权限才可以扫描蓝牙设备-->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
<!-- 申请蓝牙连接权限, Android 12+需要蓝牙连接权限才可以操作蓝牙设备-->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>

1.3 接入流程图

digraph flow { start [label="Start", shape="Mdiamond"]; subgraph cluster_init { label="初始化流程"; impl [label="继承BluetoothOTAManager, 实现相应接口:\ngetConnectedDevice、\ngetConnectedBluetoothGatt、\nconnectBluetoothDevice、\ndisconnectBluetoothDevice、\nsendDataToDevice", shape="record"]; notify [label="用户传递设备连接状态和数据, 使用接口:\nonBtDeviceConnection、\nonReceiveDeviceData", shape="record"]; impl -> notify; } subgraph cluster_ota { label="OTA流程"; ota_start [label="调用开始OTA的API,\n 监听OTA的状态", shape="record"]; ota_progress [label="进行OTA", shape="record"] isOtaFinish [label="OTA是否结束?", shape="diamond"]; ota_finish [label="结束OTA", shape="record"]; ota_start -> ota_progress -> isOtaFinish; isOtaFinish -> ota_progress [label="NO"]; isOtaFinish -> ota_finish [label="YES"]; } config [label="配置OTA参数", shape="record"]; create [label="初始化BluetoothOTAManager的实现对象,\n 注册事件监听器", shape="record"]; isInit [label="是否OTA库初始化成功?", shape="diamond"]; ota_stop [label="升级完成,\n 处理升级结果", shape="record"]; release [label="释放资源", shape="record"]; end [label="End", shape="Msquare"]; start -> impl [ltail="cluster_init"]; notify -> config [lhead="cluster_init"]; config -> create -> isInit; isInit -> ota_start [label="YES"]; ota_finish -> ota_stop -> release -> end; isInit -> release [label="NO"]; }

OTA外接库接入流程