1、so在工程中的放置位置

工程中src -> main -> jniLibs(自己新建的目录)下,然后根据自己的需求新建armeabi 和 armeabi-v7a等目录

ac2a32c64231?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

2、查看so包名目录

有两种方法:

一是通过向你提供so库的人要,他开发一般都知道

二个自己打开去查看

用记事本打开

ac2a32c64231?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

根据这个:ava_com_tecsun_jni_EPP_1API可以得知包名是:com.tecsun.jni

3、新建so库包名目录

ac2a32c64231?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

4、新建应用层引用文件

ac2a32c64231?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

5、编写引用文件EPP_API的代码

ac2a32c64231?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

6、封装一层工具类,便于以后维护

public class NewPinPadUtils {

private static final String TAG = NewPinPadUtils.class.getSimpleName();

public static final int TIME_OUT_60 = 60 ;

public static final int TIME_OUT_120 = 120 ;

// private EPP_API eppApi;

public NewPinPadUtils( )

{

// EPP_API = new EPP_API( );

}

/**

* 检测当前德生宝连接的是哪一款密码键盘

* @return

*/

public boolean checkPinPad(){

try {

// 返回值 0表示成功, 其他失败

int result = EPP_API.iCheckPinPad();

Log.d(TAG,"result============"+result);

if (result == 0){

return true;

}else {

return false;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

/**

* 获取明文输入

* @param timeOut

* @return

*/

public String getPinProclaimed(int timeOut){

Log.d(TAG,"getPinProclaimed============================");

String pPin = "";

byte[] bytes = new byte[6];

int result = EPP_API.iGetPinProclaimed(timeOut,bytes);

Log.d(TAG,"getPinProclaimed============result================="+result);

if (result > 0){

pPin = new String(bytes);

return pPin;

}else if (result == 0){

return "";

}else {

return "";

}

}

/**

* 获得密码键盘输入的密码(新版一体化的实现方式)

* 固定超时时间

* @param listener 监听

*/

public void getInputPwd(final int timeout, final PinPadBackListener listener) {

Log.d(TAG,"getInputPwd============================");

ThreadPoolUtil.runTaskInThread(new Runnable() {

@Override

public void run() {

listener.pinPadStrBack(getPinProclaimed(timeout));

}

});

}

/**

* 获得密码键盘输入的密码(新版一体化的实现方式)

* 可以设置超时时间

* @param listener 监听

*/

public void getInputPwd(final PinPadBackListener listener) {

Log.d(TAG,"getInputPwd============================");

ThreadPoolUtil.runTaskInThread(new Runnable() {

@Override

public void run() {

listener.pinPadStrBack(getPinProclaimed(TIME_OUT_60));

}

});

}

/**

* 停止输入,也就是关闭密码键盘

* @return

*/

public boolean cancel(){

int iStopInputKey = EPP_API.iStopInputKey();

Log.d(TAG,"iStopInputKey================="+iStopInputKey);

if (iStopInputKey == 0){

return true;

}else {

return false;

}

}

}

7、对so接口文档之前自己有疑惑的点

ac2a32c64231?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

ac2a32c64231?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