aijinhui
2023-10-17 49207386ea4a3d663628347eef443af9c7cc7f39
ard-work/src/main/java/com/ruoyi/device/dhsdk/module/CapturePictureModule.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,106 @@
package com.ruoyi.device.dhsdk.module;
import com.ruoyi.device.dhsdk.lib.NetSDKLib;
import com.ruoyi.device.dhsdk.lib.ToolKits;
import com.sun.jna.ptr.IntByReference;
/**
 * \if ENGLISH_LANG
 * Capture Picture Interface
 * contains:local、remote、timer and stop capture picture
 * \else
 * æŠ“图接口实现
 * åŒ…含: æœ¬åœ°ã€è¿œç¨‹ã€å®šæ—¶å’Œåœæ­¢æŠ“图
 * \endif
 */
public class CapturePictureModule {
   public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
   /**
    * \if ENGLISH_LANG
    * Local Capture Picture
    * \else
    * æœ¬åœ°æŠ“图
    * \endif
    */
   public static boolean localCapturePicture(NetSDKLib.LLong hPlayHandle, String picFileName) {
      if (!netsdk.CLIENT_CapturePictureEx(hPlayHandle, picFileName, NetSDKLib.NET_CAPTURE_FORMATS.NET_CAPTURE_JPEG)) {
         System.err.printf("CLIENT_CapturePicture Failed!" + ToolKits.getErrorCodePrint());
         return false;
      } else {
         System.out.println("CLIENT_CapturePicture success");
      }
      return true;
   }
   /**
    * \if ENGLISH_LANG
    * Remote Capture Picture
    * \else
    * è¿œç¨‹æŠ“图
    * \endif
    */
   public static boolean remoteCapturePicture(NetSDKLib.LLong m_hLoginHandle,int chn) {
      return snapPicture(m_hLoginHandle,chn, 0, 0);
   }
   /**
    * \if ENGLISH_LANG
    * Timer Capture Picture
    * \else
    * å®šæ—¶æŠ“图
    * \endif
    */
   public static boolean timerCapturePicture(NetSDKLib.LLong m_hLoginHandle,int chn) {
      return snapPicture(m_hLoginHandle,chn, 1, 2);
   }
   /**
    * \if ENGLISH_LANG
    * Stop Timer Capture Picture
    * \else
    * åœæ­¢å®šæ—¶æŠ“图
    * \endif
    */
   public static boolean stopCapturePicture(NetSDKLib.LLong m_hLoginHandle,int chn) {
      return snapPicture(m_hLoginHandle,chn, -1, 0);
   }
   /**
    * \if ENGLISH_LANG
    * Capture Picture (except local capture picture, others all call this interface)
    * \else
    * æŠ“图 (除本地抓图外, å…¶ä»–全部调用此接口)
    * \endif
    */
   private static boolean snapPicture(NetSDKLib.LLong m_hLoginHandle,int chn, int mode, int interval) {
      // send caputre picture command to device
      NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS();
      stuSnapParams.Channel = chn;           // channel
      stuSnapParams.mode = mode;             // capture picture mode
      stuSnapParams.Quality = 3;            // picture quality
      stuSnapParams.InterSnap = interval;    // timer capture picture time interval
      stuSnapParams.CmdSerial = 0;           // request serial
      IntByReference reserved = new IntByReference(0);
      if (!LoginModule.netsdk.CLIENT_SnapPictureEx(m_hLoginHandle, stuSnapParams, reserved)) {
         System.err.printf("CLIENT_SnapPictureEx Failed!" + ToolKits.getErrorCodePrint());
         return false;
      } else {
         System.out.println("CLIENT_SnapPictureEx success");
      }
      return true;
   }
   /**
    * \if ENGLISH_LANG
    * Set Capture Picture Callback
    * \else
    * è®¾ç½®æŠ“图回调函数
    * \endif
    */
   public static void setSnapRevCallBack(NetSDKLib.fSnapRev cbSnapReceive){
      LoginModule.netsdk.CLIENT_SetSnapRevCallBack(cbSnapReceive, null);
   }
}