Android 集成阿里雲 人臉識別
Android集成官方文檔:https://help.aliyun.com/document_detail/127598.html?spm=a2c4g.11186623.6.564.583c5f3e1BgoXP
集成步驟:
1,申請相關賬號,並且將項目簽名打包成apk上傳後下載相應的sdk;(注意,爲了方便測試 最好debug包 和release包通用一個簽名文件)
signingConfigs {
def alias = "key"
def password = "you password"
def filePath = "D://xx/MLKey.jks"
debug {
keyAlias alias
keyPassword password
storeFile file(filePath)
storePassword(password)
}
release {
keyAlias alias
keyPassword password
storeFile file(filePath)
storePassword(password)
}
}
2,下載的sdk裏包括一張驗證圖片,放置於項目res->drawble文件夾下 ;
3,將下載文件裏的AAR文件複製到工程JNILib目錄,如果項目本身集成有okhttp等,不要複製過來
其中fastjson也必須要(畢竟阿里親兒子),windvane爲webview 文件,必須要;
4,so文件複製到jniLibs文件夾,根據自己項目情況選擇對應cpu架構;
5,app gradle文件設置()
android{
...
}
repositories {
flatDir {
dirs 'libs'
//如果集成aar文件放置於子moudle 此處可以設置成 dirs '../yourModleName/libs'
}
}
dependencies {
...
implementation(name: 'rpsdk-4.0.4', ext: 'aar')
implementation(name: 'oss-android-sdk-2.9.2', ext: 'aar')
implementation(name: 'SecurityGuardSDK-external-release-5.4.193-preInstall', ext: 'aar')
implementation(name: 'SecurityBodySDK-external-release-5.4.112-preInstall', ext: 'aar')
implementation files('libs/fastjson-1.2.62.jar')
implementation files('libs/windvane-min-8.0.3.2.3.jar')
}
6,調用
Apllication文件初始化:
@Override
public void onCreate() {
super.onCreate();
initAliFace();
}
private void initAliFace() {
/**
* 通過ALBiometricsConfig 自定義您的UI
*/
ALBiometricsConfig.Builder alBiometricsConfig = new ALBiometricsConfig.Builder();
alBiometricsConfig.setNeedSound(false);//默認是否開啓聲音
alBiometricsConfig.transitionMode = TransitionMode.BOTTOM;//從下彈出
CloudRealIdentityTrigger.initialize(this, true, alBiometricsConfig.build());//第二個參數是本地日誌能力(若打開 會記錄問題到本地,方便後期排查線上用戶問題)
}
activity問調用(首先申請相機權限,這裏的token是後臺上傳識別圖片去阿里服務器後,回調獲得的)
private void openVerify(){
CloudRealIdentityTrigger.startVerifyByNative(this, token, getALRealIdentityCallback());
}
/**
* 基礎回調的方式 TODO
*
* @return
*/
private ALRealIdentityCallback getALRealIdentityCallback() {
return (alRealIdentityResult, s) -> {
//DO your things
LogUtils.debugInfo("RPSDK", "ALRealIdentityResult:" +
alRealIdentityResult.audit);
if (alRealIdentityResult.audit == 1) { //識別成功,是要對比的圖片
userInfo.setCertification("2");
mPresenter.updateSelfInfo(userInfo);
} else {//識別失敗
userInfo.setCertification("-1");
mPresenter.updateSelfInfo(userInfo);
}
};
}
AndroidManifest.xml
<manifest>
...
<application>
...
<!-- 阿里雲識別 -->
<activity
android:name="com.alibaba.security.biometrics.activity.ALBMiometricActivtiy"
android:hardwareAccelerated="true"
/>
<activity android:name="com.alibaba.security.rp.activity.RPTakePhotoActivity"
android:screenOrientation="portrait"
/>
<activity android:name="com.amap.api.navi.AmapRouteActivity"/>
<activity android:name="com.alibaba.security.rp.activity.RPH5Activity"
android:screenOrientation="portrait"
/>
</application>
</manifest>
--------------------------------------------------------------------------------完成分割線--------------------------------------------------------------------------
總結:
如果遇到沒有錯誤的閃退,解決方法 :1.加上AndroidManifest的acitivity聲明
2.如果不行 降低gradle版本
#Fri Apr 03 17:37:12 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
buildscript {
ext.kotlin_version = '1.3.61'
repositories {
google()
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
jcenter()
}
dependencies {
// classpath 'com.android.tools.build:gradle:3.6.2'
classpath 'com.android.tools.build:gradle:3.3.1'
...
}
...
}