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 ответ:
Я потратил больше времени, пытаясь сделать это, и, наконец, это сработало, вот что я сделал:
Я попытался проверить, является ли поток null в onResume () после открытия приложения снова из режима сна (режим сна означает, что была нажата кнопка home), но это не было null. после этого я решил посмотреть, что произойдет, если я снова покажу поток в onResume () (но мне нужно было проверить, прежде чем я покажу его, если он равен null, потому что он будет равен null в первый раз, когда я открою приложение). Это все, что я должен был сделать, чтобы ... повторное использование видеопотока снова, на самом деле это позволило мне перевернуть камеру(спереди и сзади), потому что до этого я не мог этого сделать.