日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Android接入

本文從簡單接入(使用限制、接入步驟)和SDK進(jìn)階使用兩個階段,結(jié)合示例代碼介紹Android客戶端的接入流程。

使用限制

Android SDK使用限制如下:

  • 不支持模擬器模式調(diào)試。

  • 僅支持Android 4.4及以上系統(tǒng)版本的移動智能設(shè)備(手機(jī)或Pad)接入。

接入步驟

一、前期準(zhǔn)備

接入前需要進(jìn)行權(quán)限配置和SDK依賴配置,您可以參考下面的步驟操作。

說明

折疊框點(diǎn)擊可以收起。

權(quán)限說明

Android SDK中使用的權(quán)限已經(jīng)在SDK包中聲明,無需開發(fā)者顯式聲明。

SDK中涉及到的權(quán)限使用請參見Android應(yīng)用權(quán)限列表

重要

根據(jù)相關(guān)合規(guī)要求,獲取用戶設(shè)備敏感權(quán)限需要同步告知權(quán)限申請目的。SDK中已經(jīng)內(nèi)置了提示,您可以通過合規(guī)權(quán)限提醒完成相應(yīng)配置以開啟使用。

依賴配置

下載Android SDK,該SDK為Android標(biāo)準(zhǔn)AAR包。

下載完畢之后解壓,將Android SDK文件夾中的所有aar文件拷貝到主工程模塊下的libs目錄中(具體以工程實(shí)際配置為準(zhǔn)),并在模塊對應(yīng)的build.gradle文件中添加如下依賴:

// 阿里云實(shí)人認(rèn)證服務(wù)SDK AAR,fileTree 方式依賴指定目錄
implementation(fileTree(dir: "libs", includes: ["*.aar"]))

// 阿里云實(shí)人認(rèn)證服務(wù)三方依賴庫,不能省略
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okio:okio:1.14.0'
implementation 'com.alibaba:fastjson:1.2.83_noneautotype'
說明

上述配置中將實(shí)人認(rèn)證Android SDK全部包引入項(xiàng)目中,如不需要全部引入請參考SDK包裁剪

二、調(diào)用SDK

前期準(zhǔn)備完成后,需要按下面三個動作完成SDK的調(diào)用。

  1. 初始化(install)

  2. 獲取MetaInfos(getMetaInfos)

  3. 調(diào)用認(rèn)證方法(verify)

初始化(install)

調(diào)用該函數(shù)完成SDK內(nèi)部初始化。請務(wù)必做延遲初始化配置,確保在用戶同意《隱私權(quán)政策》后,在人臉識別業(yè)務(wù)場景中初始化SDK。

  • 初始化:

    ZIMFacade.install(context);
  • 如需使用IPv6網(wǎng)絡(luò)初始化,參考如下代碼:

    ZIMFacade.installIPv6(context);
  • context參數(shù)為當(dāng)前Application的context

獲取MetaInfos(getMetaInfos)

移動端環(huán)境信息發(fā)送至業(yè)務(wù)服務(wù)器端,業(yè)務(wù)服務(wù)器端將這些信息作為參數(shù)之一(MetaInfos)調(diào)用服務(wù)端初始化認(rèn)證接口(InitFaceVerify),從而獲取CertifyId,用于后續(xù)認(rèn)證環(huán)節(jié)。

重要

MetaInfos數(shù)據(jù)會影響認(rèn)證服務(wù)器提供的服務(wù)類型,不要使用硬編碼的模擬數(shù)據(jù),否則可能導(dǎo)致無法認(rèn)證。

  • 調(diào)用代碼:

    // context參數(shù)為當(dāng)前Application的context。
    ZIMFacade.getMetaInfos(context);
  • 返回值:String類型,以JSON格式返回當(dāng)前移動設(shè)備端的環(huán)境信息。(點(diǎn)擊查看)

    注意:此JSON僅作為結(jié)構(gòu)示范,由于不通設(shè)備產(chǎn)生的數(shù)據(jù)不一樣,調(diào)試時請使用真實(shí)數(shù)據(jù),否則可能無法認(rèn)證。

    {
        "apdidToken": "xxxx",
        "appName": "com.aliyun.facedemo",
        "appVersion": "1.2.8",
        "bioMetaInfo": "6.7.0:21478612992,0",
        "deviceModel": "Mi 10",
        "deviceType": "android",
        "osVersion": "12",
        "sdkVersion": "2.1.0",
        "securityVersion": "2",
        "voiceSdkVersion": "1.0.0",
        "zimVer": "1.0.0"
    }

