İçeriğe geç

Canlılık

Canlılık adımında kullanıcının ön kamerayla kısa bir video çekmesi istenir. Video Prove ID’de canlılık açısından kontrol edilir ve yüz, belgedeki fotoğrafla karşılaştırılır.

İşlem başlatılırken dönen gestureType, kullanıcıdan istenecek hareketi belirler.

LivenessBaseFragment.setLayerShape(LivenessFragment.Shape.OVAL);
LivenessBaseFragment.setControlFaceCapture(true);
LivenessBaseFragment.GESTURE_TYPE = GestureType.EYE; // EYE, MOUTH, HEAD_VERTICAL, HEAD_HORIZONTAL
LivenessBaseFragment.VIDEO_PREPARATION_TIME_IN_MS = 3000;
LivenessBaseFragment.VIDEO_RECORD_TIME_IN_MS = 5000;
LivenessBaseFragment livenessFragment = LivenessBaseFragment.create(this);
livenessFragment.setFragmentListener(new FragmentListener() {
@Override
public void onVideoCaptured(String videoPath) {
// Videoyu gönderin (aşağıda), ardından dosyayı silin
}
@Override public void onVideoStarting() { }
@Override public void onVideoStarted() { }
@Override public void onVideoCanceled() { }
@Override public void onVideoProcessing() { }
@Override public void onFaceDetectionFailure(boolean isAway) { /* yüzünüzü çerçeveye alın */ }
@Override public void onFaceDetectionSuccess() { }
@Override public void onFaceDetectionIdle() { }
@Override public void onMultiFaceDetected() { /* kadrajda tek kişi olmalı */ }
});

gestureType değerleri ile GestureType karşılıkları:

gestureType GestureType
EYE GestureType.EYE
MOUTH GestureType.MOUTH
HEAD-VERTICAL GestureType.HEAD_VERTICAL
HEAD-HORIZONTAL GestureType.HEAD_HORIZONTAL

Baş hareketlerinde (HEAD_VERTICAL, HEAD_HORIZONTAL) LivenessBaseFragment.IS_GESTURE_CONTROL_ENABLED = true ayarlayın.

String base64Video = Base64.encodeToString(videoBytes, Base64.NO_WRAP);
ServerCall.checkLiveness(new FaceVerificationModel(base64Video, transactionId, livenessFragment.rotate),
new TechsignServiceListener<VerifyFaceReturnModel>() {
@Override
public void onSuccess(VerifyFaceReturnModel result) {
ControlEntryModel[] controls = result.getControlResults();
}
@Override
public void onFailure(Exception e) { }
});
new File(videoPath).delete(); // videoyu cihazda bırakmayın

Hareket istemeden, kısa bir kayıtla çalışır:

LivenessBaseFragment.VIDEO_PREPARATION_TIME_IN_MS = 1000;
LivenessBaseFragment.VIDEO_RECORD_TIME_IN_MS = 2000;

Video yerine tek bir fotoğrafla:

LivenessBaseFragment.LIVENESS_FROM_IMAGE_ENABLED = true;
livenessFragment.setPhotoListener(new LivenessBaseFragment.LivenessPhotoListener() {
@Override
public void photoCaptured(Bitmap photo) {
ServerCall.verifyFaceWithImage(
new FaceVerificationWithImageInputModel(transactionId, toBase64(photo)),
listener);
}
@Override
public void eligiblePositionForCapture(PreparationPositionModel model) { }
});