按照使用示例完成功能开发。/* 人脸识别取消信号初始化 */
CancellationSignal signal = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
signal = new CancellationSignal();
}
/* 人脸识别回调初始化 */
FaceManager.AuthenticationCallback callback = new FaceManager.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
/* 人脸识别过程中错误信息回调函数,返回识别过程中错误信息 */
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
/* 人脸识别过程中提示信息回调函数,返回识别过程中提示信息 */
}
@Override
public void onAuthenticationSucceeded(FaceManager.AuthenticationResult result) {
/* 人脸识别成功回调函数,表明本次人脸识别成功 */
}
@Override
public void onAuthenticationFailed() {
/* 人脸识别失败回调函数,表明本次人脸识别失败 */
}
};
/* 发起一次人脸识别 */
if (faceManager != null) {
boolean isSupport = false;
boolean isEnrolled = false;
boolean is3D = false;
try {
/* 获取人脸识别能力 */
FaceManager.FaceRecognitionCapability capability = faceManager.getFaceRecognitionCapability();
if (capability == null) {
Log.e(TAG, "capability is null");
return;
}
isSupport = capability.isSupport;
isEnrolled = capability.isEnrolled;
is3D = capability.is3D;
} catch (NoSuchMethodError e) {
/* EMUI 11.0.1之前版本, getFaceRecognitionCapability方法不存在,使用老接口获取人脸识别能力 */
isSupport = faceManager.isHardwareDetected();
isEnrolled = faceManager.hasEnrolledTemplates();
/* EMUI 11.0.1之前版本, 仅支持3D人脸识别 */
is3D = true;
}
/* 检查当前设备是否支持人脸识别 */
if (isSupport) {
/* 检查当前设备是否已录入人脸 */
if (isEnrolled) {
/* 显示当前设备是否支持3D人脸 */
modality.setText("Face Recognition Modality: " + (is3D ? "3D" : "2D"));
/* 调用人脸识别功能 */
faceManager.authenticate(null, signal, 0, callback, null);
} else {
ShowToastUtils.showToast(MainActivity.this, "No enrolled face", Toast.LENGTH_SHORT);
}
} else {
ShowToastUtils.showToast(MainActivity.this, "This device does not support face recognition",
Toast.LENGTH_SHORT);
}
}