UBI Android SDK接入指南
依赖条件
Android SDK Version : 21 到 29
Kotlin Version : 1.5.31 +
安装
在项目的build.gradle添加:
|  | buildscript {
    repositories {
        ...
        mavenCentral()
        ...
    }
}
 | 
|  | dependencies {
    ...
    //请替换 latest_version 为更新日志中的最新版本号
    implementation('io.github.yaoina:UbmLib:latest_version@aar'){
        transitive = true
    }
    ...
}
 | 
配置
开启dataBinding功能,在module 的 build.gradle中添加如下片段:
|  | android {
    ...
    dataBinding {
        enabled = true
    }
    ...
}
 | 
在接入方应用AndroidManifest.xml文件中添加如下tag:
|  |  <application
     android:requestLegacyExternalStorage="true"/>
 | 
API使用
开启SDK
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | /**
* 调用sdk任何方法前请先调用该方法,否则调用sdk其他方法会产生错误。
* UBICredentialProvider提供获取UBI passport token与刷新该token的方法,
* 需要App端实现该类,SDK会在与服务器交互时使用passport token以及
* 在passport token过期时自动调用refreshPassportToken()进行刷新。
* 建议使用网络库的同步接口实现该回调,SDK会在子线程中执行该请求,
* 接口失败时return null即可。
*
* userId为该用户的唯一标识
*/
val passportToken = "UBI passport token"
val provider = object : UBICredentialProvider(passportToken) {
       override fun refreshPassportToken(): String? {
           // 刷新passport token
       }
}
val userId = "UBI user id"
UBITracking.enableSDK(
    userId,
    provider,
    onSuccess = {
        //调用成功
    },
    onFailure = { code, msg ->
        //调用失败,code详见下表说明,msg为错误原因
    })
 | 
Application.onCreate()中调用该方法
* 失败时回调的code详细说明见 ErrorCode说明
关闭SDK
|  | /**
* 关闭SDK时除了关闭本地功能,还涉及到数据异步上传
* 利用回调告知App端异步数据处理结果
*/
UBITracking.disableSDK(onSuccess = {
    //调用成功
},
onFailure = { code, msg ->
    //调用失败,code详见下表说明,msg为错误原因
})
 | 
手动开启行程
|  | UBITracking.startTrip(onSuccess = {
    //调用成功
},
onFailure = { code, msg ->
    //调用失败,code详见下表说明,msg为错误原因
})
 | 
快速手动开启行程
|  | UBITracking.quickStartTrip(onSuccess = {
    //调用成功
},
onFailure = { code, msg ->
    //调用失败,code详见下表说明,msg为错误原因
})
 | 
手动结束行程
|  | /**
* 手动结束行程时除了结束本地记录功能,还涉及到数据异步上传;
* 利用回调告知App端异步数据处理结果;
*/
UBITracking.stopTrip(onSuccess = {
    //调用成功
},
onFailure = { code, msg ->
    //调用失败,code详见下表说明,msg为错误原因
})
 | 
开启自动监测
|  | UBITracking.startAuto(onSuccess = {
    //调用成功
},
onFailure = { code, msg ->
    //调用失败,code详见下表说明,msg为错误原因
})
 | 
快速开启自动监测
|  | UBITracking.quickStartAuto(onSuccess = {
    //调用成功
},
onFailure = { code, msg ->
    //调用失败,code详见下表说明,msg为错误原因
})
 | 
关闭自动监测
|  | UBITracking.stopAuto(onSuccess = {
    //调用成功
},
onFailure = { code, msg ->
    //调用失败,code详见下表说明,msg为错误原因
})
 | 
检查是否已获取所需权限
|  | val permission = PermissionWizard.checkPermissionGranted(context)
 | 
判断行程是否正在记录
|  | UBITracking.isTripOnGoing()
 | 
判断自动行程是否打开
权限申请页面
|  | ActivityResultLauncher.launch()
PermissionWizardActivity::class.java
 | 
白名单引导页面
|  | context.startActivity(Intent(context, UbmWebActivity::class.java))
 | 
历史行程页面
|  | context.startActivity(Intent(context, UbmTripHistorySumActivity::class.java))
 | 
ErrorCode 说明
| 值 | 说明 | 
| 0 | 成功 | 
| 1 | 未知错误 | 
| 1000 | 调用参数错误 | 
| 2000 | SDK未初始化 | 
| 3000 | 没有获取所需权限 | 
| 4001 | 上传文件失败 | 
| 4002 | 没有运行中的行程 | 
| 4003 | 调用操作不是在主进程进行 |