安卓中使用JNI调用API,需要使用指针和结构Struct,如何做?
例如在安卓中调用海康SDK中的未公开的一些接口,需要使用JNI实现?
import com.sun.jna.Callback;
import com.sun.jna.Library;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.Union;
import com.sun.jna.ptr.ByteByReference;
import com.sun.jna.ptr.IntByReference;
public static class NET_DVR_PRESET_NAME2 extends Structure {
public int dwSize;
public short wPresetNum;
public byte[] byRes1 = new byte[2];
public byte[] byName = new byte[32];
public short wPanPos;
public short wTiltPos;
public short wZoomPos;
public byte[] byRes = new byte[58];
@Override
protected List<String> getFieldOrder() {
return Arrays.asList("dwSize", "wPresetNum", "byRes1", "byName", "wPanPos", "wTiltPos", "wZoomPos", "byRes");
}
}
boolean NET_DVR_SetDVRConfig(int lUserID, int dwCommand, int lChannel, Pointer lpInBuffer, int dwInBufferSize);
HCNetSDKByJNA.NET_DVR_PRESET_NAME2 preset_name = new HCNetSDKByJNA.NET_DVR_PRESET_NAME2();
preset_name.dwSize = preset_name.size();
preset_name.byName = name.getBytes("GBK");
preset_name.wPresetNum = (short) presetNo;
preset_name.write();
boolean b = jna.NET_DVR_SetDVRConfig(mLoginId, 3382, 1, preset_name.getPointer(), preset_name.size());
Log.i(Log.TAG, "设置海康预置位名: " + LastError() + " 结果: " + b);
首先要从自己定义个继承自Structure类的Class,凡是Struct中的数据对象,都必须用public关键字修饰。
然后定义的这个Class,必须继承写一个getFieldOrder()方法。
最后new 一个strucure类之后,可以给Structure成员赋值,赋值之后,在调用JNI接口之前,务必调用.write()方法才能写入内存块。调用的时候,用getPointer()方法获取内存指针块就可以了。
同理,如果是返回指针结构数据,需要使用.read()方法读取到内存中才可以。
别人对你好,就是为了和你上床,我不一样,我沙发客厅阳台厨房车里都行,哪里都可以。
【PIA专享收市简评0121】
今日市场回顾:沪深主要指数今日普涨,两市总成交量与前一交易日相比明显放大。行业方面,28个申万一级行业中有24个上涨,4个下跌,其中,表现居前的三个行业为有色金属(3.53%)、电气设备(2.99%)、综合(2.95%),表现落后的三个行业为休闲服务(-0.91%)、房地产(-0.89%)、通信(-0.28%)。两市A股有2213家上涨,1723家下跌,6家跌幅超过9%。截止收盘,沪指涨1.07%,深成指涨1.95%,创业板指涨2.46%,两市总成交金额10857亿元,与前一交易日相比明显放大。今日北向资金净流入56.78亿元(Wind数据)。
后市投顾观点:沪深主要指数今日放量普涨,沪指、深成指、创业板指数纷纷再创本轮行情新高,成交量重上万亿,市场活跃度好于昨日。经过近两周的板块轮动,今日主要指数再度放量向上突破,市场热点从少部分抱团板块向其他低估值板块扩散,但资金依然是主要挖掘各行业龙头,这种热点的渐进扩散有利于强势行情的延续,不过,年度业绩预告期内仍应警惕高位、高估值、高成交量的个股业绩低于预期的风险,建议从业绩与估值角度出发,挖掘低位低估值的行业龙头组合配置。



