|
|
@@ -22,6 +22,7 @@ import com.arcsoft.face.GenderInfo
|
|
|
import com.arcsoft.face.LivenessInfo
|
|
|
import com.arcsoft.face.enums.DetectFaceOrientPriority
|
|
|
import com.arcsoft.face.enums.DetectMode
|
|
|
+import com.arcsoft.face.enums.ExtractType
|
|
|
import com.grkj.shared.config.Constants
|
|
|
import com.grkj.shared.utils.face.arcsoft.CameraHelper
|
|
|
import com.grkj.shared.utils.face.arcsoft.CameraListener
|
|
|
@@ -42,7 +43,7 @@ object ArcSoftUtil {
|
|
|
private val cameraHeight: Int = 480
|
|
|
private var afCode = -1
|
|
|
private val processMask: Int =
|
|
|
- FaceEngine.ASF_AGE or FaceEngine.ASF_FACE3DANGLE or FaceEngine.ASF_GENDER or FaceEngine.ASF_LIVENESS
|
|
|
+ FaceEngine.ASF_AGE or FaceEngine.ASF_MASK_DETECT or FaceEngine.ASF_GENDER or FaceEngine.ASF_LIVENESS
|
|
|
|
|
|
private const val ACTION_REQUEST_PERMISSIONS: Int = 0x001
|
|
|
var isActivated = false
|
|
|
@@ -56,7 +57,12 @@ object ArcSoftUtil {
|
|
|
)
|
|
|
|
|
|
fun checkActiveStatus(context: Context) {
|
|
|
- val activeCode = FaceEngine.activeOnline(context, Constants.APP_ID, Constants.SDK_KEY)
|
|
|
+ val activeCode = FaceEngine.activeOnline(
|
|
|
+ context,
|
|
|
+ Constants.ACTIVE_KEY,
|
|
|
+ Constants.APP_ID,
|
|
|
+ Constants.SDK_KEY
|
|
|
+ )
|
|
|
when (activeCode) {
|
|
|
ErrorInfo.MOK -> {
|
|
|
isActivated = true
|
|
|
@@ -81,17 +87,16 @@ object ArcSoftUtil {
|
|
|
}
|
|
|
|
|
|
fun initEngine(context: Context) {
|
|
|
- if (isInit){
|
|
|
+ if (isInit) {
|
|
|
return
|
|
|
}
|
|
|
faceEngine = FaceEngine()
|
|
|
afCode = faceEngine!!.init(
|
|
|
context,
|
|
|
- DetectMode.ASF_DETECT_MODE_VIDEO,
|
|
|
- DetectFaceOrientPriority.valueOf("ASF_OP_0_ONLY"),
|
|
|
- 16,
|
|
|
+ DetectMode.ASF_DETECT_MODE_IMAGE,
|
|
|
+ DetectFaceOrientPriority.ASF_OP_0_ONLY,
|
|
|
1,
|
|
|
- FaceEngine.ASF_FACE_DETECT or FaceEngine.ASF_AGE or FaceEngine.ASF_FACE3DANGLE or FaceEngine.ASF_GENDER or FaceEngine.ASF_LIVENESS or FaceEngine.ASF_FACE_RECOGNITION
|
|
|
+ FaceEngine.ASF_FACE_DETECT or FaceEngine.ASF_AGE or FaceEngine.ASF_MASK_DETECT or FaceEngine.ASF_GENDER or FaceEngine.ASF_LIVENESS or FaceEngine.ASF_FACE_RECOGNITION
|
|
|
)
|
|
|
logger.info("initEngine: init: $afCode")
|
|
|
isInit = afCode == ErrorInfo.MOK
|
|
|
@@ -159,11 +164,10 @@ object ArcSoftUtil {
|
|
|
val faceLivenessInfoList: List<LivenessInfo> = ArrayList()
|
|
|
val ageCode = faceEngine!!.getAge(ageInfoList)
|
|
|
val genderCode = faceEngine!!.getGender(genderInfoList)
|
|
|
- val face3DAngleCode = faceEngine!!.getFace3DAngle(face3DAngleList)
|
|
|
val livenessCode = faceEngine!!.getLiveness(faceLivenessInfoList)
|
|
|
|
|
|
// 有其中一个的错误码不为ErrorInfo.MOK,return
|
|
|
- if ((ageCode or genderCode or face3DAngleCode or livenessCode) != ErrorInfo.MOK) {
|
|
|
+ if ((ageCode or genderCode or livenessCode) != ErrorInfo.MOK) {
|
|
|
logger.debug("人脸检测结果:年龄、性别、角度、获取验证失败")
|
|
|
return
|
|
|
}
|
|
|
@@ -273,11 +277,11 @@ object ArcSoftUtil {
|
|
|
val ftB = FaceFeature()
|
|
|
faceEngine?.extractFaceFeature(
|
|
|
imgA, bmpA.width, bmpA.height, FaceEngine.CP_PAF_BGR24,
|
|
|
- facesA[0], ftA
|
|
|
+ facesA[0], ExtractType.RECOGNIZE, 0, ftA
|
|
|
)
|
|
|
faceEngine?.extractFaceFeature(
|
|
|
imgB, bmpB.width, bmpB.height, FaceEngine.CP_PAF_BGR24,
|
|
|
- facesB[0], ftB
|
|
|
+ facesB[0], ExtractType.RECOGNIZE, 0, ftB
|
|
|
)
|
|
|
|
|
|
// 4. 特征比对
|