# 腾讯云人脸核身 H5 刷脸 Demo (Android)

基于 WebView 加载 H5 人脸核身页面，在 Android 端调用系统相机/麦克风完成刷脸验证的示例工程。

## 环境要求

| 依赖 | 版本 |
|------|------|
| JDK | 1.8 |
| Android Gradle Plugin | 3.2.0 |
| compileSdkVersion / targetSdkVersion | 27 |
| minSdkVersion | 21 |
| Build Tools | 27.0.3 |
| Android Support Library | 27.0.1 |

> **重要**：本项目依赖 Java 8 编译，请确保本地已安装 JDK 8。

## 快速开始

### 1. 初始化环境

首次使用请先运行环境检测脚本，自动生成 `local.properties`：

```bash
bash setup.sh
```

如无法自动检测，可手动复制模板修改：

```bash
cp local.properties.example local.properties
# 编辑 local.properties，填入正确的 sdk.dir
```

### 2. 一键构建

```bash
bash build.sh
```

APK 输出路径：`app/build/outputs/apk/debug/app-debug.apk`

### 3. 手动构建

```bash
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
./gradlew assembleDebug
```

## 项目结构

```
h5faceverify/
├── app/
│   ├── build.gradle              # 应用构建配置
│   ├── libs/                     # 本地 .jar/.aar 依赖
│   └── src/main/
│       ├── AndroidManifest.xml   # 清单（相机、麦克风、网络权限）
│       ├── assets/
│       │   └── demo.html         # H5 刷脸入口页面
│       ├── java/com/wb/testcloud/
│       │   ├── MainActivity.java           # 主 Activity（WebView + 权限）
│       │   ├── DemoActivity.java           # 启动页
│       │   ├── H5FaceWebChromeClient.java  # WebChromeClient 处理 H5 交互
│       │   └── WBH5FaceVerifySDK.java      # 人脸核身 SDK 封装
│       ├── res/                  # 资源文件
│       └── xml/filepaths.xml     # FileProvider 路径配置
├── build.gradle                  # 项目级构建配置（阿里云镜像加速）
├── gradle.properties             # Gradle 全局属性
├── settings.gradle               # 模块声明
├── build.sh                      # 一键打包 Debug APK
├── setup.sh                      # 环境初始化脚本
├── local.properties.example      # 本地配置模板
└── gradlew / gradlew.bat         # Gradle Wrapper
```

## 权限说明

应用需要以下运行时权限（TRTC 模式同时需要相机 + 麦克风）：

| 权限 | 用途 |
|------|------|
| `CAMERA` | 人脸核身拍照/录像 |
| `RECORD_AUDIO` | TRTC 实时音视频模式录音 |
| `INTERNET` | H5 页面加载 |
| `ACCESS_NETWORK_STATE` | 网络状态检测 |

- **Android 6.0+ (API 23+)**：通过 `ActivityCompat.requestPermissions` 动态弹窗申请。
- **Android 5.x (API 21-22)**：安装时授予，若未授予则引导用户跳转系统设置页手动开启。

## 两种刷脸模式

| 模式 | 说明 | 权限 |
|------|------|------|
| 录制模式 (OLD) | 调用系统相机录制视频 | 仅相机 |
| TRTC 模式 (NEW) | 实时音视频人脸核身 | 相机 + 麦克风 |

模式由 H5 页面通过 WebChromeClient 的 `onPermissionRequest` 回调触发，Demo 根据域名判断是否为腾讯 H5 刷脸页面后发起对应权限申请。

## 注意事项

1. 本项目使用阿里云 Maven 镜像加速依赖下载，无需科学上网。
2. 构建前请确保 `local.properties` 中 `sdk.dir` 指向正确的 Android SDK 路径。
3. `app/libs/` 中需放置人脸核身相关的 `.jar` / `.aar` 文件。
4. SSL 证书错误时 Demo 会弹出对话框询问用户是否继续访问（生产环境不建议这样做）。
