Android项目Android studio环境:
1、工程build.gradle版本号:3.2.1
2、app目录下的build.gradle配置:compileSdkVersion 28
minSdkVersion 16
targetSdkVersion 28
1、注册百度AI开放平台账号。
2、选择产品服务-->人脸与人体识别-->离线采集SDK。
3、选择人脸识别-->Android-离线采集SDK下载。
(1)账号如果没有做企业认证的先去做企业认证,否则Android-离线采集SDK将会无法下载。
(2)账号如果已经做过企业认证的则会直接跳转到人脸识别 - 离线采集 SDK 管理。
4、还是在3的页面你可以申请授权类型永久免费、截至有效期永久免费、授权数量也可以申请增加。
注意:如果迟迟申请不下来可以在右上角工单按钮上创建工单,选择点击步骤:热门产品(人脸识别)-->产品问题类型(解决方案)-->右下角创建工单(立即创建)。
基本工作日期间会回复很快,解决速度也挺快的不超过2小时,也可能是我的运气不错。
5、在License管理中新增授权,以下都是我爬过坑之后得出的结论。
(1)授权标识:最好是取你应用的英文名称。
(2)应用类型:选择一个跟你应用一样的类型即可。
(3)应用信息:如果是先弄Android的话把iOS的勾去掉,反正后续iOS也可以补充信息的。
(4)安卓包名:app目录下的build.gradle中的applicationId 或者 manifest.xml中的package。
(5)安卓签名MD5:你应用所创建的key.jks,且key.jks存放的目录放置和app同等级。具体如何取出key.jks的md5值请看Android studio 上获取应用签名文件(keystore文件)的MD5值。
1、准备工作全部完成之后开始下载demo:开发资源下载-->Android-->有动作活体版本SDK。此时的demo中的三方库就可以直接拿来用了。
2、将demo中的 faceplatform 和 faceplatform-ui 三方库导入到你的应用。
(1)将 faceplatform 和 faceplatform-ui 这两个三方库直接拷贝到和app同等级的目录
(2)在settings.gradle中加入代码
include ':faceplatform' include ':faceplatform-ui'(3)将 faceplatform-ui 导入项目的module中,打开file-->project strupture-->点击app选择dependencies-->点击左下角 “+” 按钮-->点击module dependency-->选择faceplatform-ui点击OK。
(4)打开faceplatform三方包中的build.gradle,注释如下代码:
否则会报错如下:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.3、配置app下的build.gradle。
(1)创建和app同等级的faceclock.jks的key,如图:
(2)在app的build.gradle中的android内配置signingConfigs和buildTypes的内容,亲测不按照文档来的话,会一直处于「把脸放入框内」的语音提示:
signingConfigs { def password = "123456" def alias = "faceclock" def filePath = "../faceclock" //如 ../facesharp.jks//签名文件路径 debug { keyAlias alias keyPassword password storeFile file(filePath) storePassword(password) } release { keyAlias alias keyPassword password storeFile file(filePath) storePassword(password) } } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug debuggable true jniDebuggable true } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release debuggable false jniDebuggable false } }4、根据官方文档在AndroidManifest.xml上配置相关权限,这里就不截图了。
5、将License中的证书下载下来,拷贝到app/src/main/assets目录下:
6、简单封装人脸识别工具类。
(1)百度AI申请的相关key:
public static final class BaiDuFaceID { public static String licenseID = "你申请证书的ID"; public static String licenseFileName = "你assets下证书的名称"; }(2)百度AI人脸识别(ps:动态动作个数可随意设置)管理工具类:
public class FaceSDKManagerUtils { private static class FaceSDKManagerHolder { private static final FaceSDKManagerUtils INSTANCE = new FaceSDKManagerUtils(); } public static FaceSDKManagerUtils getInstance() { return FaceSDKManagerHolder.INSTANCE; } public void FaceSDKInit(Activity context) { FaceSDKManager.getInstance().initialize(context, Constants.BaiDuFaceID.licenseID, Constants.BaiDuFaceID.licenseFileName); } public void FaceSDKForClockConfig() { FaceConfig config = FaceSDKManager.getInstance().getFaceConfig(); List<LivenessTypeEnum> livenessList = new ArrayList<LivenessTypeEnum>(); livenessList.clear(); livenessList.add(LivenessTypeEnum.Eye); //SDK初始化已经设置完默认参数(推荐参数),您也根据实际需求进行数值调整 config.setLivenessTypeList(livenessList); config.setLivenessRandom(false); config.setBlurnessValue(FaceEnvironment.VALUE_BLURNESS); config.setBrightnessValue(FaceEnvironment.VALUE_BRIGHTNESS); config.setCropFaceValue(FaceEnvironment.VALUE_CROP_FACE_SIZE); config.setHeadPitchValue(FaceEnvironment.VALUE_HEAD_PITCH); config.setHeadRollValue(FaceEnvironment.VALUE_HEAD_ROLL); config.setHeadYawValue(FaceEnvironment.VALUE_HEAD_YAW); config.setMinFaceSize(FaceEnvironment.VALUE_MIN_FACE_SIZE); config.setNotFaceValue(FaceEnvironment.VALUE_NOT_FACE_THRESHOLD); config.setOcclusionValue(FaceEnvironment.VALUE_OCCLUSION); config.setCheckFaceQuality(true); config.setFaceDecodeNumberOfThreads(2); FaceSDKManager.getInstance().setFaceConfig(config); } public void FaceSDKForCollectConfig() { FaceConfig config = FaceSDKManager.getInstance().getFaceConfig(); config.setSound(false); List<LivenessTypeEnum> livenessList = new ArrayList<LivenessTypeEnum>(); livenessList.clear(); livenessList.add(LivenessTypeEnum.Eye); livenessList.add(LivenessTypeEnum.HeadLeft); livenessList.add(LivenessTypeEnum.HeadRight); config.setLivenessTypeList(livenessList); config.setLivenessRandom(false); config.setBlurnessValue(FaceEnvironment.VALUE_BLURNESS); config.setBrightnessValue(FaceEnvironment.VALUE_BRIGHTNESS); config.setCropFaceValue(FaceEnvironment.VALUE_CROP_FACE_SIZE); config.setHeadPitchValue(FaceEnvironment.VALUE_HEAD_PITCH); config.setHeadRollValue(FaceEnvironment.VALUE_HEAD_ROLL); config.setHeadYawValue(FaceEnvironment.VALUE_HEAD_YAW); config.setMinFaceSize(FaceEnvironment.VALUE_MIN_FACE_SIZE); config.setNotFaceValue(FaceEnvironment.VALUE_NOT_FACE_THRESHOLD); config.setOcclusionValue(FaceEnvironment.VALUE_OCCLUSION); config.setCheckFaceQuality(true); config.setFaceDecodeNumberOfThreads(2); FaceSDKManager.getInstance().setFaceConfig(config); } }7、正式调用已封装好的工具类
(1)第一步初始化人脸识别的sdk
FaceSDKManagerUtils.getInstance().FaceSDKInit(this);(2)跳转人脸识别的activity或者fragment之前先设置人脸识别sdk的config,再进行intent跳转页面
FaceSDKManagerUtils.getInstance().FaceSDKForClockConfig(); //todo:执行页面跳转
