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