一、非钉终端应用接入指南

⚠ 需要接入者具备基本的android开发者专业能力标准即可完成以下对接,以下文字输出涉及开发相关专业技术知识
该sdk需要配套魔点最新的MOS版本使用(关于设备版本可询问技术支持确认)

1.环境搭建

1.1 sdk集成(环境搭建)

第三方应用开发者拿到demo中内置的魔点开放sdk后,需要把aar文件置于自身android项目中的libs目录下,通过gradle加载这个开放sdk

⚠ sdk版本会持续更新 但sdk前缀格式固定,具体可参考最新版本demo,并采用demo内置的sdk文件进行集成

1.2 sdk引入

在项目中build.gradle的dependencies添加如下代码

implementation fileTree(include: [‘*.aar’], dir: ‘libs’)
⚠ name与aar的名称保持一致,这两个aar都需要放入同一层级

1.3 NDK依赖

build.gradle中添加

1.4 第三方依赖导入

build.gradle中添加


⚠ 基础SDK有使用到该三方类库网络请求组件/greendao数据库/collections库依赖,请开发者集成上述依赖到自身项目中

2.基础开放能力配置

2.1启动配置

调用开放sdk前需要在AndroidManifest.xml文件中配置启动界面的action,魔点应用会在每次启动后判断第三方应用是否存在,如果存在则会拉起第三方应用

  1. //示范例子(第三方应用首页)
  2. <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTask">
  3. <intent-filter>
  4. <action android:name="android.intent.action.MAIN" />
  5. <category android:name="android.intent.category.LAUNCHER" />
  6. </intent-filter>
  7. <intent-filter>
  8. <action android:name="com.moredian.open.start" />
  9. <category android:name="android.intent.category.DEFAULT" />
  10. </intent-filter>
  11. </activity>

上述代码标红的部分为第三方应用开发者需要关注的点,在自己开发的应用项目中的主页面(首页)添加的代码

2.2初始化(MdOpenServer)

调用魔点开放open sdk之前,需要通过MdOpenServer初始化sdk,需传入appId和appKey,可通过魔点开放平台->终端安卓应用->行业终端应用-创建项目(应用)获取

  1. private void initOpenServer() {
  2. MdOpenServer.getInstance().init(this, this);
  3. }

2.3数据监听

初始化成功后再去注册数据回流监听

  1. @Override
  2. public void onInitCallBack(boolean isSuccess, String message) {
  3. Log.d(TAG, "onInitCallBack: isSuccess=" + isSuccess + ",message=" + message);
  4. }

2.4 SDK注销

应用或者界面销毁,初始化回调失败,需要通过_unRegisterListener_注销历史的回流监听,否则下次再次注册,会返回多条相同的数据

  1. MdOpenServer.getInstance().unRegisterListener(callback);

2.5业务接口名词解释

OpenInitListener 初始化回调

  1. public interface OpenInitListener {
  2. void onInitCallBack(boolean isSuccess, String message);
  3. }
回调方法 参数 类型 描述
onInitCallBack isSuccess boolean sdk初始化是否成功
message string 返回__message

AuthCallBack 授权回调

  1. public interface AuthCallBack {
  2. void onAuthBack(boolean var1, String var2);
  3. }
回调方法 参数 类型 描述
onAuthBack isSuccess boolean 授权是否成功
message string 授权结果信息

OpenResultListener 数据回调

  1. public interface OpenResultListener {
  2. void resultCallBack(String action, String result);
  3. void onRecognizeWithCorpFace(String result, ParcelFileDescriptor pfd);
  4. }
回调方法 参数 类型 描述
resultCallBack action string 调用的开放方法
result string 返回结果
onRecognizeWithCorpFace result string 识别回调(json)
pfd ParcelFileDescriptor 识别人脸数据

sdk初始化

  1. public void init(@NonNull Context context, OpenInitListener openInitListener)
方法名 参数 类型 是否必填 描述
init context Context 上下文
openInitListener OpenInitListener 初始化回调

获取授权

  1. public void getAuth(String appId, String appKey, AuthCallBack authCallBack)
方法名 参数 类型 是否必填 描述
getAuth appId String 终端开放平台创建的appId
appKey String 终端开放平台创建的appKey
authCallBack AuthCallBack

sdk注销

应用销毁后应及时注销sdk,注销后,sdk会断开连接,同时释放持有的资源

  1. public abstract void release();

注册数据回流监听

  1. public abstract void registerListener(OpenResultListener listener);
方法名 参数 是否必填 描述
registerListener OpenResultListener 注册回调监听

注销数据回流监听

  1. public abstract void unRegisterListener(OpenResultListener listener);
方法名 参数 是否必填 描述
unRegisterListener OpenResultListener 注册回调监听

获取sdk版本号

  1. public abstract int getVersionCode();

获取sdk版本名

  1. public abstract String getVersionName();

获取设备信息

  1. public abstract String getDeviceBaseInfo();

返回结果:{“sn”:”090902190730KN0015”,”romVersion”:20124,”romVersionName”:”2.1.24.0”,”appVersion”:2158,”appVersionName”:”V1001.2.0.0-xtest”}

参数名 类型 描述
sn string 设备唯一标识
romVersion long rom版本号
romVersionName string rom版本名
appVersion int 魔点app版本号
appVersionName string 魔点app版本名

获取设备device host模式

  1. public abstract int getDeviceHostMode();

