本工程提供了对 dhnetsdk 和 dhconfigsdk 动态库的部分封装以及接口调用的示例代码。 封装基于开源框架 java-native-access (jna-5.4.0)。 其中jna版本为
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.4.0</version>
</dependency>
src下分为三个包:demo、lib、module
原有libs文件夹替换为resources文件夹,
新版调整将libs文件夹修改为了resources文件夹, 解决在linux,mac下需要配置环境变量及打成jar包后出现的找不到动态库的问题。因此在java中只需要加载dhnetsdk和dhconfigsdk两个动态库即可。
如需使用旧版加载方式,可修改NetSDKLib.java为
NetSDKLib NETSDK_INSTANCE=Native.load(Utils.getLoadLibrary("dhnetsdk"),NetSDKLib.class);
NetSDKLib CONFIG_INSTANCE=Native.load(Utils.getLoadLibrary("dhconfigsdk"),NetSDKLib.class);
并修改Utils的getLoadLibrary方法:
```java
//修改 loadLibrary = "./libs/win64/" 为 loadLibrary="./resources/win64/"
// 获取加载库
public static String getLoadLibrary(String library){
if(isChecking()){
return null;
}
String loadLibrary="";
String osPrefix=getOsPrefix();
if(osPrefix.toLowerCase().startsWith("win32-x86")){
loadLibrary="./resources/win32/";
}else if(osPrefix.toLowerCase().startsWith("win32-amd64")){
loadLibrary="./resources/win64/";
}else if(osPrefix.toLowerCase().startsWith("linux-i386")){
loadLibrary="";
}else if(osPrefix.toLowerCase().startsWith("linux-amd64")){
loadLibrary="";
}else if(osPrefix.toLowerCase().startsWith("mac-64")){
loadLibrary="";
}
System.out.printf("加载库[%s]\n",loadLibrary+library);
return loadLibrary+library;
}
新版本中添加了加载方式的封装,可直接使用
NetSDKLib NETSDK_INSTANCE=Native.load(LibraryLoad.getLoadLibrary("dhnetsdk"),NetSDKLib.class);
NetSDKLib CONFIG_INSTANCE=Native.load(LibraryLoad.getLoadLibrary("dhconfigsdk"),NetSDKLib.class);
加载封装类为LibraryLoad.java,默认从工程的resources中读取操作系统对应的文件夹内的所有动态库,即
1. windows 64位系统-win64
2. windows 32位系统-win32
3. linux 64位系统-linux64
4. linux32-linux32
5. mac os 64位系统-mac64
然后写入到外部文件夹,默认为java环境变量`java.io.tmp`对应的目录(windows一般为`C:\Users\{用户名}\AppData\Local\Temp`,linux为`/tmp`)
,如果需要修改写入外部的文件夹,请在工程启动时设置`LibraryLoad.setExtractPath(extractPath)`
如果有转码需求,需要加载转码库:
**Linux下可设置环境变量来启动项目**
export LD_LIBRARY_PATH=/path-to-dynamic-path/
java -jar your-project.jar
```
sdk集成有两种方式:源码集成和jar包集成
1. 源码集成
复制resources下的动态库文件夹,及jna.jar和gson-2.6.2.jar到项目的resources文件夹下,并将com.netsdk.lib复制到项目中。module为二次封装接口,可按需复制
2. jar包方式集成
1. 新建一个maven工程,添加jna依赖

2. 复制resources文件夹中所需要的动态库和com.netsdk.lib和com.netsdk.module到工程中

3. 编写测试demo
java public class App { public static void main(String[] args) { BaseModule baseModule = new BaseModule(); // sdk初始化,设置断线回调和断线重连并开启sdk日志 baseModule.init( DefaultDisconnectCallback.getINSTANCE(), DefaultHaveReconnectCallBack.getINSTANCE(), true); // 登录 DeviceInfo info = baseModule.login("172.23.12.231", 37777, "admin", "admin1234"); // 登录成功 if (info.getLoginHandler() != 0) { System.out.println("login success."); // 登出 if (!baseModule.logout(info.getLoginHandler())) { // 登出失败,打印错误信息 System.out.println(ENUMERROR.getErrorMessage()); } else { System.out.println("logout success."); } } // 程序结束,释放sdk资源 baseModule.clean(); }
4. 运行成功,即可打包jar,mvn install
将打包后的jar包集成到项目中即可。