From de7368d08258b80af017bc3a0ac891b314f01e36 Mon Sep 17 00:00:00 2001
From: Dana <Dana_Lee1016@126.com>
Date: 星期五, 06 二月 2026 13:31:59 +0800
Subject: [PATCH] 1.录像、推流 回调,关联摄像头 2.推流 startPush主线程(P2 3.

---
 app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraPushManager.java |   27 ++++++++++++++++++++++++---
 1 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraPushManager.java b/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraPushManager.java
index 076ada8..b78ab51 100644
--- a/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraPushManager.java
+++ b/app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraPushManager.java
@@ -97,9 +97,24 @@
     }
 
     /**
-     * 寮�濮嬫帹娴�
+     * 寮�濮嬫帹娴侊紙瀵瑰鎺ュ彛锛�
+     * 娉ㄦ剰锛欰livcLivePusher 蹇呴』鍦ㄤ富绾跨▼鍒濆鍖栵紝鍚﹀垯浼氭姏鍑�
+     * "Can't create handler inside thread that has not called Looper.prepare()"
      */
     public void startPush(MediaArgu media) {
+        // 纭繚鍦ㄤ富绾跨▼鎵ц瀹為檯鐨勫惎鍔ㄩ�昏緫
+        if (Looper.myLooper() == Looper.getMainLooper()) {
+            startPushInternal(media);
+        } else {
+            // 褰撳墠鏄� Binder 绾跨▼鎴栧叾浠栧悗鍙扮嚎绋嬶紝鍒囧埌涓荤嚎绋�
+            mainHandler.post(() -> startPushInternal(media));
+        }
+    }
+
+    /**
+     * 鐪熸鐨勫惎鍔ㄦ帹娴侀�昏緫锛屽繀椤诲湪涓荤嚎绋嬭皟鐢�
+     */
+    private void startPushInternal(MediaArgu media) {
         if (media == null) {
             notifyCallback(1, -1, "MediaArgu is null");
             return;
@@ -121,7 +136,7 @@
         }
 
         try {
-            // 鍒濆鍖栨帹娴丼DK
+            // 鍒濆鍖栨帹娴丼DK锛堟鏃跺凡淇濊瘉鍦ㄤ富绾跨▼锛�
             initAlivcPusher();
             setWaterMask();
             pushStarted = false;
@@ -135,7 +150,6 @@
 
             cameraExists = true;
             Timber.d("USB鎽勫儚澶存墦寮�鎴愬姛");
-
 
             notifyCallback(1, 0, "鎺ㄦ祦绾跨▼宸插惎鍔紝绛夊緟鎺ㄦ祦鐘舵�佸氨缁�");
         } catch (Exception e) {
@@ -767,6 +781,13 @@
             response.setType(type);
             response.setErrCode(errCode);
             response.setMessage(message);
+            // 璁剧疆 cameraId锛氭牴鎹� usbCameraId 鍖哄垎 P1(1) 鍜� P2(2)
+            if (mediaArgu != null) {
+                int usbCameraId = mediaArgu.getUsbCameraId();
+                response.setCameraId(usbCameraId == 2 ? 2 : 1); // 2 -> P2, 鍏朵粬 -> P1
+            } else {
+                response.setCameraId(1); // 榛樿 P1
+            }
             callback.onResult(response);
         }
     }

--
Gitblit v1.8.0