| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.dao.domain; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * æ°è¯ºç¦èç®æä»¶è¡¨ |
| | | * @TableName new_nova_file |
| | | */ |
| | | @TableName(value ="new_nova_file") |
| | | @Data |
| | | public class NewNovaFile implements Serializable { |
| | | /** |
| | | * |
| | | */ |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private Long userId; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private String userName; |
| | | |
| | | /** |
| | | * æä»¶åç§° |
| | | */ |
| | | private String name; |
| | | |
| | | /** |
| | | * å¤§å° |
| | | */ |
| | | private String size; |
| | | |
| | | /** |
| | | * æä»¶ç±»å |
| | | */ |
| | | private String fileType; |
| | | |
| | | /** |
| | | * 龿¥ |
| | | */ |
| | | private String fileUrl; |
| | | |
| | | /** |
| | | * ç»å¯¹è·¯å¾ |
| | | */ |
| | | private String realUrl; |
| | | |
| | | /** |
| | | * 缩ç¥å¾ |
| | | */ |
| | | private String screenShot; |
| | | |
| | | /** |
| | | * md5 |
| | | */ |
| | | private String md5; |
| | | |
| | | /** |
| | | * ä¸ä¼ æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * è§é¢æ¶é¿ |
| | | */ |
| | | private Integer duration; |
| | | |
| | | @TableField(exist = false) |
| | | private static final long serialVersionUID = 1L; |
| | | } |
| | |
| | | C3_REFUND("å
çµæ¡©é款"), |
| | | CHARGE_UPDATE("ç¼è¾è´¹ç"), |
| | | ORDER_LIST("订åå表"), |
| | | CHARGE_LIST("è·åè´¹ç"); |
| | | CHARGE_LIST("è·åè´¹ç"), |
| | | LED_NEW_FILE_UPLOAD("æ°è¯ºç¦æä»¶ä¸ä¼ "), |
| | | LED_NEW_FILE_LIST("æ°è¯ºç¦æä»¶å表"), |
| | | LED_NEW_FILE_ADD("æ°è¯ºç¦æä»¶æ°å¢"), |
| | | LED_NEW_FILE_DEL("æ°è¯ºç¦æä»¶å é¤"), |
| | | ; |
| | | |
| | | |
| | | private final String code; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.dao.mapper; |
| | | |
| | | import com.sandu.ximon.dao.domain.NewNovaFile; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | /** |
| | | * @author Administrator |
| | | * @description é对表ãnew_nova_file(æ°è¯ºç¦èç®æä»¶è¡¨)ãçæ°æ®åºæä½Mapper |
| | | * @createDate 2022-11-08 17:12:07 |
| | | * @Entity com.sandu.ximon.dao.domain.NewNovaFile |
| | | */ |
| | | @Mapper |
| | | public interface NewNovaFileMapper extends BaseMapper<NewNovaFile> { |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.sandu.ximon.dao.mapper.NewNovaFileMapper"> |
| | | |
| | | <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.NewNovaFile"> |
| | | <id property="id" column="id" jdbcType="BIGINT"/> |
| | | <result property="userId" column="user_id" jdbcType="BIGINT"/> |
| | | <result property="userName" column="user_name" jdbcType="VARCHAR"/> |
| | | <result property="name" column="name" jdbcType="VARCHAR"/> |
| | | <result property="size" column="size" jdbcType="VARCHAR"/> |
| | | <result property="fileType" column="file_type" jdbcType="VARCHAR"/> |
| | | <result property="fileUrl" column="file_url" jdbcType="VARCHAR"/> |
| | | <result property="realUrl" column="real_url" jdbcType="VARCHAR"/> |
| | | <result property="screenShot" column="screen_shot" jdbcType="VARCHAR"/> |
| | | <result property="md5" column="md5" jdbcType="VARCHAR"/> |
| | | <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> |
| | | <result property="duration" column="duration" jdbcType="INTEGER"/> |
| | | </resultMap> |
| | | |
| | | <sql id="Base_Column_List"> |
| | | id,user_id,user_name, |
| | | name,size,file_type, |
| | | file_url,real_url,screen_shot, |
| | | md5,create_time,duration |
| | | </sql> |
| | | </mapper> |
| | |
| | | <groupId>org.aspectj</groupId> |
| | | <artifactId>aspectjweaver</artifactId> |
| | | </dependency> |
| | | <!--è·åè§é¢æ¶é¿--> |
| | | <dependency> |
| | | <groupId>ws.schild</groupId> |
| | | <artifactId>jave-core</artifactId> |
| | | <version>3.1.1</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>ws.schild</groupId> |
| | | <artifactId>jave-nativebin-linux64</artifactId> |
| | | <version>3.1.1</version> |
| | | </dependency> |
| | | |
| | | <!-- mp3æä»¶æ¯æ(å¦è¯é³æ¶é¿)--> |
| | | <dependency> |
| | | <groupId>org</groupId> |
| | | <artifactId>jaudiotagger</artifactId> |
| | | <version>2.0.1</version> |
| | | </dependency> |
| | | |
| | | <!-- mp4æä»¶æ¯æ(å¦è¯é³æ¶é¿)--> |
| | | <dependency> |
| | | <groupId>com.googlecode.mp4parser</groupId> |
| | | <artifactId>isoparser</artifactId> |
| | | <version>1.1.22</version> |
| | | </dependency> |
| | | |
| | | |
| | | <!-- pdfçæç¼©çå¾ä¾èµ --> |
| | | <dependency> |
| | | <groupId>org.apache.pdfbox</groupId> |
| | | <artifactId>pdfbox</artifactId> |
| | | <version>2.0.24</version> |
| | | </dependency> |
| | | <!-- æä½è§é¢è·å缩ç¥å¾ä¾èµ --> |
| | | <dependency> |
| | | <groupId>org.bytedeco</groupId> |
| | | <artifactId>javacpp</artifactId> |
| | | <version>1.4.3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.bytedeco</groupId> |
| | | <artifactId>javacv</artifactId> |
| | | <version>1.4.3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.bytedeco.javacpp-presets</groupId> |
| | | <artifactId>ffmpeg-platform</artifactId> |
| | | <version>4.0.2-1.4.3</version> |
| | | </dependency> |
| | | </dependencies> |
| | | </project> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.common.file; |
| | | |
| | | import org.jaudiotagger.audio.AudioFileIO; |
| | | import org.jaudiotagger.audio.mp3.MP3AudioHeader; |
| | | import org.jaudiotagger.audio.mp3.MP3File; |
| | | |
| | | import javax.sound.sampled.AudioFormat; |
| | | import javax.sound.sampled.AudioInputStream; |
| | | import javax.sound.sampled.AudioSystem; |
| | | import java.io.File; |
| | | |
| | | public class AudioUtil { |
| | | |
| | | |
| | | /** |
| | | * è·åè¯é³æä»¶ææ¾æ¶é¿(ç§) æ¯æwav æ ¼å¼ |
| | | * |
| | | * @param filePath |
| | | * @return |
| | | */ |
| | | public static Float getDuration(String filePath) { |
| | | try { |
| | | |
| | | File destFile = new File(filePath); |
| | | AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(destFile); |
| | | AudioFormat format = audioInputStream.getFormat(); |
| | | long audioFileLength = destFile.length(); |
| | | int frameSize = format.getFrameSize(); |
| | | float frameRate = format.getFrameRate(); |
| | | float durationInSeconds = (audioFileLength / (frameSize * frameRate)); |
| | | return durationInSeconds; |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0f; |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * è·åmp3è¯é³æä»¶ææ¾æ¶é¿(ç§) mp3 |
| | | * |
| | | * @param filePath |
| | | * @return |
| | | */ |
| | | public static Float getMp3Duration(String filePath) { |
| | | |
| | | try { |
| | | File mp3File = new File(filePath); |
| | | MP3File f = (MP3File) AudioFileIO.read(mp3File); |
| | | MP3AudioHeader audioHeader = (MP3AudioHeader) f.getAudioHeader(); |
| | | return Float.parseFloat(audioHeader.getTrackLength() + ""); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0f; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·åmp3è¯é³æä»¶ææ¾æ¶é¿(ç§) |
| | | * |
| | | * @param mp3File |
| | | * @return |
| | | */ |
| | | public static Float getMp3Duration(File mp3File) { |
| | | |
| | | try { |
| | | //File mp3File = new File(filePath); |
| | | MP3File f = (MP3File) AudioFileIO.read(mp3File); |
| | | MP3AudioHeader audioHeader = (MP3AudioHeader) f.getAudioHeader(); |
| | | return Float.parseFloat(audioHeader.getTrackLength() + ""); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0f; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¾å°pcmæä»¶çæ¯«ç§æ° |
| | | * <p> |
| | | * pcmæä»¶é³é¢æ¶é¿è®¡ç® |
| | | * åå¾åbmpæä»¶ä¸æ ·ï¼pcmæä»¶ä¿åçæ¯æªå缩çé³é¢ä¿¡æ¯ã 16bits ç¼ç æ¯æï¼æ¯æ¬¡éæ ·çé³é¢ä¿¡æ¯ç¨2个åèä¿åãå¯ä»¥å¯¹æ¯ä¸bmpæä»¶ç¨åå«ç¨2个åèä¿åRGBé¢è²çä¿¡æ¯ã 16000éæ ·ç æ¯æ 1ç§ééæ · 16000次ã常è§çé³é¢æ¯44100HZï¼å³ä¸ç§éæ ·44100次ã å声éï¼ åªæä¸ä¸ªå£°éã |
| | | * <p> |
| | | * æ ¹æ®è¿äºä¿¡æ¯ï¼æä»¬å¯ä»¥è®¡ç®ï¼ 1ç§ç16000éæ ·çé³é¢æä»¶å¤§å°æ¯ 2*16000 = 32000åè ï¼çº¦ä¸º32K 1ç§ç8000éæ ·çé³é¢æä»¶å¤§å°æ¯ 2*8000 = 16000åè ï¼çº¦ä¸º 16K |
| | | * <p> |
| | | * 妿已ç¥å½é³æ¶é¿ï¼å¯ä»¥æ ¹æ®æä»¶ç大å°è®¡ç®éæ ·çæ¯å¦æ£å¸¸ã |
| | | * |
| | | * @param filePath |
| | | * @return |
| | | */ |
| | | public static long getPCMDurationMilliSecond(String filePath) { |
| | | File file = new File(filePath); |
| | | |
| | | //å¾å°å¤å°ç§ |
| | | long second = file.length() / 32000; |
| | | |
| | | long milliSecond = Math.round((file.length() % 32000) / 32000.0 * 1000); |
| | | |
| | | return second * 1000 + milliSecond; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.common.file; |
| | | |
| | | import org.apache.pdfbox.pdmodel.PDDocument; |
| | | import org.apache.pdfbox.rendering.ImageType; |
| | | import org.apache.pdfbox.rendering.PDFRenderer; |
| | | import org.bytedeco.javacv.FFmpegFrameGrabber; |
| | | import org.bytedeco.javacv.Frame; |
| | | import org.bytedeco.javacv.Java2DFrameConverter; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | |
| | | import javax.imageio.ImageIO; |
| | | import java.awt.*; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.util.Arrays; |
| | | |
| | | @Configuration |
| | | public class FileToThumbnail { |
| | | /** |
| | | * <p>Title: thumbnailImage</p> |
| | | * <p>Description: æ ¹æ®å¾çè·¯å¾çæç¼©ç¥å¾ </p> |
| | | * |
| | | * @param imagePath åå¾çè·¯å¾ |
| | | * @param w 缩ç¥å¾å®½ |
| | | * @param h 缩ç¥å¾é« |
| | | * @param prevfix çæç¼©ç¥å¾çåç¼ |
| | | * @param force æ¯å¦å¼ºå¶æç
§å®½é«çæç¼©ç¥å¾(å¦æä¸ºfalseï¼åçææä½³æ¯ä¾ç¼©ç¥å¾) |
| | | */ |
| | | public void getThumbnailForPic(String imagePath, int w, int h, String prevfix, boolean force) throws IOException { |
| | | File imgFile = new File(imagePath); |
| | | if (imgFile.exists()) { |
| | | // ImageIO æ¯æçå¾çç±»å : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif] |
| | | String types = Arrays.toString(ImageIO.getReaderFormatNames()); |
| | | String suffix = null; |
| | | // è·åå¾çåç¼ |
| | | if (imgFile.getName().indexOf(".") > -1) { |
| | | suffix = imgFile.getName().substring(imgFile.getName().lastIndexOf(".") + 1); |
| | | } |
| | | // ç±»ååå¾çåç¼å
¨é¨å°åï¼ç¶å夿åç¼æ¯å¦åæ³ |
| | | if (suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()) < 0) { |
| | | System.out.println("Sorry, the image suffix is illegal. the standard image suffix is {}." + types); |
| | | return; |
| | | } |
| | | System.out.println("target image's size, width:{" + w + "}, height:{" + h + "}."); |
| | | Image img = ImageIO.read(imgFile); |
| | | if (!force) { |
| | | // æ ¹æ®åå¾ä¸è¦æ±ç缩ç¥å¾æ¯ä¾ï¼æ¾å°æåéç缩ç¥å¾æ¯ä¾ |
| | | int width = img.getWidth(null); |
| | | int height = img.getHeight(null); |
| | | if ((width * 1.0) / w < (height * 1.0) / h) { |
| | | if (width > w) { |
| | | h = Integer.parseInt(new java.text.DecimalFormat("0").format(height * w / (width * 1.0))); |
| | | } |
| | | } else { |
| | | if (height > h) { |
| | | w = Integer.parseInt(new java.text.DecimalFormat("0").format(width * h / (height * 1.0))); |
| | | } |
| | | } |
| | | } |
| | | BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); |
| | | Graphics g = bi.getGraphics(); |
| | | g.drawImage(img, 0, 0, w, h, Color.LIGHT_GRAY, null); |
| | | g.dispose(); |
| | | String p = imgFile.getPath(); |
| | | // å°å¾çä¿åå¨åç®å½å¹¶å ä¸åç¼ |
| | | ImageIO.write(bi, suffix, new File(p.substring(0, p.lastIndexOf(File.separator)) + File.separator + prevfix + imgFile.getName())); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * éè¿PDFboxçææä»¶ç缩ç¥å¾ |
| | | * |
| | | * @param filePathï¼æä»¶è·¯å¾ |
| | | * @param outPathï¼è¾åºå¾çè·¯å¾ |
| | | * @throws IOException |
| | | */ |
| | | public String getThumbnailForPdf(String filePath, String outPath) throws IOException { |
| | | // å©ç¨PdfBoxçæå¾å |
| | | PDDocument pdDocument = PDDocument.load(new File(filePath)); |
| | | PDFRenderer renderer = new PDFRenderer(pdDocument); |
| | | // æé å¾ç |
| | | BufferedImage img_temp = renderer.renderImageWithDPI(0, 30, ImageType.RGB); |
| | | ImageIO.write(img_temp, "png", new File(outPath)); |
| | | pdDocument.close(); |
| | | return outPath; |
| | | } |
| | | |
| | | /** |
| | | * @param sourcePath ä¿åè·¯å¾ |
| | | * @return String ä¿åè·¯å¾ |
| | | * @description //çæè§é¢ç¼©ç¥å¾çURLå°å |
| | | */ |
| | | public String getThumbnailForVideo(InputStream inputStream, String sourcePath) throws IOException { |
| | | File targetFile = new File(sourcePath); |
| | | |
| | | FFmpegFrameGrabber ff = new FFmpegFrameGrabber(inputStream); |
| | | ff.start(); |
| | | // è§é¢æ»å¸§æ° |
| | | int videoLength = ff.getLengthInFrames(); |
| | | Frame f = null; |
| | | int i = 0; |
| | | while (i < videoLength) { |
| | | // è¿æ»¤å20帧,å 为å20帧å¯è½æ¯å
¨é»ç |
| | | // è¿éçéæ±ï¼ä¹å¯ä»¥ç´æ¥æ ¹æ®å¸§æ°åå¾ç |
| | | f = ff.grabFrame(); |
| | | if (i > 20 && f.image != null) { |
| | | break; |
| | | } |
| | | i++; |
| | | } |
| | | int owidth = f.imageWidth; |
| | | int oheight = f.imageHeight; |
| | | // 对æªåç帧è¿è¡çæ¯ä¾ç¼©æ¾ |
| | | int width = 300; |
| | | int height = (int) (((double) width / owidth) * oheight); |
| | | Java2DFrameConverter converter = new Java2DFrameConverter(); |
| | | BufferedImage fecthedImage = converter.getBufferedImage(f); |
| | | BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); |
| | | bi.getGraphics().drawImage(fecthedImage.getScaledInstance(width, height, Image.SCALE_SMOOTH), |
| | | 0, 0, null); |
| | | ImageIO.write(bi, "png", targetFile); |
| | | // æ¥çstopæºç ä¼èªå¨å
³æµ |
| | | ff.stop(); |
| | | return sourcePath; |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | private String fileUrl; |
| | | |
| | | /** |
| | | * ç»å¯¹è·¯å¾ |
| | | */ |
| | | private String realUrl; |
| | | |
| | | |
| | | /** |
| | | * 缩ç¥å¾ |
| | |
| | | @TableField(exist = false) |
| | | private String md5; |
| | | |
| | | /** |
| | | * è§é¢æ¶é¿ |
| | | */ |
| | | @TableField(exist = false) |
| | | private Integer duration; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.common.file; |
| | | |
| | | import com.coremedia.iso.IsoFile; |
| | | |
| | | import java.io.IOException; |
| | | |
| | | public class VideoUtil { |
| | | |
| | | |
| | | /** |
| | | * è·åè§é¢æä»¶çææ¾é¿åº¦(mp4ãmovæ ¼å¼) |
| | | * |
| | | * @param videoPath |
| | | * @return åä½ä¸ºæ¯«ç§ |
| | | */ |
| | | public static long getMp4Duration(String videoPath) throws IOException { |
| | | IsoFile isoFile = new IsoFile(videoPath); |
| | | long lengthInSeconds = |
| | | isoFile.getMovieBox().getMovieHeaderBox().getDuration() / |
| | | isoFile.getMovieBox().getMovieHeaderBox().getTimescale(); |
| | | return lengthInSeconds; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¾å°è¯é³æè§é¢æä»¶æ¶é¿,åä½ç§ |
| | | * |
| | | * @param filePath |
| | | * @return |
| | | * @throws IOException |
| | | */ |
| | | public static long getDuration(String filePath) throws IOException { |
| | | String format = getVideoFormat(filePath); |
| | | long result = 0; |
| | | if ("wav".equals(format)) { |
| | | result = AudioUtil.getDuration(filePath).intValue(); |
| | | } else if ("mp3".equals(format)) { |
| | | result = AudioUtil.getMp3Duration(filePath).intValue(); |
| | | } else if ("m4a".equals(format)) { |
| | | result = VideoUtil.getMp4Duration(filePath); |
| | | } else if ("mov".equals(format)) { |
| | | result = VideoUtil.getMp4Duration(filePath); |
| | | } else if ("mp4".equals(format)) { |
| | | result = VideoUtil.getMp4Duration(filePath); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * å¾å°è¯é³æè§é¢æä»¶æ¶é¿,åä½ç§ |
| | | * |
| | | * @param filePath |
| | | * @return |
| | | * @throws IOException |
| | | */ |
| | | public static long getDuration(String filePath, String format) throws IOException { |
| | | long result = 0; |
| | | if ("wav".equals(format)) { |
| | | result = AudioUtil.getDuration(filePath).intValue(); |
| | | } else if ("mp3".equals(format)) { |
| | | result = AudioUtil.getMp3Duration(filePath).intValue(); |
| | | } else if ("m4a".equals(format)) { |
| | | result = VideoUtil.getMp4Duration(filePath); |
| | | } else if ("mov".equals(format)) { |
| | | result = VideoUtil.getMp4Duration(filePath); |
| | | } else if ("mp4".equals(format)) { |
| | | result = VideoUtil.getMp4Duration(filePath); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¾å°æä»¶æ ¼å¼ |
| | | * |
| | | * @param path |
| | | * @return |
| | | */ |
| | | public static String getVideoFormat(String path) { |
| | | return path.toLowerCase().substring(path.toLowerCase().lastIndexOf(".") + 1); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | * æå¡å¨åå¨çæ ¹è·¯å¾ |
| | | */ |
| | | private String uploadRootPath; |
| | | /** |
| | | * æå¡å¨ipåç«¯å£ |
| | | */ |
| | | private String realUrl; |
| | | |
| | | } |
| | |
| | | import cn.hutool.core.lang.UUID; |
| | | import com.sandu.common.enums.FileStorageEnums; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.file.FileUploadDto; |
| | | import com.sandu.common.file.IFileUpload; |
| | | import com.sandu.common.file.*; |
| | | import com.sandu.common.file.config.FileProperties; |
| | | import com.sandu.common.util.SpringContextHolder; |
| | | import lombok.AllArgsConstructor; |
| | |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.math.BigInteger; |
| | | import java.security.MessageDigest; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Optional; |
| | |
| | | private static List<String> videoSuffixList = CollectionUtil.newArrayList("mp4", "mov", "avi", "mkv", "m4v", "wmv", |
| | | "asf", "asx", "rm", "rmvb", "3gp", "dat", "flv", "vob"); |
| | | |
| | | private final FileToThumbnail fileToThumbnail; |
| | | |
| | | @Override |
| | | public FileUploadDto uploadFile(MultipartFile multipartFile) { |
| | | FileProperties fileProperties = SpringContextHolder.getBean(FileProperties.class); |
| | |
| | | long size = multipartFile.getSize(); |
| | | String suffix = FileUtil.getSuffix(originalFilename); |
| | | String date = LocalDateTimeUtil.formatNormal(LocalDate.now()); |
| | | String fileName = UUID.fastUUID().toString() + "." + suffix; |
| | | String uuidStr = UUID.fastUUID().toString(); |
| | | String fileName = uuidStr + "." + suffix; |
| | | File dest; |
| | | try { |
| | | String type = Optional.ofNullable(FileTypeUtil.getType(multipartFile.getInputStream(), originalFilename)).orElse(""); |
| | |
| | | FileUploadDto uploadDto = new FileUploadDto(); |
| | | uploadDto.setOriginName(originalFilename); |
| | | uploadDto.setFileName(fileName); |
| | | uploadDto.setFileUrl(dest.getPath().replace(fileProperties.getUploadRootPath(), "")); |
| | | uploadDto.setRealUrl(dest.getPath()); |
| | | uploadDto.setFileUrl(fileProperties.getRealUrl() + dest.getPath()); |
| | | uploadDto.setFileType(FileUtil.getType(dest)); |
| | | uploadDto.setStorageType(FileStorageEnums.LOCAL.getCode()); |
| | | uploadDto.setFileSize(size); |
| | | |
| | | uploadDto.setMd5(getMD5(multipartFile) + "." + uploadDto.getFileType()); |
| | | |
| | | if (IMAGE_SUFFIX_LIST.contains(uploadDto.getFileType())) { |
| | | BufferedImage img = null; |
| | |
| | | uploadDto.setWidth(img.getWidth()); |
| | | uploadDto.setHeight(img.getHeight()); |
| | | } |
| | | } |
| | | |
| | | return uploadDto; |
| | | } |
| | | |
| | | public FileUploadDto uploadCert(MultipartFile multipartFile) { |
| | | String originalFilename = multipartFile.getOriginalFilename(); |
| | | long size = multipartFile.getSize(); |
| | | String suffix = FileUtil.getSuffix(originalFilename); |
| | | String date = LocalDateTimeUtil.formatNormal(LocalDate.now()); |
| | | String fileName = UUID.fastUUID().toString() + "." + suffix; |
| | | File dest; |
| | | } else if (FileService.videoSuffixList.contains(uploadDto.getFileType())) { |
| | | try { |
| | | String type = Optional.ofNullable(FileTypeUtil.getType(multipartFile.getInputStream(), originalFilename)).orElse(""); |
| | | // dest = new File(fileProperties.getUploadRootPath() + type + File.separator + date + File.separator + fileName).getCanonicalFile(); |
| | | |
| | | // if (!dest.getParentFile().exists()) { |
| | | // dest.getParentFile().mkdirs(); |
| | | // } |
| | | // multipartFile.transferTo(dest); |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new BusinessException(e.getMessage()); |
| | | long duration = VideoUtil.getDuration(uploadDto.getRealUrl()); |
| | | uploadDto.setDuration((int) (duration * 1000)); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | try { |
| | | InputStream inputStream = multipartFile.getInputStream(); |
| | | String screenShot = fileProperties.getUploadRootPath() + uploadDto.getFileType() |
| | | + File.separator + date + File.separator + "screenShot" + uuidStr + ".jpg"; |
| | | String thumbnailForVideo = fileToThumbnail.getThumbnailForVideo(inputStream, screenShot); |
| | | uploadDto.setScreenShot(fileProperties.getRealUrl() + thumbnailForVideo); |
| | | inputStream.close(); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | FileUploadDto uploadDto = new FileUploadDto(); |
| | | uploadDto.setOriginName(originalFilename); |
| | | uploadDto.setFileName(fileName); |
| | | // uploadDto.setFileUrl(dest.getPath()); |
| | | // uploadDto.setFileType(FileUtil.getType(dest)); |
| | | uploadDto.setStorageType(FileStorageEnums.LOCAL.getCode()); |
| | | uploadDto.setFileSize(size); |
| | | return uploadDto; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·åä¸ä¼ æä»¶çMD5å¼ |
| | | * |
| | | * @param file |
| | | * @return |
| | | */ |
| | | public String getMD5(MultipartFile file) { |
| | | |
| | | try { |
| | | byte[] uploadBytes = file.getBytes(); |
| | | MessageDigest md5 = MessageDigest.getInstance("MD5"); |
| | | byte[] digest = md5.digest(uploadBytes); |
| | | String hashString = new BigInteger(1, digest).toString(16); |
| | | if (hashString.length() % 2 != 0) { |
| | | hashString = "0" + hashString; |
| | | } |
| | | return hashString; |
| | | } catch (Exception e) { |
| | | } |
| | | return null; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.admin.newnova.file; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.sandu.common.domain.ResponseVO; |
| | | import com.sandu.common.file.FileToThumbnail; |
| | | import com.sandu.common.object.BaseConditionVO; |
| | | import com.sandu.common.util.ResponseUtil; |
| | | import com.sandu.ximon.admin.newnova.param.NewNovaFileParam; |
| | | import com.sandu.ximon.admin.security.PermissionConfig; |
| | | import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; |
| | | import com.sandu.ximon.dao.domain.NewNovaFile; |
| | | import com.sandu.ximon.dao.enums.MenuEnum; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author LiuHaoNan |
| | | * @date 2022/11/8 |
| | | */ |
| | | @RestController |
| | | @AllArgsConstructor |
| | | @RequestMapping("/v1/nova/file") |
| | | public class NewNovaFileController { |
| | | |
| | | private FileToThumbnail fileToThumbnail; |
| | | private PermissionConfig permissionConfig; |
| | | private final NewNovaFileService newNovaFileService; |
| | | |
| | | @PostMapping("/add") |
| | | public ResponseVO<Object> addLEDProgram(@RequestBody @Validated NewNovaFileParam param) { |
| | | if (!permissionConfig.check(MenuEnum.LED_NEW_FILE_ADD.getCode())) { |
| | | return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); |
| | | } |
| | | return ResponseUtil.success(newNovaFileService.addProgramFile(param)); |
| | | } |
| | | |
| | | @PostMapping("/delete") |
| | | public ResponseVO<Object> deleteLEDProgram(@RequestBody List<Long> fileIds) { |
| | | if (!permissionConfig.check(MenuEnum.LED_NEW_FILE_DEL.getCode())) { |
| | | return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); |
| | | } |
| | | return ResponseUtil.success(newNovaFileService.deleteFile(fileIds)); |
| | | } |
| | | |
| | | @GetMapping("/list") |
| | | public ResponseVO<Object> listfile(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) { |
| | | if (!permissionConfig.check(MenuEnum.LED_NEW_FILE_LIST.getCode())) { |
| | | return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); |
| | | } |
| | | |
| | | LambdaQueryWrapper<NewNovaFile> wrapper = newNovaFileService.listFile(); |
| | | if (keyword != null && !keyword.isEmpty()) { |
| | | wrapper.like(NewNovaFile::getName, keyword); |
| | | } |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | return ResponseUtil.successPage(newNovaFileService.list(wrapper)); |
| | | } |
| | | |
| | | @PostMapping("/uploading") |
| | | public ResponseVO<Object> uploadingFile(@RequestParam("file") MultipartFile file) { |
| | | if (!permissionConfig.check(MenuEnum.LED_NEW_FILE_UPLOAD.getCode())) { |
| | | return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); |
| | | } |
| | | |
| | | NewNovaFile fileUploadDto = newNovaFileService.uploadFile(file); |
| | | |
| | | /** |
| | | * æä»¶ä¸ä¼ æ¥å¿è®°å½å¼å§ |
| | | */ |
| | | String content = "æä»¶å
容:" + JSON.toJSONString(fileUploadDto); |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "æä»¶ä¸ä¼ ", content); |
| | | /** |
| | | * æä»¶ä¸ä¼ æ¥å¿è®°å½ç»æ |
| | | */ |
| | | return ResponseUtil.success(fileUploadDto); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.admin.newnova.file; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.file.FileService; |
| | | import com.sandu.common.file.FileUploadDto; |
| | | import com.sandu.common.file.impl.LocalFileUploadImpl; |
| | | import com.sandu.common.service.impl.BaseServiceImpl; |
| | | import com.sandu.ximon.admin.newnova.param.NewNovaFileParam; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; |
| | | import com.sandu.ximon.dao.domain.NewNovaFile; |
| | | import com.sandu.ximon.dao.mapper.NewNovaFileMapper; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author LiuHaoNan |
| | | * @date 2022/11/8 |
| | | */ |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class NewNovaFileService extends BaseServiceImpl<NewNovaFileMapper, NewNovaFile> { |
| | | |
| | | // private final LocalFileServiceImpl localFileService; |
| | | private final LocalFileUploadImpl localFileUpload; |
| | | |
| | | |
| | | /** |
| | | * æä»¶æ·»å |
| | | * |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public boolean addProgramFile(NewNovaFileParam param) { |
| | | NewNovaFile file = new NewNovaFile(); |
| | | BeanUtils.copyProperties(param, file); |
| | | |
| | | file.setUserId(SecurityUtils.getUserId()); |
| | | file.setUserName(SecurityUtils.getUsername()); |
| | | |
| | | /** |
| | | * è¯ºç¦æä»¶æ°å¢ æ¥å¿è®°å½å¼å§ |
| | | */ |
| | | String content = "æä»¶å
容:" + JSON.toJSONString(file); |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "è¯ºç¦æä»¶æ°å¢", content); |
| | | /** |
| | | * è¯ºç¦æä»¶æ°å¢ æ¥å¿è®°å½ç»æ |
| | | */ |
| | | return save(file); |
| | | } |
| | | |
| | | /** |
| | | * æä»¶å é¤ |
| | | * |
| | | * @param fileIds |
| | | * @return |
| | | */ |
| | | public boolean deleteFile(List<Long> fileIds) { |
| | | List<NewNovaFile> NewNovaFiles = listByIds(fileIds); |
| | | if (NewNovaFiles.isEmpty()) { |
| | | throw new BusinessException("æªæ¾å°è¯¥èç®"); |
| | | } |
| | | /** |
| | | * è¯ºç¦æä»¶å é¤ æ¥å¿è®°å½å¼å§ |
| | | */ |
| | | String content = "æä»¶id:" + fileIds + "æä»¶å
容:" + JSON.toJSONString(NewNovaFiles); |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "è¯ºç¦æä»¶å é¤", content); |
| | | /** |
| | | * è¯ºç¦æä»¶å é¤ æ¥å¿è®°å½ç»æ |
| | | */ |
| | | return removeByIds(fileIds); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æä»¶å表 |
| | | * |
| | | * @return |
| | | */ |
| | | public LambdaQueryWrapper<NewNovaFile> listFile() { |
| | | LambdaQueryWrapper<NewNovaFile> NewNovaFileLambdaQueryWrapper = Wrappers.lambdaQuery(NewNovaFile.class); |
| | | if (SecurityUtils.getClientId() != null) { |
| | | return NewNovaFileLambdaQueryWrapper.eq(NewNovaFile::getUserId, SecurityUtils.getUserId()); |
| | | } else { |
| | | return NewNovaFileLambdaQueryWrapper; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æä»¶ä¸ä¼ |
| | | * |
| | | * @param multipartFile |
| | | * @return |
| | | */ |
| | | public NewNovaFile uploadFile(MultipartFile multipartFile) { |
| | | // FileStorage fileStorage = localFileService.uploadFile(multipartFile); |
| | | |
| | | FileUploadDto fileUploadDto = localFileUpload.uploadFile(multipartFile); |
| | | NewNovaFile novaFile = new NewNovaFile(); |
| | | |
| | | novaFile.setName(fileUploadDto.getOriginName()); |
| | | novaFile.setFileType(fileUploadDto.getFileType()); |
| | | novaFile.setRealUrl(fileUploadDto.getRealUrl()); |
| | | novaFile.setFileUrl(fileUploadDto.getFileUrl()); |
| | | novaFile.setMd5(fileUploadDto.getMd5()); |
| | | novaFile.setSize(fileUploadDto.getFileSize().toString()); |
| | | if (FileService.videoSuffixList.contains(novaFile.getFileType())) { |
| | | novaFile.setDuration(fileUploadDto.getDuration()); |
| | | novaFile.setScreenShot(fileUploadDto.getScreenShot()); |
| | | } |
| | | |
| | | return novaFile; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.admin.newnova.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotEmpty; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @author LiuHaoNan |
| | | * @date 2022/11/8 |
| | | */ |
| | | @Data |
| | | public class NewNovaFileParam { |
| | | |
| | | /** |
| | | * æä»¶åç§° |
| | | */ |
| | | @NotBlank(message = "æä»¶åä¸è½ä¸ºç©º") |
| | | private String name; |
| | | |
| | | /** |
| | | * å¤§å° |
| | | */ |
| | | private String size; |
| | | |
| | | /** |
| | | * æä»¶ç±»å |
| | | */ |
| | | private String fileType; |
| | | |
| | | /** |
| | | * 龿¥ |
| | | */ |
| | | private String fileUrl; |
| | | |
| | | /** |
| | | * ç»å¯¹è·¯å¾ |
| | | */ |
| | | private String realUrl; |
| | | |
| | | /** |
| | | * 缩ç¥å¾ |
| | | */ |
| | | private String screenShot; |
| | | |
| | | /** |
| | | * md5 |
| | | */ |
| | | private String md5; |
| | | |
| | | /** |
| | | * ä¸ä¼ æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * è§é¢æ¶é¿ |
| | | */ |
| | | private Integer duration; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.admin.newnova.utils; |
| | | |
| | | import com.sun.jna.Native; |
| | | /* |
| | | * 使ç¨åé
读: |
| | | * 1 å
³äºå¯è½åççæç´¢ä¸å°Tå¡çåå ï¼ |
| | | * 1.1. æå¼äºexpressï¼å¯¼è´udp端å£è¢«å ç¨ï¼è¯·å
³éexpress软件åéè¯ |
| | | * 1.2. SDKåTå¡ä¸å¨åä¸ä¸ªå±åç½ï¼å¯ä»¥å°è¯æå®ipæç´¢ï¼ä½¿ç¨æ¹æ³è§ï¼https://docapi.vnnox.com/web/#/7?page_id=609 |
| | | |
| | | * 2 å
³äºä½¿ç¨sdk卿åºå¯è½åºç°çé®é¢åè§£å³æ¹æ³ï¼ |
| | | * |
| | | * 2.1. å¨linuxä¸å¦æåºç°lib***.so file too short ,è¿ç§éè¯¯ï¼æå¯è½æ¯è½¯è¿æ¥å¤±æï¼å¯ä»¥å°è¯å é¤åææä»¶ï¼å°è¯ ln -s éæ°çæè½¯è¿æ¥ãæ¯å¦ï¼ ./libcurl.so: file too shortï¼é¦å
rm libcurl.soï¼ç¶åln -s libcurl.so.4.3.0 libcurl.soå³å¯ã |
| | | * 2.2. é对java项ç®ï¼ä½¿ç¨JNAå è½½soåºæ¶ï¼è¯·ä½¿ç¨ç»å¯¹è·¯å¾ãæ¯å¦ï¼ |
| | | * //winodws |
| | | * ViplexCore instance = (ViplexCore) Native.loadLibrary("D:\\ViplexCore3.3.0.01_x64\\bin\\viplexcore.dll",ViplexCore.class); |
| | | * //æè
linux |
| | | * ViplexCore instance = (ViplexCore) Native.loadLibrary("home/user/desktop/ViplexCore_3.3.0.01_CentOS/bin/libviplexcore.so",ViplexCore.class); |
| | | * |
| | | * 2.3. é对java项ç®ï¼å¦æè¦ä½¿ç¨ç¸å¯¹è·¯å¾ï¼è¯·å°sdk卿åºè·¯å¾æ·»å å°classpathç¯å¢åéï¼æä¸é¢å ç§æ¹æ³ï¼ä¹å¯ä»¥æç´¢ç¸å
³æç¨æ·»å ï¼ï¼ä¾å¦ï¼ |
| | | * 2.3.1. å½ä»¤è¡ä½¿ç¨ï¼ javac -cp "C:\Users\HiWin10\Downloads\ViplexCore3.3.0.01_x64\bin" (详è§SDK demo/java/ä¸runDemo.shæè
runDemo.batæä»¶) |
| | | * 2.3.2. 导å
¥ç¯å¢åéï¼å¦ï¼ export CLASSPATH=$CLASSPATH:home/user/ViplexCore3.3.0.01_x64/ |
| | | * 2.3.3. é对springboot项ç®ï¼ java -Xbootclasspath/a:/home/nova/novasdk/ |
| | | * */ |
| | | public class APITest { |
| | | static Boolean g_bAPIReturn = false; |
| | | static int g_code = 0; |
| | | static String g_sn = "BZSA79353N1310006847"; //BZSA07313J0350000997 |
| | | |
| | | static void waitAPIReturn() throws InterruptedException |
| | | { |
| | | while (!g_bAPIReturn) |
| | | { |
| | | Thread.sleep(1000); |
| | | } |
| | | g_bAPIReturn = false; |
| | | } |
| | | |
| | | static void testApi() throws InterruptedException |
| | | { |
| | | System.setProperty("jna.encoding", "UTF-8"); |
| | | ViplexCore instance = (ViplexCore) Native.loadLibrary("viplexcore",ViplexCore.class); |
| | | //å½éè¦éæå°é¡¹ç®ä¸æ¶ï¼è¯·ä¿®æ¹ä¸é¢å è½½åºçä½ç½®ä¸ºä½ ä¸è½½çsdkåºçç»å¯¹è·¯å¾ï¼windowsä¸å¦ï¼ |
| | | //ViplexCore instance = (ViplexCore) Native.loadLibrary("D:\\ViplexCore3.3.0.01_x64\\bin\\viplexcore.dll",ViplexCore.class); |
| | | |
| | | //å½éè¦éæå°é¡¹ç®ä¸æ¶ï¼è¯·ä¿®æ¹æ¤å¤å è½½åºçä½ç½®ä¸ºä½ ä¸è½½çsdkåºçç»å¯¹è·¯å¾ï¼linuxä¸å¦ï¼ |
| | | //ViplexCore instance = (ViplexCore) Native.loadLibrary("home/user/desktop/ViplexCore_3.3.0.01_CentOS/bin/libviplexcore.so",ViplexCore.class); |
| | | ViplexCore.CallBack callBack = new ViplexCore.CallBack() { |
| | | |
| | | @Override |
| | | public void dataCallBack(int code, String data) { |
| | | // TODO Auto-generated method stub |
| | | g_code = code; |
| | | String strCode = "\nViplexCore Demo code:" + code; |
| | | String strData = "\nViplexCore Demo data:" + data; |
| | | System.out.println(strCode); |
| | | System.out.println(strData); |
| | | g_bAPIReturn=true; |
| | | } |
| | | |
| | | }; |
| | | |
| | | String rootDir = System.getProperty("user.dir") + "/temp"; |
| | | rootDir = rootDir.replaceAll( "\\\\","/"); |
| | | String createProgram = "{\"name\":\"Demo\",\"width\":500,\"height\":500,\"tplID\":1,\"winInfo\":{\"height\":100,\"width\":100,\"left\":0,\"top\":0,\"zindex\":0,\"index\":0}}"; |
| | | String editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"èç®\",\"widgetContainers\":[{\"audioGroup\":\"\",\"backgroundColor\":\"#00000000\",\"backgroundDrawable\":\"\",\"contents\":{\"widgetGroups\":[],\"widgets\":[{\"id\":1,\"enable\":true,\"repeatCount\":1,\"layout\":{\"y\":\"0\",\"height\":\"100%\",\"x\":\"0\",\"width\":\"100%\"},\"backgroundColor\":\"#00000000\",\"backgroundDrawable\":\"\",\"backgroundMusic\":\"\",\"zOrder\":0,\"displayRatio\":\"FULL\",\"outAnimation\":{\"type\":0,\"duration\":0},\"dataSource\":\"62ea7e60c493c1f860ae256eef8ec89c.png\",\"type\":\"PICTURE\",\"constraints\":[{\"cron\":[],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"border\":{\"borderThickness\":\"2px,3px,5%,6\",\"style\":0,\"backgroundColor\":\"#ff000000\",\"name\":\"border\",\"cornerRadius\":\"2%\",\"effects\":{\"headTailSpacing\":\"\",\"isHeadTail\":false,\"speedByPixelEnable\":true,\"speed\":0,\"animation\":\"CLOCK_WISE\"}},\"inAnimation\":{\"type\":0,\"duration\":1000},\"duration\":3605000,\"name\":\"test.png\",\"originalDataSource\":\"./test.png\",\"functionStorage\":\"\",\"isSupportSpecialEffects\":false}]},\"enable\":true,\"id\":1,\"itemsSource\":\"\",\"layout\":{\"height\":\"1.0\",\"width\":\"1.0\",\"x\":\"0.0\",\"y\":\"0.0\"},\"name\":\"widgetContainers1\",\"pickCount\":0,\"pickPolicy\":\"ORDER\",\"zOrder\":0}]}}"; |
| | | String genrateProgram = String.format( |
| | | "{\"programID\":1,\"outPutPath\":\"%s/\",\"mediasPath\":[{\"oldPath\":\"test\",\"newPath\":\"test\"}]}", |
| | | rootDir); |
| | | String trasfromProgram = String.format( |
| | | "{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {\"./test.png\": \"test.png\"}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}", |
| | | g_sn, |
| | | rootDir); |
| | | |
| | | |
| | | Boolean bTestVideo = false; |
| | | if (bTestVideo) |
| | | { |
| | | editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"Demo\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z 8:00\",\"startTime\":\"1970-01-01T00:00:00Z 8:00\"}],\"duration\":5000,\"dataSource\":\"219c7dd3260d6bf98ebf61b6da440ffd.avi\",\"type\":\"VIDEO\",\"name\":\"test.vai\",\"originalDataSource\":\"./test.avi\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}"; |
| | | |
| | | trasfromProgram = String.format( |
| | | "{\"sn\":\"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {\"./test.avi\": \"test.avi\"}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}", |
| | | g_sn, |
| | | rootDir); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | Boolean testText = false; |
| | | if (testText) { |
| | | editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"jiemu\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"duration\":5000,\"metadata\":{\"content\":{\"autoPaging\":true,\"backgroundMusic\":{\"duration\":0,\"isTextSync\":false},\"displayStyle\":{\"scrollAttributes\":{\"effects\":{\"animation\":\"MARQUEE_LEFT\",\"speed\":3}},\"type\":\"SCROLL\"},\"paragraphs\":[{\"backgroundColor\":\"#00000000\",\"horizontalAlignment\":\"CENTER\",\"letterSpacing\":0,\"lineSpacing\":0,\"lines\":[{\"segs\":[{\"content\":\"ç®ä½ç¹é«æ¥æ¬èªíêµì´.English123\"}]}],\"verticalAlignment\":\"CENTER\"}],\"textAttributes\":[{\"backgroundColor\":\"#ff000000\",\"attributes\":{\"font\":{\"family\":[\"Arial\"],\"isUnderline\":false,\"size\":20,\"style\":\"NORMAL\"},\"letterSpacing\":0,\"textColor\":\"#ffff0000\"}}]}},\"name\":\"text\",\"type\":\"ARCH_TEXT\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}"; |
| | | trasfromProgram = String.format( |
| | | "{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}", |
| | | g_sn, |
| | | rootDir); |
| | | } |
| | | |
| | | String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}"; |
| | | instance.nvSetDevLang("Java"); |
| | | System.out.println("nvInit(sdk åå§å):"); |
| | | System.out.println(instance.nvInit(rootDir,companyInfo)); |
| | | System.out.println("ViplexCore Demo nvSearchTerminalAsync(æç´¢) begin... "); |
| | | instance.nvSearchTerminalAsync(callBack); |
| | | Thread.sleep(3000); |
| | | g_bAPIReturn = false; |
| | | |
| | | // System.out.println("ViplexCore Demo nvSearchAppointIpAsync(æå®IPæç´¢) begin... "); |
| | | // String requestData = "{\"ip\":\"172.18.179.106\"}"; |
| | | // instance.nvSearchAppointIpAsync(requestData, callBack); |
| | | // Thread.sleep(2000); |
| | | |
| | | System.out.println("ViplexCore Demo nvLoginAsync(ç»å½) begin... "); |
| | | String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\"1234567890\",\"loginType\":0}" |
| | | , g_sn); |
| | | instance.nvLoginAsync(loginParam, callBack); |
| | | waitAPIReturn(); |
| | | if (g_code != 0) { |
| | | System.out.println("ViplexCore Demo nvLoginAsync(ç»å½) 失败ï¼"); |
| | | return; |
| | | } |
| | | System.out.println("ViplexCore Demo nvCreateProgramAsync(å建èç®) begin... "); |
| | | instance.nvCreateProgramAsync(createProgram, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | |
| | | String requestDatapath = "{\"filePath\":\"./test.png\"}"; |
| | | System.out.println("ViplexCore Demo nvGetFileMD5Async(è·åMD5) begin... "); |
| | | instance.nvGetFileMD5Async(requestDatapath, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvSetPageProgramAsync(ç¼è¾èç®) begin... "); |
| | | instance.nvSetPageProgramAsync(editProgram, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvMakeProgramAsync(çæèç®) begin... "); |
| | | instance.nvMakeProgramAsync(genrateProgram, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvStartTransferProgramAsync(åéèç®) begin... "); |
| | | instance.nvStartTransferProgramAsync(trasfromProgram, callBack); |
| | | Thread.sleep(10000); |
| | | g_bAPIReturn = false; |
| | | |
| | | System.out.println("ViplexCore Demo nvGetProgramInfoAsync(è·åèç®ä¿¡æ¯) begin... "); |
| | | String requestDatasn = String.format("{\"sn\":\"%s\"}", g_sn); |
| | | instance.nvGetProgramInfoAsync(requestDatasn, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvSetVolumeAsync(设置é³é) begin... "); |
| | | String setVolumeParam = String.format("{\"sn\":\"%s\",\"volumeInfo\":{\"ratio\":60.0}}", g_sn); |
| | | instance.nvSetVolumeAsync(setVolumeParam, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvGetVolumeAsync(è·åé³é) begin... "); |
| | | String getVolumeParam = String.format("{\"sn\":\"%s\"}", g_sn); |
| | | instance.nvGetVolumeAsync(getVolumeParam, callBack); |
| | | waitAPIReturn(); |
| | | } |
| | | |
| | | public static void main(String[] args) throws InterruptedException{ |
| | | testApi(); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.admin.newnova.utils; |
| | | |
| | | import com.sun.jna.Native; |
| | | /* |
| | | * 使ç¨åé
读: |
| | | * 1 å
³äºå¯è½åççæç´¢ä¸å°Tå¡çåå ï¼ |
| | | * 1.1. æå¼äºexpressï¼å¯¼è´udp端å£è¢«å ç¨ï¼è¯·å
³éexpress软件åéè¯ |
| | | * 1.2. SDKåTå¡ä¸å¨åä¸ä¸ªå±åç½ï¼å¯ä»¥å°è¯æå®ipæç´¢ï¼ä½¿ç¨æ¹æ³è§ï¼https://docapi.vnnox.com/web/#/7?page_id=609 |
| | | |
| | | * 2 å
³äºä½¿ç¨sdk卿åºå¯è½åºç°çé®é¢åè§£å³æ¹æ³ï¼ |
| | | * |
| | | * 2.1. å¨linuxä¸å¦æåºç°lib***.so file too short ,è¿ç§éè¯¯ï¼æå¯è½æ¯è½¯è¿æ¥å¤±æï¼å¯ä»¥å°è¯å é¤åææä»¶ï¼å°è¯ ln -s éæ°çæè½¯è¿æ¥ãæ¯å¦ï¼ ./libcurl.so: file too shortï¼é¦å
rm libcurl.soï¼ç¶åln -s libcurl.so.4.3.0 libcurl.soå³å¯ã |
| | | * 2.2. é对java项ç®ï¼ä½¿ç¨JNAå è½½soåºæ¶ï¼è¯·ä½¿ç¨ç»å¯¹è·¯å¾ãæ¯å¦ï¼ |
| | | * //winodws |
| | | * ViplexCore instance = (ViplexCore) Native.loadLibrary("D:\\ViplexCore3.3.0.01_x64\\bin\\viplexcore.dll",ViplexCore.class); |
| | | * //æè
linux |
| | | * ViplexCore instance = (ViplexCore) Native.loadLibrary("home/user/desktop/ViplexCore_3.3.0.01_CentOS/bin/libviplexcore.so",ViplexCore.class); |
| | | * |
| | | * 2.3. é对java项ç®ï¼å¦æè¦ä½¿ç¨ç¸å¯¹è·¯å¾ï¼è¯·å°sdk卿åºè·¯å¾æ·»å å°classpathç¯å¢åéï¼æä¸é¢å ç§æ¹æ³ï¼ä¹å¯ä»¥æç´¢ç¸å
³æç¨æ·»å ï¼ï¼ä¾å¦ï¼ |
| | | * 2.3.1. å½ä»¤è¡ä½¿ç¨ï¼ javac -cp "C:\Users\HiWin10\Downloads\ViplexCore3.3.0.01_x64\bin" (详è§SDK demo/java/ä¸runDemo.shæè
runDemo.batæä»¶) |
| | | * 2.3.2. 导å
¥ç¯å¢åéï¼å¦ï¼ export CLASSPATH=$CLASSPATH:home/user/ViplexCore3.3.0.01_x64/ |
| | | * 2.3.3. é对springboot项ç®ï¼ java -Xbootclasspath/a:/home/nova/novasdk/ |
| | | * */ |
| | | public class Test { |
| | | static Boolean g_bAPIReturn = false; |
| | | static Boolean g_snConnectFlag = false; |
| | | static int g_code = 0; |
| | | static String g_sn = "BZSA07194A0049999597"; //BZSA07313J0350000997 |
| | | |
| | | static void waitAPIReturn() throws InterruptedException |
| | | { |
| | | while (!g_bAPIReturn) |
| | | { |
| | | Thread.sleep(1000); |
| | | } |
| | | g_bAPIReturn = false; |
| | | } |
| | | |
| | | static void testApi() throws InterruptedException |
| | | { |
| | | System.setProperty("jna.encoding", "UTF-8"); |
| | | ViplexCore instance = (ViplexCore) Native.loadLibrary("viplexcore",ViplexCore.class); |
| | | //å½éè¦éæå°é¡¹ç®ä¸æ¶ï¼è¯·ä¿®æ¹ä¸é¢å è½½åºçä½ç½®ä¸ºä½ ä¸è½½çsdkåºçç»å¯¹è·¯å¾ï¼windowsä¸å¦ï¼ |
| | | //ViplexCore instance = (ViplexCore) Native.loadLibrary("D:\\ViplexCore3.3.0.01_x64\\bin\\viplexcore.dll",ViplexCore.class); |
| | | |
| | | //å½éè¦éæå°é¡¹ç®ä¸æ¶ï¼è¯·ä¿®æ¹æ¤å¤å è½½åºçä½ç½®ä¸ºä½ ä¸è½½çsdkåºçç»å¯¹è·¯å¾ï¼linuxä¸å¦ï¼ |
| | | //ViplexCore instance = (ViplexCore) Native.loadLibrary("home/user/desktop/ViplexCore_3.3.0.01_CentOS/bin/libviplexcore.so",ViplexCore.class); |
| | | ViplexCore.CallBack callBack = new ViplexCore.CallBack() { |
| | | |
| | | @Override |
| | | public void dataCallBack(int code, String data) { |
| | | // TODO Auto-generated method stub |
| | | g_code = code; |
| | | String strCode = "\nViplexCore Demo code:" + code; |
| | | String strData = "\nViplexCore Demo data:" + data; |
| | | System.out.println(strCode); |
| | | System.out.println(strData); |
| | | g_bAPIReturn=true; |
| | | } |
| | | |
| | | }; |
| | | ViplexCore.CallBack callBack2 = new ViplexCore.CallBack() { |
| | | |
| | | @Override |
| | | public void dataCallBack(int code, String data) { |
| | | // TODO Auto-generated method stub |
| | | g_code = code; |
| | | String strCode = "\nViplexCore Demo code:" + code; |
| | | String strData = "\nViplexCore Demo data:" + data; |
| | | System.out.println(strCode); |
| | | System.out.println(strData); |
| | | |
| | | if(data.contains(g_sn)) |
| | | { |
| | | g_snConnectFlag=true; |
| | | } |
| | | } |
| | | |
| | | }; |
| | | |
| | | String rootDir = System.getProperty("user.dir") + "/temp"; |
| | | rootDir = rootDir.replaceAll( "\\\\","/"); |
| | | String createProgram = "{\"name\":\"Demo\",\"width\":500,\"height\":500,\"tplID\":1,\"winInfo\":{\"height\":100,\"width\":100,\"left\":0,\"top\":0,\"zindex\":0,\"index\":0}}"; |
| | | String editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"èç®\",\"widgetContainers\":[{\"audioGroup\":\"\",\"backgroundColor\":\"#00000000\",\"backgroundDrawable\":\"\",\"contents\":{\"widgetGroups\":[],\"widgets\":[{\"id\":1,\"enable\":true,\"repeatCount\":1,\"layout\":{\"y\":\"0\",\"height\":\"100%\",\"x\":\"0\",\"width\":\"100%\"},\"backgroundColor\":\"#00000000\",\"backgroundDrawable\":\"\",\"backgroundMusic\":\"\",\"zOrder\":0,\"displayRatio\":\"FULL\",\"outAnimation\":{\"type\":0,\"duration\":0},\"dataSource\":\"62ea7e60c493c1f860ae256eef8ec89c.png\",\"type\":\"PICTURE\",\"constraints\":[{\"cron\":[],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"border\":{\"borderThickness\":\"2px,3px,5%,6\",\"style\":0,\"backgroundColor\":\"#ff000000\",\"name\":\"border\",\"cornerRadius\":\"2%\",\"effects\":{\"headTailSpacing\":\"\",\"isHeadTail\":false,\"speedByPixelEnable\":true,\"speed\":0,\"animation\":\"CLOCK_WISE\"}},\"inAnimation\":{\"type\":0,\"duration\":1000},\"duration\":3605000,\"name\":\"test.png\",\"originalDataSource\":\"./test.png\",\"functionStorage\":\"\",\"isSupportSpecialEffects\":false}]},\"enable\":true,\"id\":1,\"itemsSource\":\"\",\"layout\":{\"height\":\"1.0\",\"width\":\"1.0\",\"x\":\"0.0\",\"y\":\"0.0\"},\"name\":\"widgetContainers1\",\"pickCount\":0,\"pickPolicy\":\"ORDER\",\"zOrder\":0}]}}"; |
| | | String genrateProgram = String.format( |
| | | "{\"programID\":1,\"outPutPath\":\"%s/\",\"mediasPath\":[{\"oldPath\":\"test\",\"newPath\":\"test\"}]}", |
| | | rootDir); |
| | | String trasfromProgram = String.format( |
| | | "{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {\"./test.png\": \"test.png\"}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}", |
| | | g_sn, |
| | | rootDir); |
| | | |
| | | |
| | | Boolean bTestVideo = false; |
| | | if (bTestVideo) |
| | | { |
| | | editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"Demo\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z 8:00\",\"startTime\":\"1970-01-01T00:00:00Z 8:00\"}],\"duration\":5000,\"dataSource\":\"219c7dd3260d6bf98ebf61b6da440ffd.avi\",\"type\":\"VIDEO\",\"name\":\"test.vai\",\"originalDataSource\":\"./test.avi\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}"; |
| | | |
| | | trasfromProgram = String.format( |
| | | "{\"sn\":\"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {\"./test.avi\": \"test.avi\"}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}", |
| | | g_sn, |
| | | rootDir); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | Boolean testText = false; |
| | | if (testText) { |
| | | editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"jiemu\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"duration\":5000,\"metadata\":{\"content\":{\"autoPaging\":true,\"backgroundMusic\":{\"duration\":0,\"isTextSync\":false},\"displayStyle\":{\"scrollAttributes\":{\"effects\":{\"animation\":\"MARQUEE_LEFT\",\"speed\":3}},\"type\":\"SCROLL\"},\"paragraphs\":[{\"backgroundColor\":\"#00000000\",\"horizontalAlignment\":\"CENTER\",\"letterSpacing\":0,\"lineSpacing\":0,\"lines\":[{\"segs\":[{\"content\":\"ç®ä½ç¹é«æ¥æ¬èªíêµì´.English123\"}]}],\"verticalAlignment\":\"CENTER\"}],\"textAttributes\":[{\"backgroundColor\":\"#ff000000\",\"attributes\":{\"font\":{\"family\":[\"Arial\"],\"isUnderline\":false,\"size\":20,\"style\":\"NORMAL\"},\"letterSpacing\":0,\"textColor\":\"#ffff0000\"}}]}},\"name\":\"text\",\"type\":\"ARCH_TEXT\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}"; |
| | | trasfromProgram = String.format( |
| | | "{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}", |
| | | g_sn, |
| | | rootDir); |
| | | } |
| | | |
| | | String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}"; |
| | | instance.nvSetDevLang("Java"); |
| | | System.out.println("nvInit(sdk åå§å):"); |
| | | System.out.println(instance.nvInit(rootDir,companyInfo)); |
| | | |
| | | g_bAPIReturn = false; |
| | | String publicNetInfo = "{\"publicModule\":true,\"encrypt\":true,\"certificatePath\":\"E:/cert\",\"port\":12345,\"httpserverUrl\":\"http://10.10.10.114:18081/file/\",\"httpserverLocalPath\":\"F:/file\"}"; |
| | | System.out.println("ViplexCore Demo nvInitPublicNetAsync(å
¬ç½åå§å) begin... "); |
| | | instance.nvInitPublicNetAsync(publicNetInfo,callBack,callBack); |
| | | waitAPIReturn(); |
| | | |
| | | while (!g_snConnectFlag) |
| | | { |
| | | instance.nvGetOnlineDevicesAsync(callBack2); |
| | | Thread.sleep(2000); |
| | | } |
| | | |
| | | System.out.println("ViplexCore Demo nvLoginAsync(ç»å½) begin... "); |
| | | String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\"123456\",\"loginType\":5}" |
| | | , g_sn); |
| | | instance.nvLoginAsync(loginParam, callBack); |
| | | waitAPIReturn(); |
| | | if (g_code != 0) { |
| | | System.out.println("ViplexCore Demo nvLoginAsync(ç»å½) 失败ï¼"); |
| | | return; |
| | | } |
| | | System.out.println("ViplexCore Demo nvCreateProgramAsync(å建èç®) begin... "); |
| | | instance.nvCreateProgramAsync(createProgram, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | |
| | | String requestDatapath = "{\"filePath\":\"./test.png\"}"; |
| | | System.out.println("ViplexCore Demo nvGetFileMD5Async(è·åMD5) begin... "); |
| | | instance.nvGetFileMD5Async(requestDatapath, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvSetPageProgramAsync(ç¼è¾èç®) begin... "); |
| | | instance.nvSetPageProgramAsync(editProgram, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvMakeProgramAsync(çæèç®) begin... "); |
| | | instance.nvMakeProgramAsync(genrateProgram, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvStartTransferProgramAsync(åéèç®) begin... "); |
| | | instance.nvStartTransferProgramAsync(trasfromProgram, callBack); |
| | | Thread.sleep(10000); |
| | | g_bAPIReturn = false; |
| | | |
| | | System.out.println("ViplexCore Demo nvGetProgramInfoAsync(è·åèç®ä¿¡æ¯) begin... "); |
| | | String requestDatasn = String.format("{\"sn\":\"%s\"}", g_sn); |
| | | instance.nvGetProgramInfoAsync(requestDatasn, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvSetVolumeAsync(设置é³é) begin... "); |
| | | String setVolumeParam = String.format("{\"sn\":\"%s\",\"volumeInfo\":{\"ratio\":60.0}}", g_sn); |
| | | instance.nvSetVolumeAsync(setVolumeParam, callBack); |
| | | waitAPIReturn(); |
| | | |
| | | System.out.println("ViplexCore Demo nvGetVolumeAsync(è·åé³é) begin... "); |
| | | String getVolumeParam = String.format("{\"sn\":\"%s\"}", g_sn); |
| | | instance.nvGetVolumeAsync(getVolumeParam, callBack); |
| | | waitAPIReturn(); |
| | | } |
| | | |
| | | public static void main(String[] args) throws InterruptedException{ |
| | | testApi(); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.admin.newnova.utils; |
| | | |
| | | import com.sun.jna.Callback; |
| | | import com.sun.jna.Library; |
| | | |
| | | public interface ViplexCore extends Library { |
| | | public interface CallBack extends Callback { |
| | | void dataCallBack(int code, String data); |
| | | } |
| | | |
| | | void nvSetDevLang(String devLang); |
| | | int nvInit(String sdkRootDir, String data); |
| | | void nvSearchTerminalAsync(CallBack callBack); |
| | | void nvSetPlatform(String platform); |
| | | void nvPingAsync(CallBack callBack); |
| | | void nvStopPublicNetAsync(CallBack callBack); |
| | | void nvFindAllTerminalsAsync(CallBack callBack); |
| | | void nvInitPublicNetAsync(String data, CallBack connectCallback, CallBack disconnectCallback); |
| | | void nvGetOnlineDevicesAsync(CallBack callback); |
| | | void nvRsaDecodeAsync(String data, CallBack callBack); |
| | | void nvRsaEncodeAsync(String data, CallBack callBack); |
| | | void nvNewSetBindPlayerAsync(String data, CallBack callBack); |
| | | void nvSetScreenShotAsync(String data, CallBack callBack); |
| | | void nvGetWifiCurrentStatusAsync(String data, CallBack callBack); |
| | | void nvStartUploadApkAsync(String data, CallBack callBack); |
| | | void nvRebootAsync(String data, CallBack callBack); |
| | | void nvGetManualBrightnessFor0x99Async(String data, CallBack callBack); |
| | | void nvGetEnvironmentBrightnessParameterAsync(String data, CallBack callBack); |
| | | void nvSetEnvironmentBrightnessParameterAsync(String data, CallBack callBack); |
| | | void nvRegisterVnnox(String data, CallBack callBack); |
| | | void nvGetVerifyCode(String data, CallBack callBack); |
| | | void nvLoginVnnox(String data, CallBack callBack); |
| | | void nvGetScreenDeviceInfoAsync(String data, CallBack callBack); |
| | | void nvCancelFunctionAsync(String data, CallBack callBack); |
| | | void nvDownloadTerminalPlayLogAsync(String data, CallBack callBack); |
| | | void nvDownloadTerminalPlayLogNetAsync(String data, CallBack callBack); |
| | | void nvDownloadTerminalLogNetAsync(String data, CallBack callBack); |
| | | void nvDownloadTerminalAllLogAsync(String data, CallBack callBack); |
| | | void nvCheckNetworkAsync(String data, CallBack callBack); |
| | | void nvUploadTerminalLogAsync(String data, CallBack callBack); |
| | | void nvDownloadTerminalLogAsync(String data, CallBack callBack); |
| | | void nvGetTimeZoneAsync(String data, CallBack callBack); |
| | | void nvGetTokenAsync(String data, CallBack callBack); |
| | | void nvIsExistPlayerNameAsync(String data, CallBack callBack); |
| | | void nvGetPlayerIdentiferAsync(String data, CallBack callBack); |
| | | void nvIsCommonCloudAsync(String data, CallBack callBack); |
| | | void nvFinishDataAsync(String data, CallBack callBack); |
| | | void nvStartGetAvailableMemoryDataAsync(String data, CallBack callBack); |
| | | void nvUploadFeedBackFileStateAsync(String data, CallBack callBack); |
| | | void nvUploadFeedbackInfoAsync(String data, CallBack callBack); |
| | | void nvAddNodeServerInfoListAsync(String data, CallBack callBack); |
| | | void nvChangeNodeServerListAsync(String data, CallBack callBack); |
| | | void nvDeleteNodeServerListAsync(String data, CallBack callBack); |
| | | void nvAddNodeServerListAsync(String data, CallBack callBack); |
| | | void nvGetNodeServerListAsync(String data, CallBack callBack); |
| | | void nvSetAudioMedioProgramAsync(String data, CallBack callBack); |
| | | void nvGetFileMD5Async(String data, CallBack callBack); |
| | | void nvGetCustomerTplAsync(String data, CallBack callBack); |
| | | void nvStopProgramTransferAsync(String data, CallBack callBack); |
| | | void nvStartTransferProgramAsync(String data, CallBack callBack); |
| | | void nvDeleteProgramAsync(String data, CallBack callBack); |
| | | void nvGetProgramAsync(String data, CallBack callBack); |
| | | void nvDeleteTplAsync(String data, CallBack callBack); |
| | | void nvEditTplAsync(String data, CallBack callBack); |
| | | void nvAddTplAsync(String data, CallBack callBack); |
| | | void nvSetSystemTplInfoAsync(String data, CallBack callBack); |
| | | void nvMakeProgramAsync(String data, CallBack callBack); |
| | | void nvSetPageProgramsAsync(String data, CallBack callBack); |
| | | void nvSetPageProgramAsync(String data, CallBack callBack); |
| | | void nvCreateProgramAsync(String data, CallBack callBack); |
| | | void nvQueryFileByTypeAsync(String data, CallBack callBack); |
| | | void nvDownLoadFilesAsync(String data, CallBack callBack); |
| | | void nvDataBaseMigrationAsync(String data, CallBack callBack); |
| | | void nvGetScreenUnitTempAsync(String data, CallBack callBack); |
| | | void nvSetTimeAndZoneAsync(String data, CallBack callBack); |
| | | void nvGetDisplayInfoAsync(String data, CallBack callBack); |
| | | void nvGetRotationAsync(String data, CallBack callBack); |
| | | void nvSetRotationAsync(String data, CallBack callBack); |
| | | void nvDownLoadScreenshotNetAsync(String data, CallBack callBack); |
| | | void nvDownLoadScreenshotAsync(String data, CallBack callBack); |
| | | void nvGetIsUseDayLightTimeAsync(String data, CallBack callBack); |
| | | void nvAddNetTimingInfoListAsync(String data, CallBack callBack); |
| | | void nvUpdateNetTimingInfoAsync(String data, CallBack callBack); |
| | | void nvDeleteNetTimingInfoAsync(String data, CallBack callBack); |
| | | void nvAddNetTimingInfoAsync(String data, CallBack callBack); |
| | | void nvGetNetTimingListInfoAsync(String data, CallBack callBack); |
| | | void nvSetNetTimingInfoAsync(String data, CallBack callBack); |
| | | void nvGetNetTimingInfoAsync(String data, CallBack callBack); |
| | | void nvCalibrateTimeAsync(String data, CallBack callBack); |
| | | void nvGetCurrentTimeAndZoneAsync(String data, CallBack callBack); |
| | | void nvGetMonitorInfoByReceiverIndexAsync(String data, CallBack callBack); |
| | | void nvGetReceiverCountAndInfoAsync(String data, CallBack callBack); |
| | | void nvGetSendCardMonitorInfoAsync(String data, CallBack callBack); |
| | | void nvGetAvailableMemoryAsync(String data, CallBack callBack); |
| | | void nvGetCPUTempAsync(String data, CallBack callBack); |
| | | void nvGetCPUUsageAsync(String data, CallBack callBack); |
| | | void nvGetAvailableStorageDataAsync(String data, CallBack callBack); |
| | | void nvGetBindPlayerAsync(String data, CallBack callBack); |
| | | void nvGetCloudPlayerListAsync(String data, CallBack callBack); |
| | | void nvSetBindPlayerAsync(String data, CallBack callBack); |
| | | void nvSetIcareConfigInfoAsync(String data, CallBack callBack); |
| | | void nvGetIcareConfigInfoAsync(String data, CallBack callBack); |
| | | void nvSetRecvCardFileAsync(String data, CallBack callBack); |
| | | void nvSetScreenAttributeAsync(String data, CallBack callBack); |
| | | void nvGetScreenAttributeAsync(String data, CallBack callBack); |
| | | void nvGetModuleInfoAsync(String data, CallBack callBack); |
| | | void nvSetWifiApStationSwitchAsync(String data, CallBack callBack); |
| | | void nvSetAPNetworkOpenStatusAsync(String data, CallBack callBack); |
| | | void nvGetAPNetworkOpenStatusAsync(String data, CallBack callBack); |
| | | void nvGet4GNetworkStatusAsync(String data, CallBack callBack); |
| | | void nvGetFlightModeAsync(String data, CallBack callBack); |
| | | void nvSetFlightModeAsync(String data, CallBack callBack); |
| | | void nvSetAPNInfoAsync(String data, CallBack callBack); |
| | | void nvGetAPNInfoAsync(String data, CallBack callBack); |
| | | void nvSetAPNetworkAsync(String data, CallBack callBack); |
| | | void nvGetAPNetworkAsync(String data, CallBack callBack); |
| | | void nvSetEthernetInfoAsync(String data, CallBack callBack); |
| | | void nvGetEthernetInfoAsync(String data, CallBack callBack); |
| | | void nvIsMobileModuleExistedAsync(String data, CallBack callBack); |
| | | void nvSetMobileNetworkAsync(String data, CallBack callBack); |
| | | void nvGetMobileNetworkAsync(String data, CallBack callBack); |
| | | void nvSendForgetWifiCommandAsync(String data, CallBack callBack); |
| | | void nvSetWifiEnabledAsync(String data, CallBack callBack); |
| | | void nvGetWifiEnabledAsync(String data, CallBack callBack); |
| | | void nvDisconnectWifiNetworkAsync(String data, CallBack callBack); |
| | | void nvConnectWifiNetworkAsync(String data, CallBack callBack); |
| | | void nvGetWifiListAsync(String data, CallBack callBack); |
| | | void nvUpdateVerifyAsync(String data, CallBack callBack); |
| | | void nvStopCurrentUpdateTaskAsync(String data, CallBack callBack); |
| | | void nvUpdateOSAsync(String data, CallBack callBack); |
| | | void nvUpdateAppAsync(String data, CallBack callBack); |
| | | void nvReadFileContentFromZipFileAsync(String data, CallBack callBack); |
| | | void nvStopDownloadUpgradeFileAsync(String data, CallBack callBack); |
| | | void nvDownloadUpgradeFileAsync(String data, CallBack callBack); |
| | | void nvGetOnlineUpgradeFileAsync(String data, CallBack callBack); |
| | | void nvQueryUpdateFileByTypeAsync(String data, CallBack callBack); |
| | | void nvDeleteCollectorAsync(String data, CallBack callBack); |
| | | void nvAddCollectorAsync(String data, CallBack callBack); |
| | | void nvGetPickerReceiverAsync(String data, CallBack callBack); |
| | | void nvSetCustomResolutionAsync(String data, CallBack callBack); |
| | | void nvSetHdmiOutputStatusAsync(String data, CallBack callBack); |
| | | void nvGetHdmiOutputStatusAsync(String data, CallBack callBack); |
| | | void nvSetReBootTaskAsync(String data, CallBack callBack); |
| | | void nvGetReBootTaskAsync(String data, CallBack callBack); |
| | | void nvGetSupportedResolutionAsync(String data, CallBack callBack); |
| | | void nvGetCurrentResolutionAsync(String data, CallBack callBack); |
| | | void nvSetCurrentResolutioAsync(String data, CallBack callBack); |
| | | void nvSetOTGUSBModeAsync(String data, CallBack callBack); |
| | | void nvGetOTGUSBModeAsync(String data, CallBack callBack); |
| | | void nvClearAllMediasAsync(String data, CallBack callBack); |
| | | void nvSetReBootWipeUserDataAsync(String data, CallBack callBack); |
| | | void nvGetSyncPlayAsync(String data, CallBack callBack); |
| | | void nvSetSyncPlayAsync(String data, CallBack callBack); |
| | | void nvStopPlayAsync(String data, CallBack callBack); |
| | | void nvResumePlayAsync(String data, CallBack callBack); |
| | | void nvPausePlayAsync(String data, CallBack callBack); |
| | | void nvStartPlayAsync(String data, CallBack callBack); |
| | | void nvDeletePlayListAsync(String data, CallBack callBack); |
| | | void nvGetProgramInfoAsync(String data, CallBack callBack); |
| | | void nvGetScreenPowerPolicyFor0x99Async(String data, CallBack callBack); |
| | | void nvGetScreenPowerManual0x99Async(String data, CallBack callBack); |
| | | void nvsetScreenPowerPolicy0x99Async(String data, CallBack callBack); |
| | | void nvsetScreenPowerManual0x99Async(String data, CallBack callBack); |
| | | void nvSetScreenPowerPolicyAsync(String data, CallBack callBack); |
| | | void nvGetScreenPowerPolicyAsync(String data, CallBack callBack); |
| | | void nvGetScreenPowerStateAsync(String data, CallBack callBack); |
| | | void nvSetScreenPowerStateAsync(String data, CallBack callBack); |
| | | void nvGetScreenPowerModeAsync(String data, CallBack callBack); |
| | | void nvSetScreenPowerModeAsync(String data, CallBack callBack); |
| | | void nvSetColorTemperatureAsync(String data, CallBack callBack); |
| | | void nvGetColorTemperatureAsync(String data, CallBack callBack); |
| | | void nvgetPolicyBrightnessFor0x99Async(String data, CallBack callBack); |
| | | void nvsetPolicyBrightnessFor0x99Async(String data, CallBack callBack); |
| | | void nvsetManualBrightnessFor0x99Async(String data, CallBack callBack); |
| | | void nvGetEnvironmentBrightnessAsync(String data, CallBack callBack); |
| | | void nvSetBrightnessPolicyAsync(String data, CallBack callBack); |
| | | void nvGetBrightnessPolicyAsync(String data, CallBack callBack); |
| | | void nvGetScreenBrightnessAsync(String data, CallBack callBack); |
| | | void nvSetScreenBrightnessAsync(String data, CallBack callBack); |
| | | void nvGetBrightnessAdjustModeAsync(String data, CallBack callBack); |
| | | void nvSetBrightnessAdjustModeAsync(String data, CallBack callBack); |
| | | void nvGetconfigurationAsync(String data, CallBack callBack); |
| | | void nvGetProductInfoAsync(String data, CallBack callBack); |
| | | void nvGetInstalledPackageVersionsAsync(String data, CallBack callBack); |
| | | void nvGetFirmwareInfosAsync(String data, CallBack callBack); |
| | | void nvLogoutAsync(String data, CallBack callBack); |
| | | void nvSetSystemInfoAsync(String data, CallBack callBack); |
| | | void nvSetTerminalInfoAsync(String data, CallBack callBack); |
| | | void nvGetTerminalInfoAsync(String data, CallBack callBack); |
| | | void nvSetScreenInfoAsync(String data, CallBack callBack); |
| | | void nvDelTerminalInfoAsync(String data, CallBack callBack); |
| | | void nvChangePassWordAsync(String data, CallBack callBack); |
| | | void nvLoginAsync(String data, CallBack callBack); |
| | | void nvSearchRangeIpAsync(String data, CallBack callBack); |
| | | void nvSearchAppointIpAsync(String data, CallBack callBack); |
| | | void nvGetUserInfoAsync(String data, CallBack callBack); |
| | | void nvSetUserInfoAsync(String data, CallBack callBack); |
| | | void nvSetVideoSourcePolicyFor0x99Async(String data, CallBack callBack); |
| | | void nvGetVideoSourcePolicyFor0x99Async(String data, CallBack callBack); |
| | | void nvSetVideoSourceManualFor0x99Async(String data, CallBack callBack); |
| | | void nvGetVideoSourceManualFor0x99Async(String data, CallBack callBack); |
| | | void nvGetVideoEDIDAsync(String data, CallBack callBack); |
| | | void nvSetVideoEDIDAsync(String data, CallBack callBack); |
| | | void nvSetVideoControlInfoAsync(String data, CallBack callBack); |
| | | void nvGetVideoControlInfoAsync(String data, CallBack callBack); |
| | | void nvSetRelayPowerStatusAsync(String data, CallBack callBack); |
| | | void nvGetRelayPowerStatusAsync(String data, CallBack callBack); |
| | | void nvGetRelayPowerPolicyAsync(String data, CallBack callBack); |
| | | void nvSetRelayPowerPolicyAsync(String data, CallBack callBack); |
| | | void nvSetRelayPowerManualAsync(String data, CallBack callBack); |
| | | void nvGetPowerModeAsync(String data, CallBack callBack); |
| | | void nvSetPowerModeAsync(String data, CallBack callBack); |
| | | void nvGetPowerInfoStatusAsync(String data, CallBack callBack); |
| | | void nvGetPowerInfoPolicyAsync(String data, CallBack callBack); |
| | | void nvSetPowerInfoPolicyAsync(String data, CallBack callBack); |
| | | void nvSetPowerInfoManualAsync(String data, CallBack callBack); |
| | | void nvGetLoraInfoAsync(String data, CallBack callBack); |
| | | void nvSetSupportSensorInfoAsync(String data, CallBack callBack); |
| | | void nvGetSupportSensorInfoAsync(String data, CallBack callBack); |
| | | void nvSetSpliceInfoAsync(String data, CallBack callBack); |
| | | void nvGetSpliceInfoAsync(String data, CallBack callBack); |
| | | void nvUpdateFontAsync(String data, CallBack callBack); |
| | | void nvDeleteFontAsync(String data, CallBack callBack); |
| | | void nvGetTerminalFontAsync(String data, CallBack callBack); |
| | | void nvGetPlaylogPathAsync(String data, CallBack callBack); |
| | | void nvStartUploadApkCoreAsync(String data, CallBack callBack); |
| | | void nvUninstallPackageAsync(String data, CallBack callBack); |
| | | void nvForceStopAppAsync(String data, CallBack callBack); |
| | | void nvGetRunningPackageInfoAsync(String data, CallBack callBack); |
| | | void nvGetInstalledPackageInfoAsync(String data, CallBack callBack); |
| | | void nvSetVPNConnectInfoAsync(String data, CallBack callBack); |
| | | void nvGetVPNConnectInfoAsync(String data, CallBack callBack); |
| | | void nvGetTimingVolumeFor0x99Async(String data, CallBack callBack); |
| | | void nvSetTimingVolumeFor0x99Async(String data, CallBack callBack); |
| | | void nvSetVolumeFor0x99Async(String data, CallBack callBack); |
| | | void nvGetVolumeFor0x99Async(String data, CallBack callBack); |
| | | void nvGetTimingVolumeAsync(String data, CallBack callBack); |
| | | void nvSetTimingVolumeAsync(String data, CallBack callBack); |
| | | void nvSetVolumeAsync(String data, CallBack callBack); |
| | | void nvGetVolumeAsync(String data, CallBack callBack); |
| | | void nvGetManualPowerSwitchStatusAsync(String data, CallBack callBack); |
| | | void nvSetManualPowerSwitchStatusAsync(String data, CallBack callBack); |
| | | void nvGetRealtimePowerSwitchStatusAsync(String data, CallBack callBack); |
| | | void nvGetTimingPowerSwitchStatusAsync(String data, CallBack callBack); |
| | | void nvSetTimingPowerSwitchStatusAsync(String data, CallBack callBack); |
| | | void nvGetPublicNetParamAsync(String data, CallBack callBack); |
| | | void nvDisconnectPublicNetAsync(String data, CallBack callBack); |
| | | void nvSetPublicNetConfigParamAsync(String data, CallBack callBack); |
| | | |
| | | } |
| | | |
| | |
| | | username: sandu |
| | | # æ°æ®åºå¯ç |
| | | password: dygOHN4&mZC9X+99 |
| | | url: jdbc:mysql://112.74.63.130:3306/ximon_light?useUnicode=true&autoReconnect=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai |
| | | url: jdbc:mysql://112.74.63.130:3306/ximon_light_n1?useUnicode=true&autoReconnect=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | druid: |
| | | connection-init-sqls: set names utf8mb4 |
| | |
| | | online-key: online-token |
| | | # æ¯å¦å¯å¨redisç¼åç¨æ·ä¿¡æ¯ |
| | | cache-online: false |
| | | #************************æ¬å°ä¸ä¼ æä»¶é
ç½®************************ |
| | | upload: |
| | | upload-root-path: /usr/local/project/ximon-light-20017/file/ |
| | | #æä»¶æå¡å¨è·¯å¾ |
| | | upload-root-path: E:\file\novafile |
| | | storage: local |
| | | #æå¡å¨æä»¶åç¼ |
| | | real-url: http://localhost/ |
| | | common: |
| | | urlPrefix: http://112.74.63.130/file/ |
| | | urlPrefix: http://localhost/ |
| | | quartz: |
| | | enable: true |
| | | |