169 lines
3.5 KiB
Markdown
169 lines
3.5 KiB
Markdown
|
|
# Android SDK 集成文档
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
Face SDK 是一个离线人脸识别 SDK,支持人脸检测、特征提取、活体检测和本地识别。
|
|||
|
|
|
|||
|
|
## 集成步骤
|
|||
|
|
|
|||
|
|
### 1. 添加 AAR 文件
|
|||
|
|
|
|||
|
|
将 `face-core-release.aar` 复制到您的项目 `app/libs` 目录下。
|
|||
|
|
|
|||
|
|
### 2. 配置 Gradle
|
|||
|
|
|
|||
|
|
在 `app/build.gradle.kts` 中添加:
|
|||
|
|
|
|||
|
|
```kotlin
|
|||
|
|
android {
|
|||
|
|
defaultConfig {
|
|||
|
|
ndk {
|
|||
|
|
abiFilters.add("arm64-v8a")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
dependencies {
|
|||
|
|
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))
|
|||
|
|
implementation("com.google.code.gson:gson:2.10.1")
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 初始化 SDK
|
|||
|
|
|
|||
|
|
在 Application 或 Activity 中初始化:
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
import com.bonuos.facesdk.FaceRecognizer;
|
|||
|
|
import com.bonuos.facesdk.SyncManager;
|
|||
|
|
|
|||
|
|
public class MyApplication extends Application {
|
|||
|
|
private FaceRecognizer faceRecognizer;
|
|||
|
|
private SyncManager syncManager;
|
|||
|
|
|
|||
|
|
@Override
|
|||
|
|
public void onCreate() {
|
|||
|
|
super.onCreate();
|
|||
|
|
|
|||
|
|
// 初始化识别器
|
|||
|
|
faceRecognizer = new FaceRecognizer(this);
|
|||
|
|
|
|||
|
|
// 初始化同步管理器
|
|||
|
|
syncManager = new SyncManager(this);
|
|||
|
|
|
|||
|
|
// 同步数据
|
|||
|
|
syncManager.syncData();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 使用人脸识别
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
import android.graphics.Bitmap;
|
|||
|
|
import com.bonuos.facesdk.FaceRecognizer;
|
|||
|
|
|
|||
|
|
// 识别人脸
|
|||
|
|
Bitmap bitmap = ...; // 从相机或图片获取
|
|||
|
|
FaceRecognizer.RecognitionResult result = faceRecognizer.recognize(bitmap);
|
|||
|
|
|
|||
|
|
if (result.success) {
|
|||
|
|
String userName = result.user.name;
|
|||
|
|
float similarity = result.similarity;
|
|||
|
|
Log.i("FaceSDK", "识别成功: " + userName + ", 相似度: " + similarity);
|
|||
|
|
} else {
|
|||
|
|
Log.w("FaceSDK", "识别失败: " + result.message);
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 数据同步
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
import com.bonuos.facesdk.SyncManager;
|
|||
|
|
|
|||
|
|
SyncManager syncManager = new SyncManager(context);
|
|||
|
|
|
|||
|
|
// 配置服务器地址(在 SyncManager.java 中修改 SYNC_URL)
|
|||
|
|
// 触发同步
|
|||
|
|
syncManager.syncData();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## API 参考
|
|||
|
|
|
|||
|
|
### FaceRecognizer
|
|||
|
|
|
|||
|
|
#### 构造方法
|
|||
|
|
```java
|
|||
|
|
FaceRecognizer(Context context)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 主要方法
|
|||
|
|
|
|||
|
|
**recognize(Bitmap bitmap)**
|
|||
|
|
- 参数: `Bitmap` - 待识别的人脸图片
|
|||
|
|
- 返回: `RecognitionResult` - 识别结果
|
|||
|
|
- 说明: 执行人脸识别,返回匹配的用户信息
|
|||
|
|
|
|||
|
|
**setThreshold(float threshold)**
|
|||
|
|
- 参数: `float` - 识别阈值 (0.0-1.0)
|
|||
|
|
- 说明: 设置识别阈值,默认 0.80
|
|||
|
|
|
|||
|
|
**release()**
|
|||
|
|
- 说明: 释放资源
|
|||
|
|
|
|||
|
|
### SyncManager
|
|||
|
|
|
|||
|
|
#### 构造方法
|
|||
|
|
```java
|
|||
|
|
SyncManager(Context context)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 主要方法
|
|||
|
|
|
|||
|
|
**syncData()**
|
|||
|
|
- 说明: 从服务器同步人员数据到本地数据库
|
|||
|
|
|
|||
|
|
### LivenessDetector
|
|||
|
|
|
|||
|
|
#### 主要方法
|
|||
|
|
|
|||
|
|
**init(Context context)**
|
|||
|
|
- 说明: 初始化活体检测
|
|||
|
|
|
|||
|
|
**detect(Bitmap bitmap, LivenessCallback callback)**
|
|||
|
|
- 参数:
|
|||
|
|
- `Bitmap` - 待检测的人脸图片
|
|||
|
|
- `LivenessCallback` - 回调接口
|
|||
|
|
- 说明: 执行活体检测
|
|||
|
|
|
|||
|
|
## 权限要求
|
|||
|
|
|
|||
|
|
在 `AndroidManifest.xml` 中添加:
|
|||
|
|
|
|||
|
|
```xml
|
|||
|
|
<uses-permission android:name="android.permission.CAMERA" />
|
|||
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. SDK 仅支持 arm64-v8a 架构
|
|||
|
|
2. 需要 Android 7.0 (API 24) 或更高版本
|
|||
|
|
3. 首次运行会自动复制模型文件,需要一定时间
|
|||
|
|
4. 人脸识别操作建议在后台线程执行
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### 库加载失败
|
|||
|
|
确保所有 .so 文件都在 `jniLibs/arm64-v8a/` 目录下。
|
|||
|
|
|
|||
|
|
### 识别率低
|
|||
|
|
- 调整识别阈值
|
|||
|
|
- 确保照片质量良好
|
|||
|
|
- 确保光线充足
|
|||
|
|
|
|||
|
|
### 同步失败
|
|||
|
|
- 检查网络连接
|
|||
|
|
- 检查服务器地址配置
|
|||
|
|
- 检查服务器是否正常运行
|