Android WebRTC может продолжать голосовой вызов, но не может продолжать видеовызов


Я работаю над приложением Android video-audio call, до сих пор я сделал основной функционал, он работает нормально никаких проблем я не могу сделать: голосовой вызов, видеозвонок. моя проблема в том, что когда я нажимаю кнопку home (видео прерывается по любой причине), я не могу вернуть его обратно, странно то, что я могу делать все, что мне нужно с голосом; продолжать, пока приложение находится в фоновом режиме и остановить голос, но, к сожалению, я не могу управлять видео вообще. Я думаю, что есть проблема. в создании видео, связанного с WebRTC вещи так вот код, ответственный за это:

PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
            .builder(this)
            .setEnableVideoHwAcceleration(true)
            .createInitializationOptions());


    PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();

    DefaultVideoEncoderFactory defaultVideoEncoderFactory = new DefaultVideoEncoderFactory(rootEglBase.getEglBaseContext(),  true,  true);
    DefaultVideoDecoderFactory defaultVideoDecoderFactory = new DefaultVideoDecoderFactory(rootEglBase.getEglBaseContext());

    peerConnectionFactory = new PeerConnectionFactory(options, defaultVideoEncoderFactory,defaultVideoDecoderFactory);

    videoCapturerAndroid = createCameraCapturer(new Camera1Enumerator(false));

    audioConstraints = new MediaConstraints();
    videoConstraints = new MediaConstraints();

    //Create a VideoSource instance
    videoSource = peerConnectionFactory.createVideoSource(videoCapturerAndroid);
    localVideoTrack = peerConnectionFactory.createVideoTrack("100", videoSource);

    //create an AudioSource instance
    audioSource = peerConnectionFactory.createAudioSource(audioConstraints);
    localAudioTrack = peerConnectionFactory.createAudioTrack("101", audioSource);

    videoCapturerAndroid.startCapture(1024, 720, 30);

    localVideoView.setVisibility(View.VISIBLE);
    //create a videoRenderer based on SurfaceViewRenderer instance
    localRenderer = new VideoRenderer(localVideoView);

    localVideoTrack.addRenderer(localRenderer);

    gotUserMedia = true;

Я буду обновлять вопрос, когда это необходимо (т. е. нужен какой-то другой фрагмент кода). Пожалуйста, помогите, я пытаюсь решить эту проблему уже около недели, и единственный прогресс, которого я достиг, - это научиться управлять голосом:) Заранее благодарю вас

1 2

1 ответ:

Я потратил больше времени, пытаясь сделать это, и, наконец, это сработало, вот что я сделал:

Я попытался проверить, является ли поток null в onResume () после открытия приложения снова из режима сна (режим сна означает, что была нажата кнопка home), но это не было null. после этого я решил посмотреть, что произойдет, если я снова покажу поток в onResume () (но мне нужно было проверить, прежде чем я покажу его, если он равен null, потому что он будет равен null в первый раз, когда я открою приложение). Это все, что я должен был сделать, чтобы ... повторное использование видеопотока снова, на самом деле это позволило мне перевернуть камеру(спереди и сзади), потому что до этого я не мог этого сделать.