調(diào)用認(rèn)證方法(verify)

調(diào)用示例如下:

ZIMFacade zimFacade = ZIMFacadeBuilder.create(MainActivity.this);
zimFacade.verify(certifyId,useMsgBox,extParams,callback);

verify方法參數(shù)詳細(xì)說明(點(diǎn)擊查看)

參數(shù)

類型

說明

certifyId

String

從服務(wù)端初始化認(rèn)證接口(InitFaceVerify)獲取的CertifyId。

說明

每個CertifyId只能調(diào)用一次verify函數(shù),每次調(diào)用verify函數(shù)之前務(wù)必重新獲取CertifyId。

useMsgBox

boolean

當(dāng)刷臉認(rèn)證過程中出現(xiàn)異常情況,是否使用SDK內(nèi)部的彈框提示。取值:

  • true:SDK先彈框提示,確定之后,返回錯誤code。

  • false:不彈提示框,直接返回錯誤code,客戶業(yè)務(wù)應(yīng)用App自行決定如何提示。

extParams

HashMap

<String, String>

用戶自定義參數(shù),一般直接傳NULL即可。目前支持的自定義字段,extParams取值,詳情請參見下方extParams取值說明

重要

金融級多因子意愿認(rèn)證方案暫不支持此參數(shù),傳NULL即可。

callback

ZIMCallback

認(rèn)證結(jié)果的回調(diào)接口,定義如下:

public interface ZIMCallback {
    boolean response(ZIMResponse response);
}

ZIMResponse類的使用示例,請參見下文結(jié)果處理章節(jié)所示的代碼。

extParams取值說明

取值

說明

示例值

ext_params_key_use_video

是否返回活體認(rèn)證視頻。取值:

  • true:可在response.videoFilePath或在服務(wù)端查詢接口獲取視頻本地路徑。

  • false:不返回活體認(rèn)證視頻(默認(rèn))。

false

ext_params_key_screen_orientation

認(rèn)證界面UI朝向。取值:

  • ext_params_val_screen_port:豎屏(默認(rèn))。

  • ext_params_val_screen_land:橫屏。

ext_params_val_screen_land

ext_params_key_face_progress_color

活體檢測頁面的進(jìn)度條顏色。

#FF0000

ext_params_key_ocr_bottom_button_color

OCR識別結(jié)果確認(rèn)頁底部按鈕顏色。

#FF0000

完整代碼示例

完整代碼示例如下所示。您也可以下載Android Demo代碼包在本地搭建工程體驗(yàn)。

public class MainActivity extends Activity {

    private String certifyId = "<從服務(wù)端InitFaceVerify接口獲取>";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化(install)
        ZIMFacade.install(this);

        // 獲取MetaInfos
        String metaInfos = ZIMFacade.getMetaInfos(this);

        // 將MetaInfos發(fā)送到App服務(wù)器端,調(diào)用云端InitFaceVerify接口獲取CertifyId。
        // certifyId = getCertifyIdFromServer(metaInfo); // 需客戶自己實(shí)現(xiàn)

        HashMap<String, String> extParams = new HashMap<>();
        // extParams取值示例
        extParams.put("ext_params_key_use_video", "false");

        // 調(diào)用認(rèn)證方法(verify)
        ZIMFacade zimFacade = ZIMFacadeBuilder.create(MainActivity.this);
        zimFacade.verify(certifyId, true, extParams,new ZIMCallback() {
            @Override
            public boolean response(ZIMResponse response) {
                if (null != response && 1000 == response.code) {
                    // 認(rèn)證成功
                    Toast.makeText(getApplicationContext(),
                            "認(rèn)證成功\n" +
                                    "code: " + response.code + "\n" +
                                    "reason: " + response.reason,
                            Toast.LENGTH_LONG).show();
                } else {
                    // 認(rèn)證失敗
                    Toast.makeText(getApplicationContext(),
                            "認(rèn)證失敗\n" +
                                    "code: " + response.code + "\n" +
                                    "reason: " + response.reason,
                            Toast.LENGTH_LONG).show();
                }
                return true;
            }
        });
    }
}

三、結(jié)果處理:

認(rèn)證結(jié)果通過verify>callback>response方法提供的ZIMResponse對象傳入,示例可參見完整代碼示例

ZIMResponse對象包含了諸多屬性,結(jié)果處理主要關(guān)注code(結(jié)果編碼)和reason(結(jié)果原因)即可,常見的編碼和原因如下表所示。

code

是否計(jì)費(fèi)

reason

描述

1000

