Dana
6 天以前 f8e07136a73a1723c2c9cdd13b8928c0e7cdf5aa
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) {
        stopCurrentManager();
        // 确保在主线程执行
        if (Looper.myLooper() == Looper.getMainLooper()) {
            stopCurrentManager();
        } else {
            mainHandler.post(this::stopCurrentManager);
        }
    }
    private void stopCurrentManager() {