Setup Accura Face Liveness
Contact AccuraScan at contact@accurascan.com for Liveness SDK or API
Add following code in Manifest.
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
>
</application>
Note : 'android:networkSecurityConfig="@xml/network_security_config"' setup will permit clear text traffic
Add following code to your Application class or MainActivity for hostname verification
new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("your url host name", session);
}
};
Open camera for liveness Detectcion.
Must have to Grant camera permission
private final static int ACCURA_LIVENESS_CAMERA = 100;
// To customize your screen theme and feed back messages
LivenessCustomization livenessCustomization = new LivenessCustomization();
livenessCustomization.backGroundColor = getResources().getColor(R.color.livenessBackground);
livenessCustomization.closeIconColor = getResources().getColor(R.color.livenessCloseIcon);
livenessCustomization.feedbackBackGroundColor = Color.TRANSPARENT;
livenessCustomization.feedbackTextColor = Color.BLACK;
livenessCustomization.feedbackTextSize = 18;
livenessCustomization.feedBackframeMessage = "Frame Your Face";
livenessCustomization.feedBackAwayMessage = "Move Phone Away";
livenessCustomization.feedBackOpenEyesMessage = "Keep Your Eyes Open";
livenessCustomization.feedBackCloserMessage = "Move Phone Closer";
livenessCustomization.feedBackCenterMessage = "Move Phone Center";
livenessCustomization.feedBackMultipleFaceMessage = "Multiple Face Detected";
livenessCustomization.feedBackHeadStraightMessage = "Keep Your Head Straight";
livenessCustomization.feedBackBlurFaceMessage = "Blur Detected Over Face";
livenessCustomization.feedBackGlareFaceMessage = "Glare Detected";
livenessCustomization.feedBackLowLightMessage = "Low light detected";
livenessCustomization.feedbackDialogMessage = "Loading...";
livenessCustomization.feedBackProcessingMessage = "Processing...";
livenessCustomization.showlogo = 0; // Set 0 to hide logo from selfie camera screen
livenessCustomization.logoIcon = R.drawable.your_logo; // To set your custom logo
// LivenessCustomization.CAMERA_FACING_FRONT to set selfie camera
// LivenessCustomization.CAMERA_FACING_BACK to set rear camera
livenessCustomization.facing = LivenessCustomization.CAMERA_FACING_FRONT;
// 0 for full dark face and 100 for full bright face or set it -1 to remove low light filter
livenessCustomization.setLowLightTolerence(-1/*lowLightTolerence*/);
// 0 for clean face and 100 for Blurry face or set it -1 to remove blur filter
livenessCustomization.setBlurPercentage(80/*blurPercentage*/); // To allow blur on face
// Set min and max percentage for glare or set it -1 to remove glare filter
livenessCustomization.setGlarePercentage(6/*glareMinPercentage*/, 99/*glareMaxPercentage*/);
// must have to call SelfieCameraActivity.getCustomIntent() to create intent
Intent intent = SelfieCameraActivity.getCustomIntent(this, livenessCustomization);
startActivityForResult(intent, ACCURA_LIVENESS_CAMERA);
// Handle accura liveness result.
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == ACCURA_LIVENESS_CAMERA && data != null) {
AccuraVerificationResult result = data.getParcelableExtra("Accura.liveness");
if (result == null) {
return;
}
if (result.getStatus().equals("1")) {
// result get bitmap of face by using following code
Bitmap bitmap = result.getFaceBiometrics();
// do some code to call liveness api to get liveness score of result.getFaceUri() Image.
} else {
Toast.makeText(this, result.getStatus() + " " + result.getErrorMessage(), Toast.LENGTH_SHORT).show();
}
}
}
}
ProGuard
Depending on your ProGuard (DexGuard) config and usage, you may need to include the following lines in your proguards.
-keep public class com.docrecog.scan.ImageOpencv {;}
-keep class com.accurascan.ocr.mrz.model.* {;}
-keep class com.accurascan.ocr.mrz.interfaces.* {;}
-keep public class com.inet.facelock.callback.FaceCallback {*;}
-keep public class com.inet.facelock.callback.FaceDetectionResult {*;}
Last updated