Java 后台服务中的Android webRTC视频呼叫

Java 后台服务中的Android webRTC视频呼叫,java,android,service,webrtc,webrtc-android,Java,Android,Service,Webrtc,Webrtc Android,如果这个问题已经被问到了,请原谅,我找不到我案件的答案 所以,我有一个Android应用程序,具有语音和视频通话功能。我用webRTC来做这个 我能够使语音和视频通话在活动中完美工作,但现在我希望在用户退出CallActivity并返回ChatActivity(例如发送文件/链接/照片)时保持通话运行 我设法使语音通话在后台服务中完美运行,但视频通话无法按预期工作 即使正在播放视频曲目中的音频,也不会显示远程视频 这是我的后台服务代码: @Override public void

如果这个问题已经被问到了,请原谅,我找不到我案件的答案

所以,我有一个Android应用程序,具有语音和视频通话功能。我用webRTC来做这个

我能够使语音和视频通话在活动中完美工作,但现在我希望在用户退出CallActivity并返回ChatActivity(例如发送文件/链接/照片)时保持通话运行

我设法使语音通话在后台服务中完美运行,但视频通话无法按预期工作

即使正在播放视频曲目中的音频,也不会显示远程视频

这是我的后台服务代码:

@Override
        public void onAddStream(MediaStream mediaStream) {
            if (mediaStream.videoTracks.size() > Constants.ONE || mediaStream.audioTracks.size() > Constants.ONE) {
                return;
            }

            //check for video track, means this is a video call
            if (!isAudioCall && mediaStream.videoTracks.size() > Constants.ZERO) {
                remoteVideoTrack = mediaStream.videoTracks.get(Constants.ZERO);
                CallActivityNew.remoteVideoTrack = remoteVideoTrack;
                try {
                    localAudioTrack.setEnabled(true);

                    //Now ask the UI to display the video track
                    sendOrderToActivity(Constants.START_REMOTE_VIDEO, null);
                } catch (Exception ignored) {}
            } else if (mediaStream.audioTracks.size() > Constants.ZERO) {
                //Means this is a Voice call, only audio tracks available
                remoteAudioTrack = mediaStream.audioTracks.get(Constants.ZERO);
                try {
                    localAudioTrack.setEnabled(true);
                    remoteAudioTrack.setEnabled(true);
                } catch (Exception ignored) {}
            }
        }
在我的呼叫活动代码下面:

case Constants.START_REMOTE_VIDEO: {
                if (remoteVideoView == null) {
                    remoteVideoView = findViewById(R.id.remote_gl_surface_view);
                }
                remoteVideoView.init(eglBaseContext, null);
                remoteVideoView.setEnableHardwareScaler(true);
                remoteVideoView.setMirror(true);
                remoteVideoView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
                remoteVideoView.setZOrderMediaOverlay(true);

                //Apply video track to the Surface View in order to display it
                remoteVideoTrack.addSink(remoteVideoView);

                //now enable local video track
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //now enable local video track
                        remoteVideoTrack.setEnabled(true);
                    }
                }, Constants.TIME_THREE_HUNDRED_MILLIS);

                setSpeakerphoneOn(false);
                break;
            }
我正在将订单从服务发送到活动,“case Constants.START\u REMOTE\u VIDEO”在收到服务订单后开始工作

我看不出问题出在哪里,为什么我只听到声音,但远程视频无法开始显示


提前感谢您的帮助。

经过长时间的测试,我发现我的代码工作得很好,我只是忘记了将视图可见性从
“GONE”
更改为
“VISIBLE”

是的,这就是解决方案,我发誓xD

坦白说,我遇到了一个非常类似的问题;)你能详细说明一下你在说什么观点吗?你好。我说的是在布局(xml)文件中定义的“remoteVideoView”。我们使用addSink()函数与remoteVideoTrack链接的那一个。您是否使用openVidu服务器进行gideo调用?为了进行测试,我使用了免费的google webrtc服务器。然后我在Android上使用了TwilioSDK,这是一项付费服务,服务器稳定,使用方便。我的设置SCALE\u ASPECT\u FIT不起作用,它仍然是满的,可以。你能帮忙吗?