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.
Hareket (gesture) ile canlılık
Bölüm başlığı “Hareket (gesture) ile canlılık”İş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_HORIZONTALLivenessBaseFragment.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.
Videoyu gönderin
Bölüm başlığı “Videoyu gönderin”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ınPasif canlılık
Bölüm başlığı “Pasif canlılık”Hareket istemeden, kısa bir kayıtla çalışır:
LivenessBaseFragment.VIDEO_PREPARATION_TIME_IN_MS = 1000;LivenessBaseFragment.VIDEO_RECORD_TIME_IN_MS = 2000;Fotoğraftan canlılık
Bölüm başlığı “Fotoğraftan canlılık”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) { }});