Face Enrollment Results
FaceResults​
data class FaceResults(
val faces: List<Bitmap>,
val livenessScore: Double? = null,
val metadata: FaceMetadata? = null
)
data class FaceMetadata(
val smile: Double? = null,
val age: Double? = null,
val gender: String? = null
)
Handling the result​
onResult = { result: FaceResults ->
val faces = result.faces
val primaryFace = faces.firstOrNull()
val liveness = result.livenessScore
val smile = result.metadata?.smile
val age = result.metadata?.age
val gender = result.metadata?.gender
if (faces.isNotEmpty()) {
val score = liveness?.let { "${(it * 100).toInt()}%" } ?: "Passed"
} else {
}
}
Captured frames​
| Field | Description |
|---|---|
faces[0] | Baseline center-facing capture — use as the biometric reference |
faces[1..n] | Directional challenge captures (left, right, up, down) |
livenessScore | 0.0–1.0 confidence that the subject is a live person |
metadata.smile | Smile probability 0.0–1.0 |
metadata.age | Estimated age (float) |
metadata.gender | "Male" or "Female" |
Storing the enrolled face​
onResult = { result: FaceResults ->
val face = result.faces.firstOrNull() ?: return@FaceEnrollmentCamera
val stream = ByteArrayOutputStream()
face.compress(Bitmap.CompressFormat.JPEG, 90, stream)
val faceBase64 = Base64.encodeToString(stream.toByteArray(), Base64.NO_WRAP)
yourBackend.storeEnrolledFace(userId, faceBase64)
}