From 0e7521837a8d763ab643b6858687e04be29a89b5 Mon Sep 17 00:00:00 2001
From: Dana <Dana_Lee1016@126.com>
Date: 星期三, 24 十二月 2025 11:11:06 +0800
Subject: [PATCH] 1.支持根据 jsonConfig 中的 cameraId 参数路由到第二个进程(H264EncodeService2)的实现

---
 app/src/main/java/com/anyun/h264/H264EncodeService.java |   89 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/com/anyun/h264/H264EncodeService.java b/app/src/main/java/com/anyun/h264/H264EncodeService.java
index d0c7374..195cc7c 100644
--- a/app/src/main/java/com/anyun/h264/H264EncodeService.java
+++ b/app/src/main/java/com/anyun/h264/H264EncodeService.java
@@ -348,6 +348,56 @@
     }
     
     /**
+     * 鍦ㄧ浜屼釜杩涚▼锛坈amera2锛変腑鑾峰彇璧勬簮鍒楄〃
+     */
+    private List<ResourceInfo> getResourceListInProcess2(String startTime, String endTime, boolean useTFCard, String jsonConfig) {
+        Timber.d("Routing to process 2 (camera2) for getResourceList");
+        
+        try {
+            // 纭繚绗簩涓繘绋嬬殑鏈嶅姟宸茬粦瀹�
+            if (!ensureCamera2ServiceBound()) {
+                Timber.e("Failed to bind camera2 service");
+                return new ArrayList<>();
+            }
+            
+            // 璋冪敤绗簩涓繘绋嬬殑鏈嶅姟
+            if (camera2Service != null) {
+                return camera2Service.getResourceList(startTime, endTime, useTFCard, jsonConfig);
+            } else {
+                Timber.e("Camera2 service is null");
+                return new ArrayList<>();
+            }
+        } catch (RemoteException e) {
+            Timber.e(e, "Error calling camera2 service for getResourceList");
+            return new ArrayList<>();
+        }
+    }
+    
+    /**
+     * 鍦ㄧ浜屼釜杩涚▼锛坈amera2锛変腑璁剧疆姘村嵃淇℃伅
+     */
+    private void setWatermarkInfoInProcess2(String watermarkInfoJson, String jsonConfig) {
+        Timber.d("Routing to process 2 (camera2) for setWatermarkInfo");
+        
+        try {
+            // 纭繚绗簩涓繘绋嬬殑鏈嶅姟宸茬粦瀹�
+            if (!ensureCamera2ServiceBound()) {
+                Timber.e("Failed to bind camera2 service");
+                return;
+            }
+            
+            // 璋冪敤绗簩涓繘绋嬬殑鏈嶅姟
+            if (camera2Service != null) {
+                camera2Service.setWatermarkInfo(watermarkInfoJson, jsonConfig);
+            } else {
+                Timber.e("Camera2 service is null");
+            }
+        } catch (RemoteException e) {
+            Timber.e(e, "Error calling camera2 service for setWatermarkInfo");
+        }
+    }
+    
+    /**
      * 纭繚绗簩涓繘绋嬬殑鏈嶅姟宸茬粦瀹�
      */
     private synchronized boolean ensureCamera2ServiceBound() {
@@ -758,6 +808,25 @@
     private List<ResourceInfo> getResourceList(String startTime, String endTime,boolean useTFCard,String jsonConfig) {
         Timber.d("getResourceList called, startTime: %s, endTime: %s, useTFCard: %b", startTime, endTime, useTFCard);
         
+        // 瑙f瀽cameraId锛堝鏋滈厤缃腑鏈夛級
+        Integer cameraId = null;
+        if (jsonConfig != null && !jsonConfig.trim().isEmpty()) {
+            try {
+                JSONObject json = new JSONObject(jsonConfig);
+                if (json.has("cameraId")) {
+                    cameraId = json.optInt("cameraId", 1);
+                }
+            } catch (JSONException e) {
+                // 蹇界暐瑙f瀽閿欒锛岀户缁娇鐢ㄥ綋鍓嶈繘绋�
+                Timber.w(e, "Failed to parse cameraId from jsonConfig");
+            }
+        }
+        
+        // 濡傛灉鎸囧畾浜哻ameraId=2锛岃矾鐢卞埌绗簩涓繘绋�
+        if (cameraId != null && cameraId == 2) {
+            return getResourceListInProcess2(startTime, endTime, useTFCard, jsonConfig);
+        }
+        
         List<ResourceInfo> resourceList = new ArrayList<>();
         
         try {
@@ -914,6 +983,26 @@
     private void setWatermarkInfo(String watermarkInfoJson,String jsonConfig) {
         Timber.d("setWatermarkInfo called, watermarkInfoJson: %s", watermarkInfoJson);
         
+        // 瑙f瀽cameraId锛堝鏋滈厤缃腑鏈夛級
+        Integer cameraId = null;
+        if (jsonConfig != null && !jsonConfig.trim().isEmpty()) {
+            try {
+                JSONObject json = new JSONObject(jsonConfig);
+                if (json.has("cameraId")) {
+                    cameraId = json.optInt("cameraId", 1);
+                }
+            } catch (JSONException e) {
+                // 蹇界暐瑙f瀽閿欒锛岀户缁娇鐢ㄥ綋鍓嶈繘绋�
+                Timber.w(e, "Failed to parse cameraId from jsonConfig");
+            }
+        }
+        
+        // 濡傛灉鎸囧畾浜哻ameraId=2锛岃矾鐢卞埌绗簩涓繘绋�
+        if (cameraId != null && cameraId == 2) {
+            setWatermarkInfoInProcess2(watermarkInfoJson, jsonConfig);
+            return;
+        }
+        
         try {
             if (watermarkInfoJson == null || watermarkInfoJson.trim().isEmpty()) {
                 Timber.w("Watermark info JSON is null or empty, clearing watermark");

--
Gitblit v1.8.0