# Android-OTA-Library **Repository Path**: bluexmicro/Android-OTA-Library ## Basic Information - **Project Name**: Android-OTA-Library - **Description**: Android BX-OTA SDK - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.BlueXMicro.com - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-06-26 - **Last Updated**: 2025-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BlueX Micro Android-OTA-Library [![](https://jitpack.io/v/com.gitee.bluexmicro/Android-OTA-Library.svg)](https://jitpack.io/#com.gitee.bluexmicro/Android-OTA-Library) #### 介绍 BlueX Micro Android OTA Library #### 下载试用 1. link [https://www.pgyer.com/C3EW](https://www.pgyer.com/C3EW) 2. QRCode ![QRCode](https://gitee.com/bluexmicro/Android-OTA-Library/raw/master/images/C3EW.png) #### 导入 OTA Library --- ##### 方式一、 从JitPack仓库添加 1. 在你的 root `build.gradle` 添加 `maven { url 'https://jitpack.io' }` ``` allprojects { repositories { //... maven { url 'https://jitpack.io' } } } ``` 2. 添加依赖 ``` dependencies { implementation 'com.gitee.bluexmicro:Android-OTA-Library:1.0.9'//请从发行版本中替换最新的版本号 } ``` ##### 方式二、 导入jar文件库 下载jar库,导入本地libs文件中 [bx-ora(1.0.5).jar](https://gitee.com/bluexmicro/Android-OTA-Library/blob/master/bx-ota-v1.0.5.jar) #### 使用说明 --- > 普通模式 和 快速模式是互斥的,需要设备支持,开发者使用前请询问供应商应该使用哪一种模式 ##### Java Example [JavaExample.java](https://gitee.com/bluexmicro/Android-OTA-Library/blob/master/app/src/main/java/com/bluexmicro/ota/JavaExample.java) ```java OtaManager otaManager = new OtaManager(Context,BluetoothDevice) //普通模式,一次只支持一个文件,且单次传输的吞吐量较低 otaManager.startOta(OtaTask, new OtaCallback() { @Override public void onInitialError(@NonNull String errorMessage) { //开始传输数据前,如果发生异常会在这里返回异常信息 } @Override public void onStateChanged(@NonNull OtaState state) { // 返回数据传输时的进度和结果,支持多文件升级的回复 // index, progress, startTime, endTime, errorMessage } @Override public void onFinish() { //所有OtaTask传输结束 } }); //快速模式,支持多文件队列升级; otaManager.startFastOta(List, new OtaCallback()); //otaManager.cancel() //中途取消 //otaManager.release() //释放资源,该OtaManager对象就不能再使用了,请重新创建 ``` ##### Kotlin Example [KotlinExample.kt](https://gitee.com/bluexmicro/Android-OTA-Library/blob/master/app/src/main/java/com/bluexmicro/ota/KotlinExample.kt) ```Kotlin //使用协程实现,如果开发者不希望使用协程,请使用Java Example中Callback的方法 //普通模式 var job = CoroutineScope.launch{ val otaManager = OtaManager(Context, BluetoothDevice) otaManager.startOta(OtaTask).catch { // 开始后发现异常 }.collect { OtaState-> // 返回数据传输时的进度和结果,支持多文件升级的回复 // index, progress, startTime, endTime, errorMessage } } // 快速模式,参考普通模式 // otaManager.startFastOta(List).catch{}.collect{} // job.cancel()//中途取消 // otaManager.release() //释放资源,该OtaManager对象就不能再使用了,请重新创建 ``` #### 参数的获取 > `BluetoothDevice` 和 `OtaTask` 可参考 `OtaParamHelper` 和 Example工程 [OtaParamHelper.kt](https://gitee.com/bluexmicro/Android-OTA-Library/blob/master/library_ota/src/main/java/com/bluexmicro/android/ota/OtaParamHelper.kt) [KotlinExample.kt](https://gitee.com/bluexmicro/Android-OTA-Library/blob/master/app/src/main/java/com/bluexmicro/ota/KotlinExample.kt) [JavaExample.java](https://gitee.com/bluexmicro/Android-OTA-Library/blob/master/app/src/main/java/com/bluexmicro/ota/JavaExample.java) ##### BluetoothDevice 1. 扫描蓝牙设备获得 `BluetoothLeScanner -> ScanResult.BluetoothDevice` 2. 通过Mac地址获得,`BluetoothAdapter.getRemoteDevice("FF:FF:FF:FF:FF:FF")` > 一般从宿主app中传参BluetoothDevice或者Mac地址(String)即可 ##### OtaTask `OtaTask(byte[],BigIntger)` 第一个参数rawData: 升级包数据,一般是云端服务器下载的BIN文件,FileInputStream -> bytes[] 第二参数 address: 数据包写入地址(UInt32),如果为空,即写入默认地址 #### 前提(权限和功能) > https://developer.android.google.cn/guide/topics/connectivity/bluetooth/permissions?hl=en 作为蓝牙应用的OTA功能,宿主app想必是具备蓝牙功能的 1. Android S 前需要申请 `BLUETOOTH` 和 `BLUETOOTH_ADMIN`权限,Android S后需动态申请`BLUETOOTH_SCAN` 和`BLUETOOTH_CONNECT` 2. Android5.0后扫描蓝牙需打开`位置信息`并动态申请 `ACCESS_FINE_LOCATION`权限,Android S后,需要动态申请`BLUETOOTH_SCAN`权限(位置信息可根据情况使用)