Skip to main content

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​

FieldDescription
faces[0]Baseline center-facing capture — use as the biometric reference
faces[1..n]Directional challenge captures (left, right, up, down)
livenessScore0.0–1.0 confidence that the subject is a live person
metadata.smileSmile probability 0.0–1.0
metadata.ageEstimated 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)
}