集成指南
1.SDK 目录结构
2.准备工作
2.1 获取SDK Demo压缩包
请联系您的Linkface专属商务获取SDK Demo压缩包;
商务邮箱:market@linkface.cn
2.2 获取APP_KEY、 APP_SECRET
- 访问Linkface官网https://www.linkface.cn ,点击右上角“管理中心”;
- 按照流程提示完成账号的注册及登录,添加应用;
- 在应用管理界面,可以看到您应用的API ID、API SECRET,即SDK中需要使用的APP_KEY,、APP_SECRET。
3.Demo示例
使用Android Studio打开SDK压缩包中银行卡识别Demo或身份证识别Demo项目
找到项目中MyApplication.java文件。 需要注释掉“注意”的一行文字,并填入2.2 获取APP_KEY, APP_SECRET得到的APP_KEY值。
而APP_SECRET的值,需要在 LFMainActivity.java文件中 找到方法getAppSecret
private String getAppSecret() { return LFSpUtils.getAppSecret(getApplicationContext(), ""); }
将APP_SECRET填入 default即可。
完成以上步骤,即可运行体验Demo功能了。
4. 集成指南
如果集成过程中碰到错误或问题,请按如下步骤尝试解决:
- 先查看Android Studio打出的log信息尝试解决;
- 参考《常见问题》部分解决;
- 利用搜索引擎搜索遇到的问题,尝试解决;
- 联系Linkface售后,协助解决。
4.1 将SDK集成到工程
4.1.1 集成方式一:将UI层(LFOCRUILib)作为一个工程依赖(Demo工程使用此方式)
假如您开发的工程名为MyOCRProject,用Android Studio打开该工程。目录结构如下:
然后将LFOCRUILib整个工程拷贝到MyOCRProject工程的同级目录下,如图:
在工程MyOCRProject的根目录下的settings.gradle文件中加入
includeFlat 'LFOCRUILib' include ':LFOCRUILib:LFCard'
最终settings.gradle如图:
添加依赖
在工程MyOCRProject的app/builde.gradle下添加
repositories { flatDir { dirs '../../LFOCRUILib/LFCard/libs' } }
在dependencies{}中添加
implementation project(path: ':LFOCRUILib:LFCard')
最终,build.gradle中有
repositories { flatDir { dirs '../../LFOCRUILib/LFCard/libs' } } dependencies { implementation project(path: ':LFOCRUILib:LFCard') }
在项目build.gradle中添加abiFilters为armeabi-v7a,代码如下:
defaultConfig { ... ndk { abiFilters "armeabi-v7a" } }
添加权限。在 AndroidManifest.xml中增加如下权限,代码如下:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
权限说明:
CAMERA:调用相机进行扫描或拍照 VIBRATE:调用手机震动器再识别成功时发出震动 WRITE_EXTERNAL_STORAGE:拍摄照片时的临时存储 INTERNET:访问网络权限,用于请求服务端识别结果 ACCESS_NETWORK_STATE:获取网络状态
动态申请系统权限。Android6.0之后需要动态申请权限。在相应权限使用之前,请添加相应权限的申请。此处给出CAMERA权限的判断和动态申请示例:
/** * 判断是否有权限,没有就去请求 * * @param permissionRequestCode * @return */ private boolean isHavePermission(int permissionRequestCode) { boolean isHave = true; if (isMarshmallow()) { if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { // Permission has not been granted and must be // requested. if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) { // Provide an additional rationale to the user if // the permission was not granted // and the user would benefit from additional // context for the use of the permission. } // Request the permission. The result will be received // in onRequestPermissionResult() isHave = false; requestPermissions( new String[]{Manifest.permission.CAMERA}, permissionRequestCode); } else { // Permission is already available, start camera preview isHave = true; } } else { isHave = true; } return isHave; } private static boolean isMarshmallow() { return Build.VERSION.SDK_INT >= 23; } /** * 请求权限返回 * * @param requestCode * @param permissions * @param grantResults */ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //申请权限成功,跳到扫描界面 toScanActivity(requestCode); } else { showToast(LFConstants.ERROR_CAMERA_REFUSE); } }
其他权限原理相同,可自行修改添加。详细可参考Demo代码。
初始化SDK。在APP启动时,进行SDK的初始化。如在MyApplication的onCreate方法中,示例代码如下:
public class MyApplication extends Application { #注意:请替换appId及appSecret private static final String LF_APP_ID = "LF_APP_ID"; private static final String LF_APP_SECRET = "LF_APP_SECRET"; public void onCreate() { super.onCreate(); //初始化OCR SDK,注意:context必须传application全局context LFCardOcr.init(getApplicationContext(), LF_APP_ID, LF_APP_SECRET); } }
此时可以跳转扫描界面。可参考Demo中LFMainActivity.java中的代码。跳转方式,以及数据获取方式参考身份证接口调用流程和银行卡接口调用流程。
4.1.2 集成方式二:将UI层(module:LFCard)作为一个module导入
- 假如您开发的工程名为MyOCRProject,Android Studio打开该工程。然后点击File->New->Import Module,选择压缩包根录下LFOCRUILib工程中的LFCard模块,点击Finish完成导入。
添加依赖,在MyOCRProject的app/builde.gradle下添加
repositories { flatDir { dirs '../LFCard/libs' } }
在dependencies{}中添加
implementation project(':LFCard')
最终,build.gradle中有
repositories {
flatDir {
dirs '../LFCard/libs'
}
}
dependencies {
implementation project(':LFCard')
}
后续步骤与第一种集成步骤的4-8相同。点此跳转。
4.1.3 集成方式三: 将aar包拆解集成(不推荐)
1.将lfocrapi.aar后缀重命名为.zip文件,解压。目录结构如图
2.将解压目录中assets文件夹下的模型文件ocr.model拷贝到 app/src/main/assets 目录中。
3.将解压目录中jni文件夹下的so文件夹拷贝到 app/src/main/jniLibs/armeabi-v7a 目录中。
4.将 classes.jar 引入到工程中。如在Android Studio中,将jar文件拷贝 app/libs 目录下,在builde.gradle添加依赖。注:可重命名该文件。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
后续步骤与第一种集成步骤的4-8相同。点此跳转。
开发者可根据OCR SDK提供的识别功能自行开发UI等相关功能。可参考LFOCRUILib下的module:LFCard。
4.2 查看sdk版本号
可以通过以下api获取sdk版本号:
String LF_OCR_SDK_VERSION = LFCardOcr.SDK_VERSION;
4.3 解决代码混淆
在proguard文件中加入下面的代码解决:
-keep class com.linkface.** { *; }