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