From 87d885019c9df22ade809b6a2da06545bff9bf98 Mon Sep 17 00:00:00 2001
From: Dana <Dana_Lee1016@126.com>
Date: 星期五, 30 一月 2026 16:26:04 +0800
Subject: [PATCH] 在 startFileRotationTimer() 的定时回调里,轮换到下一分钟前调用: usb和内部相机

---
 app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java |   49 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 44 insertions(+), 5 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 0f56508..cb11b44 100644
--- a/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java
+++ b/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java
@@ -17,6 +17,7 @@
 import com.safeluck.floatwindow.MediaArgu;
 import com.safeluck.floatwindow.ResponseVO;
 import com.safeluck.floatwindow.util.GlobalData;
+import com.safeluck.floatwindow.util.FileUtil;
 import com.safeluck.floatwindow.util.VideoFileUtils;
 
 import timber.log.Timber;
@@ -572,14 +573,17 @@
                         
                         // 閲婃斁褰撳墠璧勬簮
                         releaseResources();
-                        
+
                         // 閲嶅懡鍚嶅垰瀹屾垚鐨勬枃浠�
                         if (completedVideoFile != null) {
                             renameCompletedFile(completedVideoFile);
                             completedVideoFile = null;
                         }
-                        
-                        // 鍒濆鍖栨柊鐨勭紪鐮佸櫒鍜孧uxer
+
+                        // 姣忔鍐欏叆鏂版枃浠跺墠锛屾鏌ュ苟娓呯悊瀛樺偍绌洪棿锛圓nYun_VIDEO 涓嬬殑 mp4锛�
+                        ensureStorageSpaceForMp4();
+
+                        // 鍒濆鍖栨柊鐨勭紪鐮佸櫒鍜孧uxer锛堝垱寤轰笅涓�鍒嗛挓鐨勬柊鏂囦欢锛�
                         if (!initEncoderAndMuxer()) {
                             Timber.e("Failed to create new video file");
                             break;
@@ -647,13 +651,13 @@
                 }
                 
                 releaseResources();
-                
+
                 // 閲嶅懡鍚嶅垰瀹屾垚鐨勬枃浠讹紙鍋滄褰曞儚鏃讹級
                 if (completedVideoFile != null) {
                     renameCompletedFile(completedVideoFile);
                     completedVideoFile = null;
                 }
-                
+
                 Timber.d("RecordThread ended");
             }
         }
@@ -811,6 +815,41 @@
         // 濡傛灉鑾峰彇澶辫触锛岃繑鍥為粯璁ゅ��60绉�
         return 60;
     }
+
+    /**
+     * 纭繚瀛樺偍绌洪棿瓒冲锛堥拡瀵� AnYun_VIDEO 涓嬬殑 mp4锛�
+     * TF 鍗★細浣跨敤 FileUtil.cleanupH264Files锛堝唴閮ㄥ凡鏀逛负娓呯悊 mp4锛夋寜鏃ユ湡鐩綍鍒犻櫎鏈�鏃╃殑瑙嗛
+     * 鍐呴儴 Flash锛氫娇鐢� FileUtil.ensureInternalFlashSpaceForH264锛堝唴閮ㄥ凡鏀逛负娓呯悊 mp4锛�
+     */
+    private void ensureStorageSpaceForMp4() {
+        if (context == null || mediaArgu == null) {
+            return;
+        }
+        try {
+            int tfFlag = mediaArgu.getTfCardFlag(); // 0-鍐呴儴瀛樺偍锛�1-TF 鍗�
+
+            // 鍏堝畾浣嶅綋鍓嶄娇鐢ㄧ殑鏃ユ湡鐩綍锛屽啀鍙栧叾鐖剁洰褰� AnYun_VIDEO 浣滀负鏍圭洰褰�
+            File dateDir = VideoFileUtils.getVideoDirectory(context, tfFlag);
+            if (dateDir == null) {
+                return;
+            }
+            File rootDir = dateDir.getParentFile(); // .../AnYun_VIDEO
+            if (rootDir == null) {
+                return;
+            }
+
+            String rootPath = rootDir.getAbsolutePath();
+            if (tfFlag == 1) {
+                // TF 鍗★細闄愬埗鎬诲ぇ灏� + 鍓╀綑绌洪棿
+                FileUtil.cleanupH264Files(context, rootPath);
+            } else {
+                // 鍐呴儴 Flash锛氱‘淇濆墿浣欑┖闂� 鈮� 800MB
+                FileUtil.ensureInternalFlashSpaceForH264(context);
+            }
+        } catch (Exception e) {
+            Timber.e(e, "ensureStorageSpaceForMp4 error");
+        }
+    }
     
     /**
      * 妫�鏌ュ苟鍚姩Muxer

--
Gitblit v1.8.0