前言
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:執行頁面跳轉
三、如有疑問請留言,如解決了道友的問題右上角點個贊可好。