1、so在工程中的放置位置
工程中src -> main -> jniLibs(自己新建的目录)下,然后根据自己的需求新建armeabi 和 armeabi-v7a等目录
image.png
2、查看so包名目录
有两种方法:
一是通过向你提供so库的人要,他开发一般都知道
二个自己打开去查看
用记事本打开
image.png
根据这个:ava_com_tecsun_jni_EPP_1API可以得知包名是:com.tecsun.jni
3、新建so库包名目录
image.png
4、新建应用层引用文件
image.png
5、编写引用文件EPP_API的代码
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接口文档之前自己有疑惑的点
image.png
image.png