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

Android接入

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

使用限制

Android SDK使用限制如下:

  • 不支持模擬器模式調試。

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

接入步驟

一、前期準備

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

說明

折疊框點擊可以收起。

權限說明

Android SDK中使用的權限已經在SDK包中聲明,無需開發者顯式聲明。

SDK中涉及到的權限使用請參見Android應用權限列表

重要

根據相關合規要求,獲取用戶設備敏感權限需要同步告知權限申請目的。SDK中已經內置了提示,您可以通過合規權限提醒完成相應配置以開啟使用。

依賴配置

下載Android SDK,該SDK為Android標準AAR包。

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

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

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

上述配置中將實人認證Android SDK全部包引入項目中,如不需要全部引入請參考SDK包裁剪

二、調用SDK

前期準備完成后,需要按下面三個動作完成SDK的調用。

  1. 初始化(install)

  2. 獲取MetaInfos(getMetaInfos)

  3. 調用認證方法(verify)

初始化(install)

調用該函數完成SDK內部初始化。請務必做延遲初始化配置,確保在用戶同意《隱私權政策》后,在人臉識別業務場景中初始化SDK。

  • 初始化:

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

    ZIMFacade.installIPv6(context);
  • context參數為當前Application的context

獲取MetaInfos(getMetaInfos)

移動端環境信息發送至業務服務器端,業務服務器端將這些信息作為參數之一(MetaInfos)調用服務端初始化認證接口(InitFaceVerify),從而獲取CertifyId,用于后續認證環節。

重要

MetaInfos數據會影響認證服務器提供的服務類型,不要使用硬編碼的模擬數據,否則可能導致無法認證。

  • 調用代碼:

    // context參數為當前Application的context。
    ZIMFacade.getMetaInfos(context);
  • 返回值:String類型,以JSON格式返回當前移動設備端的環境信息。(點擊查看)

    注意:此JSON僅作為結構示范,由于不通設備產生的數據不一樣,調試時請使用真實數據,否則可能無法認證。

    {
        "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"
    }

調用認證方法(verify)

調用示例如下:

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

verify方法參數詳細說明(點擊查看)

參數

類型

說明

certifyId

String

從服務端初始化認證接口(InitFaceVerify)獲取的CertifyId。

說明

每個CertifyId只能調用一次verify函數,每次調用verify函數之前務必重新獲取CertifyId。

useMsgBox

boolean

當刷臉認證過程中出現異常情況,是否使用SDK內部的彈框提示。取值:

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

  • false:不彈提示框,直接返回錯誤code,客戶業務應用App自行決定如何提示。

extParams

HashMap

<String, String>

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

重要

金融級多因子意愿認證方案暫不支持此參數,傳NULL即可。

callback

ZIMCallback

認證結果的回調接口,定義如下:

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

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

extParams取值說明

取值

說明

示例值

ext_params_key_use_video

是否返回活體認證視頻。取值:

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

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

false

ext_params_key_screen_orientation

認證界面UI朝向。取值:

  • ext_params_val_screen_port:豎屏(默認)。

  • ext_params_val_screen_land:橫屏。

ext_params_val_screen_land

ext_params_key_face_progress_color

活體檢測頁面的進度條顏色。

#FF0000

ext_params_key_ocr_bottom_button_color

OCR識別結果確認頁底部按鈕顏色。

#FF0000

完整代碼示例

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

public class MainActivity extends Activity {

    private String certifyId = "<從服務端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發送到App服務器端,調用云端InitFaceVerify接口獲取CertifyId。
        // certifyId = getCertifyIdFromServer(metaInfo); // 需客戶自己實現

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

        // 調用認證方法(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) {
                    // 認證成功
                    Toast.makeText(getApplicationContext(),
                            "認證成功\n" +
                                    "code: " + response.code + "\n" +
                                    "reason: " + response.reason,
                            Toast.LENGTH_LONG).show();
                } else {
                    // 認證失敗
                    Toast.makeText(getApplicationContext(),
                            "認證失敗\n" +
                                    "code: " + response.code + "\n" +
                                    "reason: " + response.reason,
                            Toast.LENGTH_LONG).show();
                }
                return true;
            }
        });
    }
}

