package com.netsdk.module; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.Utils; import com.netsdk.lib.enumeration.NET_EM_2DCODE_TYPE; import com.netsdk.lib.structure.NET_IN_SET_2DCODE; import com.netsdk.lib.structure.NET_OUT_SET_2DCODE; import com.sun.jna.Memory; import com.sun.jna.Pointer; import java.nio.charset.Charset; /** * @author 47081 * @version 1.0 * @description 二维码信息模块, 二次封装类 * @date 2020/9/14 */ public class QRCodeModule { private final NetSDKLib netsdkApi; public QRCodeModule(NetSDKLib netsdkApi) { this.netsdkApi = netsdkApi; } public QRCodeModule() { this(NetSDKLib.NETSDK_INSTANCE); } /** * 下发二维码到设备 * * @param loginHandler 登录句柄 * @param qrCodeType 二维码类型 * @param qrCode 二维码信息 * @return 是否下发成功 */ public boolean sendQrCode(long loginHandler, NET_EM_2DCODE_TYPE qrCodeType, String qrCode) { NET_IN_SET_2DCODE code = new NET_IN_SET_2DCODE(); code.em2DCodeType = qrCodeType.getType(); System.arraycopy(qrCode.getBytes(Charset.forName(Utils.getPlatformEncode())), 0, code.sz2DCode, 0, qrCode.getBytes(Charset.forName(Utils.getPlatformEncode())).length); Pointer pointer = new Memory(code.size()); ToolKits.SetStructDataToPointer(code, pointer, 0); return netsdkApi.CLIENT_Set2DCode(new NetSDKLib.LLong(loginHandler), pointer, new NET_OUT_SET_2DCODE().getPointer(), 5000); } }