上一次实现了调用摄像头接口,并实现了每间隔五分钟执行一次;用的是while语句加上Thread.sleep(),虽然能实现定时调用的功能,但是sleep会长时间占用内存,浪费资源;后来经朋友提醒,改用了Quartz指针,去实现定时任务。
参考了相关资料,加上本地的实际情况,改进后的代码如下:
首先是引入的架包:包括log4j-1.2.16.jar、quartz-2.2.1.jar、slf4j-api-1.6.6.jar、slf4j-log4j12-1.6.6.jar 4个架包
其次先新建一个实现Job接口的类,加上本地的代码,实现了整合,如下所示:
package ClientDemo;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import ClientDemo.HCNetSDK.NET_DVR_DEVICEINFO_V30;
import ClientDemo.HCNetSDK.NET_DVR_IPPARACFG;
import ClientDemo.HCNetSDK.NET_DVR_JPEGPARA;
import ClientDemo.HCNetSDK.NET_DVR_WORKSTATE_V30;
import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
public class TestQuartz implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
TestQuartz tqQuartz = new TestQuartz();
try {
tqQuartz.getImages();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getImages() throws IOException{
final TestQuartz app = new TestQuartz();
final MonitorCameraInfo cameraInfo = new MonitorCameraInfo();
camer