---
title: 活体检测（生物特征自拍）
canonical: https://developer.unico.io/zh-CN/dual-api/developers/sdks-and-tools/android/capture-flow/capture-types/liveness
locale: zh-CN
generated_by: markdown-export
---

带有内嵌活体验证的生物特征自拍采集。SDK 通过 SmartFrames 引导用户直到获取生物特征有效帧，并以 Base64 + JWT（JSON Web Token — 发送给您的后端以调用 REST API 的已签名载荷）格式返回图像。

:::secondary[能力]
此采集类型使用 **Liveness** 能力。有关 Liveness 工作原理的概念性概述，请参阅 [Liveness 能力页面](/capabilities/liveness)。
:::

## 工作原理

SDK 管理完整的采集会话：

1. 打开带有 SmartFrame 覆盖层的摄像头。
2. 引导用户将面部定位在框架内。
3. 验证活体——仅当用户实际在场时会话才会完成。
4. 返回包含 `base64` 和 `encrypted`（JWT）的 `ResultCamera` 对象。

## 启动活体采集

****步骤 2** — 实现 `iAcessoBioSelfie`**

`iAcessoBioSelfie` 处理自拍采集结果的回调：

  | 方法 | 描述 |
  |---|---|
  | `onSuccessSelfie(result)` | 采集成功——返回包含 `base64`（预览）和 `encrypted`（用于 API 的 JWT）的 `ResultCamera` |
  | `onErrorSelfie(errorBio)` | 采集失败——返回包含代码和描述的 `ErrorBio` |

  :::warning[令牌过期]
  生成 `encrypted` 与将其提交至 API 之间的时间间隔不得超过 **10 分钟**。
  :::

  ### Kotlin

    ```kotlin
    val selfieListener = object : iAcessoBioSelfie {
      override fun onSuccessSelfie(result: ResultCamera?) { }
      override fun onErrorSelfie(errorBio: ErrorBio?) { }
    }
    ```

### Java

    ```java
    iAcessoBioSelfie selfieListener = new iAcessoBioSelfie() {
      @Override
      public void onSuccessSelfie(ResultCamera result) { }

      @Override
      public void onErrorSelfie(ErrorBio errorBio) { }
    };
    ```

****步骤 3** — 调用 `prepareCamera`**

初始化 `unicoCheckCamera` 并实现两个监听器后，调用 `prepareCamera`，传入 SDK 配置（即在[初始化](/developers/sdks-and-tools/android/initialization)中创建的 `UnicoConfig`）和 `SelfieCameraListener`：

  - `onCameraReady` — 摄像头已就绪；调用 `open` 并传入步骤 2 中的 `selfieListener`。
  - `onCameraFailed` — 摄像头准备失败；处理错误消息。

  ### Kotlin

    ```kotlin
    unicoCheckCamera
      .prepareCamera(UnicoConfig(), object : SelfieCameraListener {
        override fun onCameraReady(cameraOpener: UnicoCheckCameraOpener.Selfie?) {
          cameraOpener?.open(selfieListener)
        }
        override fun onCameraFailed(message: String?) { }
      })
    ```

### Java

    ```java
    unicoCheckCamera
      .prepareCamera(new UnicoConfig(), new SelfieCameraListener() {
        @Override
        public void onCameraReady(UnicoCheckCameraOpener.Selfie cameraOpener) {
          cameraOpener.open(selfieListener);
        }

        @Override
        public void onCameraFailed(String message) { }
      });
    ```

有关完整的结果处理，请参阅[接收结果](/developers/sdks-and-tools/android/capture-flow/receiving-the-result)。