三、結果處理:

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

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

code

是否計費

reason

描述

1000

刷臉成功

用戶完成了刷臉過程,認證建議結果為通過。該結果僅供參考,可通過調用服務端DescribeFaceVerify接口獲取最終認證結果。

1001

系統錯誤

表示系統錯誤。

1003

驗證中斷

表示驗證中斷。

2002

網絡錯誤

表示網絡錯誤。

2003

客戶端設備時間錯誤

表示客戶端設備時間錯誤。

2006

刷臉失敗

用戶完成了刷臉過程,認證結果為未通過。該結果僅供參考,可通過調用服務端DescribeFaceVerify接口獲取最終認證結果以及未通過的詳細原因。

完整結果編碼信息(點擊查看

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

客戶端錯誤碼

Android

1000

Z5120 - 刷臉成功,認證通過。可通過服務端查詢接口獲取認證詳細資料信息

1001

Z1000 - 其他異常

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

Z1002 - 無法啟動相機

Z1003 - 不支持的CPU架構

Z1004 - Android系統版本過低

Z1018 - 無前置攝像頭

Z1019 - 攝像頭權限未賦予

Z1020 - 打開攝像頭失敗

Z1021 - 攝像頭流錯誤

Z1023 - 認證內部錯誤

Z1024 - SDK認證流程正在進行中,請等待本地認證流程完成后再發起新調用

Z1029 - 系統版本過低,不支持錄屏

Z1030 - 錄音權限未賦予

Z1031 - 錄屏權限未賦予

Z1032 - 麥克風打開失敗

Z1033 - 錄屏打開失敗

Z1035 - Context為空

Z1036 - 認證之前沒有調用 install() 接口完成初始化

Z1037 - CertifyId為null或長度為0

Z1056 - 混淆配置錯誤

Z1039 - 多進程使用webview

Z1045 - Context為空

Z1046 - 刷臉過程中斷

Z1047 - 模型數據錯誤

Z1048 - 質量認證異常

Z5112 - 上傳炫彩Meta信息失敗

Z5113 - 上傳炫彩視頻失敗

Z5114 - 認證視頻上傳失敗

Z6001 - OCR識別次數超限

Z6003 - OSS Token過期

Z6004 - 人臉照片處理失敗

Z7001 - SDK初始化或者使用過程中數據異常

Z3002 - 拒絕打開系統NFC功能

Z3003 - 設備不支持NFC

Z3004 - NFC協議相關異常

Z3005 - 透傳模式三要素錯誤

Z5115_4 - so加載異常

A4001 - 刷臉模塊接入異常

A4002 - 炫彩模塊接入異常

A4003 - OCR模塊接入異常

A4004 - NFC模塊接入異常

A4005 - 意愿模塊接入異常

1003

Z1005 - 刷臉超時(單次)

Z1006 - 多次刷臉超時

Z1008 - 用戶在認證過程中點擊X退出

Z1009 - 用戶在授權頁面點擊“暫不授權”退出

Z1013 - 活體檢測不通過

Z1041 - OCR重試次數過多退出

Z1044 - 認證過程中折疊屏設備折疊/展開狀態調整

Z3001 - NFC重試超過限制

2002

Z1011 - 客戶端初始化網絡錯誤

Z1012 - 客戶端網絡訪問異常

Z1025 - 客戶端初始化接口返回網絡錯誤

Z1026 - 信息上傳網絡錯誤

Z1027 - 服務端認證接口網絡錯誤

Z1028 - 服務端接口并發請求超出限制

Z1040 - 刷臉模型下載失敗

Z1042 - OCR認證服務報錯

Z1043 - 刷臉認證服務報錯

Z5116 - 音頻文件上傳失敗

Z6002 - OCR圖片上傳網絡超時

2003

客戶端設備時間錯誤

2006

Z5128 - 刷臉失敗,認證未通過。可通過服務端查詢接口獲取認證未通過具體原因。

SDK的進階使用

混淆配置(重要)

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

說明

您可以根據實際使用的SDK功能,刪除多余的混淆配置。

# 必須要依賴到應用混淆中
-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打包體積要求或者三方依賴沖突等。

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

SDK UI自定義設置

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

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