Android 活体检测接入文档
# Android 活体检测接入文档
## 功能描述
本文档介绍应用中怎么快速完成 Android 活体检测 SDK 的接入,SDK 采用 Kotlin 开发。
## 接入准备
### 添加依赖
在项目根目录的 `build.gradle` 中添加 maven 仓库配置:
```gradle
maven { url 'https://maven.aitime.credit/repository/risk' }
```
在项目的 `app` 模块 `build.gradle` 中添加库依赖:
```gradle
implementation 'com.aitime.liveness:liveness:1.6'
```
### 初始化
```kotlin
Liveness.getInstance().init(application, appKey, market)
```
参数说明:
- `appKey:`活体检测appKey
- `market:`市场,详见 `Market`
活体检测支持以下市场:
- `Market.Colombia`:哥伦比亚
- `Market.Peru`:秘鲁
- `Market.India`:印度
- `Market.Nigeria`:尼日利亚
- `Market.Chile`:智利
- `Market.CostRica`:哥斯达黎加
- `Market.Panama`:巴拿马
- `Market.Mexico`:墨西哥
- `Market.Other`:其他
### 设置域名(可选)
```kotlin
Liveness.getInstance().setDomain(domain)
```
参数说明:
- `domain:`活体检测域名
### 设置活体检测动作
```kotlin
Liveness.getInstance().setDetectionType(detectionTypes)
```
参数说明:
- `detectionTypes:`活体检测动作,可以指定多个动作,详见 `DetectionType`
活体检测动作支持以下类型:
- `DetectionType.ALL`:全部
- `DetectionType.RANDOM`:随机
- `DetectionType.BLINK`:眨眼
- `DetectionType.MOUTH`:张嘴
- `DetectionType.SHAKING`:摇头
> **`Tips:`**活体检测动作 `DetectionType.ALL` 和 `DetectionType.RANDOM` 只能单独使用,不能和其他动作一起指定!
### 活体检测
```kotlin
Liveness.getInstance().detectorFace(object : OnFaceDetectorCallback {
override fun onSuccess(result: LivenessResult) {
// 检测成功时会返回活体ID和活体图片
val livenessId = result.getLivenessId() // 活体ID
val livenessBitmap = result.getLivenessBitmap() // 活体图片
}
override fun onFailed(code: Int, message: String?) {
// 检测失败时会返回错误码及错误信息
Toast.makeText(context, "[$code]$message", Toast.LENGTH_SHORT).show()
}
})
```
> 活体检测成功后,会返回唯一的 livenessId 和本次检测的正面照片。
> - 您需要将 livenessId 传给您的服务端,由服务端调用 API 获取本次检测的分值。
> - 您可以通过 SDK 提供的方法直接获取图片,也可以由服务端调用 API 获取。
## 其他
### 运行时权限
本 SDK 需要如下权限,并且已经在 aar 的清单文件中做了配置,无需额外添加权限。
```xml
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
```
### 代码混淆
SDK 已经做好了代码混淆,无需额外增加配置。
### 关于AndroidX
考虑到 support 库现在已不再维护,本 SDK 全部是基于 AndroidX 包开发,如果您的项目使用的是 support 类包,请 [迁移至 AndroidX](https://developer.android.com/jetpack/androidx/migrate)。
### SDK 兼容性
- 最低 Android 版本: 5.0+ (API Level: 21)
- SDK 编译版本:API Level: 32
- 支持的 CPU 架构: `armeabi-v7a`、`arm64-v8a`、`x86`、`x86_64`
## 错误码
错误码详见 `com.aitime.liveness.config.DetectionCode` 类:
| 错误码 | 解释说明 | 解决办法 |
| :---------------- | :------------------ | :-------------------- |
| `SUCCESS` | 活体检测成功 | / |
| `NOT_INIT` | SDK为初始化 | 请初初始化SDK |
| `NOT_SUPPORT` | 设备不支持 | 设备无可用摄像头 |
| `NO_TYPE` | 未指定活体检测动作 | 请指定活体检测动作 |
| `NO_PERMISSION` | 用户未授予相机权限 | 引导用户授予相机权限 |
| `BAD_NETWORK` | 网络环境异常 | 引导用户检查网络环境 |
| `TIME_OUT` | 用户动作超时 | / |
| `USER_CANCELED` | 用户取消检测 | / |
| `DATA_ERROR` | 数据异常 | 请联系我们 |
| `NOT_ALLOWED` | 请求不允许 | 请联系我们 |
| `AUTH_FAILED` | 请求校验失败 | 请检查包名和传入参数 |
| `LIVENESS_FAILED` | 活体检测失败 | 请联系我们 |