Dana
6 天以前 f8e07136a73a1723c2c9cdd13b8928c0e7cdf5aa
1.usb录像 Cameraid
2个文件已修改
25 ■■■■ 已修改文件
app/src/main/java/com/safeluck/floatwindow/P2UsbCameraVideoService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/safeluck/floatwindow/P2UsbCameraVideoService.java
@@ -3,7 +3,9 @@
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
@@ -25,6 +27,9 @@
    private UsbCameraRecordManager usbCameraRecordManager;
    private ManagerType currentManagerType = ManagerType.NONE;
    // 主线程 Handler,用于确保 AlivcLivePusher 初始化在主线程执行
    private final Handler mainHandler = new Handler(Looper.getMainLooper());
    private enum ManagerType {
        NONE,
@@ -114,6 +119,15 @@
            return;
        }
        // 确保在主线程执行,因为 AlivcLivePusher 初始化需要 Handler(必须在有 Looper 的线程)
        if (Looper.myLooper() == Looper.getMainLooper()) {
            startMediaInternal(media);
        } else {
            mainHandler.post(() -> startMediaInternal(media));
        }
    }
    private void startMediaInternal(MediaArgu media) {
        // 先停止当前
        stopCurrentManager();
@@ -127,7 +141,12 @@
    }
    private void stopMedia(MediaArgu media) {
        // 确保在主线程执行
        if (Looper.myLooper() == Looper.getMainLooper()) {
        stopCurrentManager();
        } else {
            mainHandler.post(this::stopCurrentManager);
        }
    }
    private void stopCurrentManager() {
app/src/main/java/com/safeluck/floatwindow/manager/UsbCameraRecordManager.java
@@ -297,11 +297,11 @@
            int usbId = (mediaArgu != null) ? mediaArgu.getUsbCameraId() : 0;
            int[] cameraIds;
            if (usbId == 2) {
                cameraIds = new int[]{2};
                cameraIds = new int[]{2,3};
            } else if (usbId == 1) {
                cameraIds = new int[]{0};
                cameraIds = new int[]{1,2};
            } else {
                cameraIds = new int[]{0, 2};
                cameraIds = new int[]{0, 1};
            }
            String cameraName = null; // 不指定特定名称