刷臉成功

用戶完成了刷臉過程,認(rèn)證建議結(jié)果為通過。該結(jié)果僅供參考,可通過調(diào)用服務(wù)端DescribeFaceVerify接口獲取最終認(rèn)證結(jié)果。

1001

系統(tǒng)錯誤

表示系統(tǒng)錯誤。

1003

驗(yàn)證中斷

表示驗(yàn)證中斷。

2002

網(wǎng)絡(luò)錯誤

表示網(wǎng)絡(luò)錯誤。

2003

客戶端設(shè)備時間錯誤

表示客戶端設(shè)備時間錯誤。

2006

刷臉失敗

用戶完成了刷臉過程,認(rèn)證結(jié)果為未通過。該結(jié)果僅供參考,可通過調(diào)用服務(wù)端DescribeFaceVerify接口獲取最終認(rèn)證結(jié)果以及未通過的詳細(xì)原因。

完整結(jié)果編碼信息(點(diǎn)擊查看

為了方便您在離線環(huán)境下也可以查詢參考,可以緩存下方表格到本地

客戶端錯誤碼

Android

1000

Z5120 - 刷臉成功,認(rèn)證通過。可通過服務(wù)端查詢接口獲取認(rèn)證詳細(xì)資料信息

1001

Z1000 - 其他異常

Z1001 - 人臉識別算法初始化失敗

Z1002 - 無法啟動相機(jī)

Z1003 - 不支持的CPU架構(gòu)

Z1004 - Android系統(tǒng)版本過低

Z1018 - 無前置攝像頭

Z1019 - 攝像頭權(quán)限未賦予

Z1020 - 打開攝像頭失敗

Z1021 - 攝像頭流錯誤

Z1023 - 認(rèn)證內(nèi)部錯誤

Z1024 - SDK認(rèn)證流程正在進(jìn)行中,請等待本地認(rèn)證流程完成后再發(fā)起新調(diào)用

Z1029 - 系統(tǒng)版本過低,不支持錄屏

Z1030 - 錄音權(quán)限未賦予

Z1031 - 錄屏權(quán)限未賦予

Z1032 - 麥克風(fēng)打開失敗

Z1033 - 錄屏打開失敗

Z1035 - Context為空

Z1036 - 認(rèn)證之前沒有調(diào)用 install() 接口完成初始化

Z1037 - CertifyId為null或長度為0

Z1056 - 混淆配置錯誤

Z1039 - 多進(jìn)程使用webview

Z1045 - Context為空

Z1046 - 刷臉過程中斷

Z1047 - 模型數(shù)據(jù)錯誤

Z1048 - 質(zhì)量認(rèn)證異常

Z5112 - 上傳炫彩Meta信息失敗

Z5113 - 上傳炫彩視頻失敗

Z5114 - 認(rèn)證視頻上傳失敗

Z6001 - OCR識別次數(shù)超限

Z6003 - OSS Token過期

Z6004 - 人臉照片處理失敗

Z7001 - SDK初始化或者使用過程中數(shù)據(jù)異常

Z3002 - 拒絕打開系統(tǒng)NFC功能

Z3003 - 設(shè)備不支持NFC

Z3004 - NFC協(xié)議相關(guān)異常

Z3005 - 透傳模式三要素錯誤

Z5115_4 - so加載異常

A4001 - 刷臉模塊接入異常

A4002 - 炫彩模塊接入異常

A4003 - OCR模塊接入異常

A4004 - NFC模塊接入異常

A4005 - 意愿模塊接入異常

1003

Z1005 - 刷臉超時(單次)

Z1006 - 多次刷臉超時

Z1008 - 用戶在認(rèn)證過程中點(diǎn)擊X退出

Z1009 - 用戶在授權(quán)頁面點(diǎn)擊“暫不授權(quán)”退出

Z1013 - 活體檢測不通過

Z1041 - OCR重試次數(shù)過多退出

Z1044 - 認(rèn)證過程中折疊屏設(shè)備折疊/展開狀態(tài)調(diào)整

Z3001 - NFC重試超過限制

2002

Z1011 - 客戶端初始化網(wǎng)絡(luò)錯誤

Z1012 - 客戶端網(wǎng)絡(luò)訪問異常

Z1025 - 客戶端初始化接口返回網(wǎng)絡(luò)錯誤

Z1026 - 信息上傳網(wǎng)絡(luò)錯誤

Z1027 - 服務(wù)端認(rèn)證接口網(wǎng)絡(luò)錯誤

Z1028 - 服務(wù)端接口并發(fā)請求超出限制

Z1040 - 刷臉模型下載失敗

Z1042 - OCR認(rèn)證服務(wù)報(bào)錯

Z1043 - 刷臉認(rèn)證服務(wù)報(bào)錯

Z5116 - 音頻文件上傳失敗

Z6002 - OCR圖片上傳網(wǎng)絡(luò)超時

2003

客戶端設(shè)備時間錯誤

2006

Z5128 - 刷臉失敗,認(rèn)證未通過。可通過服務(wù)端查詢接口獲取認(rèn)證未通過具體原因。

SDK的進(jìn)階使用

混淆配置(重要)

如果您的工程使用了代碼混淆,請務(wù)必在App工程的proguard-rules.pro文件中添加如下配置信息,以防止接口被混淆處理后造成功能異常。

說明

您可以根據(jù)實(shí)際使用的SDK功能,刪除多余的混淆配置。

# 必須要依賴到應(yīng)用混淆中
-keepclassmembers,allowobfuscation class * {
     @com.alibaba.fastjson.annotation.JSONField <fields>;
}
-keep class net.security.device.api.** {*;}
-keep class face.security.device.api.** {*;}
-keep class com.alipay.deviceid.** { *; }
-keep class org.json.** { *;}
-keep class com.alibaba.fastjson.** {*;}

# SDK混淆配置
-keep class com.alipay.face.api.** {*;}
-keep class com.alipay.zoloz.toyger.**{*;}
-keep class com.dtf.face.api.** {*;}
-keep class com.dtf.face.ocr.verify.DTFOcrFacade { *; }
-keep class com.dtf.face.verify.** {*;}
-keep class com.dtf.face.network.model.** {*;}
-keep class com.dtf.face.network.APICallback {*;}
-keep class com.dtf.face.config.**{*;}
-keep class com.dtf.face.log.** {*;}
-keep class com.dtf.face.ui.overlay.** {*;}
-keep class com.dtf.face.ui.widget.ToygerWebView {*;}
-keep class com.dtf.face.utils.ClientConfigUtil{
   boolean needUploadPreviewTrace*();
   boolean needVideoExDegrade*();
   boolean isCfgVideoExDevice*();
}
-keep class com.dtf.toyger.base.** {*;}
-keep class com.dtf.face.network.mpass.biz.model.** { *; }
-keep class com.dtf.face.utils.LogUtils { *; }
-keep class com.dtf.wish.api.** { *; }
-keep class com.dtf.wish.ui.** { *; }
-keep class com.dtf.wish.ui.WishFragment{*;}
-keep class com.dtf.voice.api.** { *; }
-keep class xnn.* { *; }
-keep class facadeverify.** { *; }
-keep class baseverify.** { *; }
-keep class faceverify.** { *; }
-keep class ocrverify.** { *; }
-keep class wishverify.** { *; }

# R8編譯混淆配置
-keep class com.dtf.face.ui.toyger.FaceLoadingFragment{ *; }
-keep class com.dtf.face.ui.toyger.FaceShowFragment{*;}
-keep class com.dtf.face.ui.toyger.FaceShowElderlyFragment{*;}
-keepclassmembers class com.dtf.face.camera.ICameraCallback{
   void onPreviewFrame*(*);
}

# NFC編譯配置
-keep class com.dtf.face.nfc.verify.DTFNfcFacade { *; }
-keep class com.eidlink.**{*;}
-keep class net.sf.**{*;}
-keep class org.**{*;}
-keep class cn.**{*;}
-keep class com.froad.**{*;}
-keep class com.huawei.**{*;}
-keep class com.eidlink.**{*;}
-keep class org.ejbca.cvc.**{*;}
-keep class org.jmrtd.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}
-keep class net.sf.scuba.**{*;}
-keep class org.eid_bc.bouncycastle.jcajce.provider.symmetric.**{*;}

# 忽略警告
-dontwarn okio.**
-dontwarn org.apache.commons.codec.binary.**

SDK包裁剪

一些特殊的場景和需求會使用到SDK包裁剪功能,例如App打包體積要求或者三方依賴沖突等。

如果需要判斷功能是否可裁剪或者需要查找每個包負(fù)責(zé)的功能描述,請參見SDK包裁剪說明

SDK UI自定義設(shè)置

如果對認(rèn)證頁面的UI有自定義的需求,SDK提供了UI自定義配置功能,可以對認(rèn)證頁面的文本、顏色和icon進(jìn)行配置。

詳細(xì)操作,請參見Android SDK UI自定義配置說明