3 Android SDK Mini Face使用说明

  Mini face版本是Pro的精简版本,其剥离了Pro版本中的接口,仅仅保留活体检测功能。Mini face能完成的功能,都可以在Pro版本中找到相应实现,本文档中,Android部分都以Android Studio做集成说明,以下章节开始详细描述Mini face的使用说明。

3.1 导入开发包

  解压 PayEgisAuthenticationSDK.zip,解压后得到三个文件。如下图所示:

名称 具体内容 说明 备注
*.aar pgsface-release.aar SDK主体
jniLibs armeabi-v7a 等so包 So库 我们建议使用v7a架构的so库,如果需要其它架构的so,将v7下的库拷贝至其它arm架构下即可(注:arm64-v8a除外,我们的so库仅支持32位环境运行,如果您的项目下包含arm64-v8a文件夹将导致搭载64位处理器的设备强制加载64位库文件报错)
license idl-license.face-android 授权文件 授权文件和应用包名一一绑定,不可在多个应用下使用

  将解压出的pgsface-release.aar拷贝到项目的libs中

  在工程的gradle文件中添加对pgsface-release.aar的依赖,参见下图:

  在项目工程中添加license授权文件,license文件需要拷贝至项目assets文件夹中.

[danger] 注意

license文件是和应用包名绑定的,因此不同应用使用远程实名认证SDK,需要申请相应的license。

  在项目工程中添加对应的so库文件,我们建议使用v7a架构的so库,如果需要其它架构的so,将v7下的库拷贝至其它arm架构下即可(注:arm64-v8a除外,我们的so库仅支持32位环境运行,如果您的项目下包含arm64-v8a文件夹将导致搭载64位处理器的设备强制加载64位库文件报错)。

3.2 活体检测

  Mini face中细化封装了活体检测接口,用以获取用户实景头像,活体检测过程中需要用户做随机n组动作或者自定义n组动作(1<=n<=6),最终取得一张用户实景头像。具体使用方法分为以下几步:

step1 实例化PayegisAuthFaceSDK类。。对活体检测SDK的配置需要做如下设置

sdk = new PayegisAuthFaceSDK(this, Const.AppId, Const.AppKey); Config.appName = "payegispro-face-android";

特别注意的是:Config.appName = "payegispro-face-android";

  调用活体检查需要给APP授权,因此需要配置SDK的Config.appName参数,具体命名规则:

yourAPPName +“-face-android”,appName为申请账户时,提交给远程实名管理平台的应用名称。

  活体检测界面提供如下界面样式设定:

  颜色的设置方法参数为16进制带alpha通道的色值,图片的设置方法参数为图片的资源id。

参考代码如下:

Config.setBackgroundColor(0xffffffff);//背景色 Config.setTipTextColor(0xff217be3);//提示语颜色 Config.setProgressColor(0xff217be3);//倒计时进度条颜色 Config.setFaceCircleColor(0xff217be3);//人脸采集框颜色 Config.setCountNumColor(0xff000000);//倒计时数字颜色 Config.setClosePicId(R.drawable.ic_close_ext);//返回按钮 Config.setSuccessPicId(R.drawable.ic_success);//成功按钮 Config.setWarningPicId(R.drawable.ic_warning);//警告按钮 Config.setSoundOffPicId(R.drawable.ic_disable_sound_ext);//关闭提示音按钮 Config.setSoundOnPicId(R.drawable.ic_enable_sound_ext);//打开提示音按钮

[danger] 注意

请在调用活体服务之前进行活体的UI配置(建议在初始化SDK后立即配置),否则将不会生效。

step2 获取相应Intent,并调用扫描页。具体方法名:

public Intent createRandomLivenessIntent(Context context, int randomNumber)

  调用方法createRandomLivenessIntent (),获取相应Intent。

//获取活体检测 Intent,以随机的方式 Intent it = sdk.createRandomLivenessIntent(this, 2);

  createRandomLivenessIntent()方法第二个参数指定了活体检测随机动作个数,互不重复,SDK一共提供了6种动作。这些动作被定义在FaceLivenessTypeHelper类常量中。

常量名 说明
EYE 眨眨眼
MOUTH 张嘴
HEAD_LEFT 左摇头
HEAD_RIGHT 右摇头
HEAD_UP 抬头
HEAD_DOWN 点头

  如果您期望自定义动作,可以用以下函数完成定义:

public Intent createLivenessIntent(Context context, int[] liveness)

int[] liveness为动作数组,其动作类型必须符合FaceLivenessTypeHelper类中列出的常量,请参见上表。代码示例如下:

//自定义动作顺序 int[] liveness = {FaceLivenessTypeHelper.HEAD_DOWN,FaceLivenessTypeHelper.EYE}; Intent it = sdk.createLivenessIntent(this, liveness);

step3 调用扫描页,并处理结果获取图像。

  以startActivityForResult()方式获取,相应的requestCode为:PayegisAuthFaceSDK.KEY_TO_DETECT_REQUEST_CODE,对应的在activity回调中获取相应图片,参考代码:

//调用扫描页 if (it != null) { startActivityForResult(it, PayegisAuthFaceSDK.KEY_TO_DETECT_REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (PayegisAuthFaceSDK.KEY_TO_DETECT_REQUEST_CODE == requestCode && resultCode == PayegisAuthFaceSDK.LIVE_RESULT_SUCCESS_CODE) { new Thread(new Runnable() { @Override public void run() { final Bitmap map = ImgUtil.bytesToBimap(PayegisAuthFaceSDK.bestFaceData); runOnUiThread(new Runnable() { @Override public void run() { faceImg.setImageBitmap(map); } }); } }).start(); } }

step4 从本地获取相应图片。

  在对应的requestCode下获取图像,在onActivityResult()回调中利用PayegisAuthFaceSDK.bestFaceData KEY中获取图像字节数组,获取到真实图像文件。

3.3 权限说明

  远程实名认证Mini face需要获取系统相关权限,在使用SDK时,需要动态获取以下3个权限,否则SDK将无法正常使用。

名称 描述
READ_PHONE_STATE 读取手机状态
WRITE_EXTERNAL_STORAGE 读写磁盘
CAMERA 使用相机

授权参考代码如下:

/** * 申请权限 */ private void initPermission() { ArrayList<String> perList = new ArrayList<>(); if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { perList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { perList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { perList.add(Manifest.permission.CAMERA); } if (perList.size() > 0) { String[] perArr = new String[perList.size()]; perList.toArray(perArr); ActivityCompat.requestPermissions(this, perArr, 100); } }

3.4 混淆说明

  远程实名认证SDK已经经过混淆,所以在打包时添加以下忽略:

-dontwarn com.** -dontwarn cn.** -dontwarn org.** -dontwarn android.** -dontwarn android.support.** -dontwarn org.apache.** #face -keep public class com.payegis.idl.** { *;} -keep public class com.payegis.face.** { *;} -keep public class com.baidu.**{ *;}

results matching ""

    No results matching ""

    results matching ""

      No results matching ""