From 53bb651a2d05970666bcfd76a90ca4afaf748141 Mon Sep 17 00:00:00 2001
From: Dana <Dana_Lee1016@126.com>
Date: 星期三, 28 一月 2026 15:45:58 +0800
Subject: [PATCH] 1.usb录像加水印。 推流、录像都有水印

---
 app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java |   92 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 90 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java b/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java
index 1047097..5b36a5e 100644
--- a/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java
+++ b/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java
@@ -8,10 +8,14 @@
 import android.media.MediaFormat;
 import android.media.MediaMuxer;
 import android.media.MediaRecorder;
+import android.text.TextUtils;
+import android.util.Log;
 
 import com.anyun.libusbcamera.UsbCamera;
+import com.anyun.libusbcamera.WatermarkParam;
 import com.safeluck.floatwindow.MediaArgu;
 import com.safeluck.floatwindow.ResponseVO;
+import com.safeluck.floatwindow.util.GlobalData;
 import com.safeluck.floatwindow.util.VideoFileUtils;
 
 import timber.log.Timber;
@@ -19,6 +23,12 @@
 import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 
 /**
  * USB鎽勫儚澶村綍鍍忕鐞嗗櫒
@@ -116,7 +126,7 @@
                 notifyCallback(0, -1, "USB鎽勫儚澶存墦寮�澶辫触");
                 return;
             }
-            
+            setWaterMask();
             cameraExists = true;
             Timber.d("USB鎽勫儚澶存墦寮�鎴愬姛");
             
@@ -129,7 +139,85 @@
             notifyCallback(0, -3, "鍚姩褰曞儚澶辫触: " + e.getMessage());
         }
     }
-    
+
+    WatermarkParam watermarkParam;
+    ArrayList<WatermarkParam> watermarkParamList = new ArrayList<>();
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    int baseY = 20;
+    int fontSize= 24;
+    private ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
+    private void setWaterMask() {
+
+        scheduledExecutorService.scheduleWithFixedDelay(() -> {
+
+
+
+                if (!TextUtils.isEmpty(GlobalData.getInstance().getWaterMaskInfo())){
+                    Log.i(TAG,"tieshuiin");
+
+                    if (resolutionArr[0]==320&&resolutionArr[1]==240){
+                        fontSize = 24;
+                        baseY = 2;
+                    }else if (resolutionArr[0]==640&&resolutionArr[1]==480){
+                        fontSize = 32;
+                        baseY = 4;
+                    }else if (resolutionArr[0]==1280&&resolutionArr[1]==720){
+                        fontSize = 48;
+                        baseY = 6;
+                    }else{
+                        baseY = 2;
+                        fontSize = 24;
+                    }
+                    String school = GlobalData.getInstance().parseWaterMaskInfo("school", "鏃�", GlobalData.ShareType.STRING);
+                    watermarkParam = new WatermarkParam(10,baseY,school);
+                    watermarkParamList.clear();
+                    watermarkParamList.add(watermarkParam);
+
+                    String teacher = GlobalData.getInstance().parseWaterMaskInfo("teacher", "鏃�", GlobalData.ShareType.STRING);
+
+
+                    String stu = GlobalData.getInstance().parseWaterMaskInfo("student", "鏃�", GlobalData.ShareType.STRING);
+                    baseY = fontSize*11/10+baseY;
+                    watermarkParam = new WatermarkParam(10,baseY,"鏁欑粌锛�"+teacher+" 瀛﹀憳锛�"+stu);
+                    watermarkParamList.add(watermarkParam);
+
+                    double speed = GlobalData.getInstance().parseWaterMaskInfo("speed", 0.0, GlobalData.ShareType.DOUBLE);
+
+
+                    String czh = GlobalData.getInstance().parseWaterMaskInfo("car_license", "鏃�", GlobalData.ShareType.STRING) + GlobalData.getInstance().getCameraTag;
+                    baseY = fontSize*11/10+baseY;
+                    watermarkParam = new WatermarkParam(10,resolutionArr[1]-baseY,czh +"    "+String.format("閫熷害锛�%.1f",speed));
+                    watermarkParamList.add(watermarkParam);
+
+
+                    double latitude = GlobalData.getInstance().parseWaterMaskInfo("latitude", 29.51228918, GlobalData.ShareType.DOUBLE);
+                    double longitude = GlobalData.getInstance().parseWaterMaskInfo("longitude", 106.45556208, GlobalData.ShareType.DOUBLE);
+
+//                            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())
+                    baseY = fontSize*11/10+baseY;
+                    watermarkParam = new WatermarkParam(10,resolutionArr[1]-fontSize,  String.format("%.6f %.6f", latitude, longitude)+" "+sdf.format(new Date()));
+                    watermarkParamList.add(watermarkParam);
+
+                    if (resolutionArr[0]==320&&resolutionArr[1]==240){
+                        usbCamera.enableWatermark(true,"/system/ms_unicode_24.bin");
+                        usbCamera.setWatermark(3,fontSize,1,watermarkParamList);
+                    }else if (resolutionArr[0]==640&&resolutionArr[1]==480){
+                        usbCamera.enableWatermark(true,"/system/ms_unicode_32.bin");
+                        usbCamera.setWatermark(3,fontSize,1,watermarkParamList);
+                    }else if (resolutionArr[0]==1280&&resolutionArr[1]==720){
+                        usbCamera.enableWatermark(true,"/system/ms_unicode_48.bin");
+                        usbCamera.setWatermark(3,fontSize,1,watermarkParamList);
+                    }else{
+                        usbCamera.enableWatermark(true,"/system/ms_unicode_24.bin");
+                        usbCamera.setWatermark(3,fontSize,1,watermarkParamList);
+                    }
+                }
+
+        },1,1, TimeUnit.SECONDS);
+    }
+
+
+
     /**
      * 鍋滄褰曞儚
      */

--
Gitblit v1.8.0