返回结果:
return 1 host模式 0 device模式 -1 获取失败
设备系统每次启动默认处于host模式
device模式:usb线连接adb时设备必须处于device模式
host模式:以太网正常工作时必须处于host模式

切换设备device host模式

  1. public abstract void switchDeviceHostMode(int model);
方法名 参数 类型 是否必填 描述
switchDeviceHostMode model int 设置模式
(1 host模式 0 device模式)

每次切换模式后,因为切换存在延迟,若需要通过getDeviceHostMode获取当前模式,需要延迟1秒以上,否则获取到的状态可能有误

开启网络adb

  1. public abstract void enableAdb(boolean enable);
方法名 参数 类型 是否必填 描述
enableAdb enable boolean true开启 false 关闭

开启设备调试输出

  1. public abstract void enableLogcat(boolean enable);
方法名 参数 类型 是否必填 描述
enableLogcat enable boolean true开启 false 关闭

设置刷脸模式

  1. public abstract void setRecognizeMode(int mode);
方法名 参数 类型 是否必填 描述
setRecognizeMode model int 1多人识别 2单人识别

调用刷脸

  1. public abstract void detectFace(int timeOut);
方法名 参数 类型 是否必填 描述
detectFace timeOut int 跳转到刷脸页后,超时自动返回三方应用,默认60秒

结果通过_IOpenListener回调返回,详细可参考demo

回调action:detect_face

识别成功json:
{“data”:{“personId”:”10021”,”personName”:”xxx”,”userType”:1},”message”:”识别成功”,”result”:”200”}

识别失败json:
{“message”:”识别失败,陌生人”,”result”:”400”}

刷卡回调

{“data”:”0123456789”,”message”:”刷卡成功”,”result”:”200”}

调用扫码

  1. public void scanQrCode(int timeOut)
方法名 参数 类型 是否必填 描述
scanQrCode timeOut(秒) int 跳转到扫码页后,超时自动返回三方应用,默认60秒

回调action:scan\qr\code

成功json:

{“data”:”www.moredian.com”,”result”:”200”,”message”:”扫码成功”}

失败json:

{“message”:”设备不支持扫码”,”result”:”400”}

通过卡号获取人员信息

  1. public abstract void getUserInfoByCard(@NonNull String cardNo);
方法名 参数 类型 是否必填 描述
getUserInfoByCard cardNo string 通过卡号获取用户信息,需要提前在魔点微应用绑定人员和卡号关系

回调action:get\user\info

成功json:

{“data”:{“cardNum”:”2037175851”,”dingUserId”:”1000”,”id”:32909,”name”:”xxx”,”status”:1},”message”:”query card info success”,”result”:”200”}

失败json:

{“message”:”query card info fail”,”result”:”400”}

重启设备

  1. public abstract void reboot();

开门

  1. public abstract void openDoor(boolean isUserDefaultTime, long openDoorTime);
方法名 参数 类型 是否必填 描述
openDoor isUserDefaultTime boolean 是否使用开放服务默认开门时间
openDoorTime long 毫秒,自定义开门时间,isUserDefaultTime false生效

设备音量配置

设置了不在0-100范围内的数据,sdk会抛出异常,需要手动捕获

  1. public abstract void controlVolume(int volume);
方法名 参数 类型 是否必填 描述
controlVolume volume int 配置设备整体音量大小0~100

返回第三方应用

  1. public abstract void back();

设备led补光灯亮度配置

设置了不在0-255范围内的数据,sdk会抛出异常,需要手动捕获

  1. public void controlLed(int value)
方法名 参数 类型 是否必填 描述
controlLed value int 配置设备整体led亮度大小0~255

设备屏幕亮度配置

设置了不在0-255范围内的数据,sdk会抛出异常,需要手动捕获

  1. public void controlScreenLight(int value)
方法名 参数 类型 是否必填 描述
controlScreenLight value int 配置设备整体屏幕亮度0~255

无线网络配置

  1. /**
  2. * 无线网络配置
  3. * @param timeOut 无线网络配置超时时间
  4. */
  5. @Override
  6. public void startWifiSet(int timeOut)
方法名 参数 类型 是否必填 描述
startWifiSet timeOut(秒) int 跳转到无线网配置界面,超时自动返回三方应用,默认60秒

有线网络配置

  1. /**
  2. * 有线网络配置
  3. * @param timeOut 有线网络配置超时时间
  4. */
  5. @Override
  6. public void startEtherSet(int timeOut)
方法名 参数 类型 是否必填 描述
startEtherSet timeOut(秒) int 跳转到有线网配置界面,超时自动返回三方应用,默认60秒

回调action: start_ethernet
成功直接跳转
失败json:
{“message”:”网线未插入”,”result”:”400”}

3.问题排查及日志抓取

3.1 日志采集/提供

sdk内置异常日志采集分析能力,如您集成sdk后 设备在调试/日常运行过程中遇到相关问题,可提供相关日志并联系我们开发进行分析答疑解惑。sdk日志占比存储空间极小,且内置自动清除能力,无需担心sdk日志过大导致设备载荷异常

日志目录在设备sd卡外部存储目录下面,请不要随意清除该部分日志
/sdcard/Android/data/XXXXX/files/logs/MoreDian

XXXXX为您开发的应用的具体包名下

3.2 sdk database获取(如无则无需提供)

/data/data/您的应用包名/databases/faceJurisdiction.db