diff --git a/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java b/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java index 06c290c249..ac73203dd5 100644 --- a/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java +++ b/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/MediaEngine.java @@ -243,7 +243,10 @@ public class MediaEngine implements VideoDecodeEncodeObserver { return voeRunning || vieRunning; } - public void setRemoteIp(String remoteIp) { this.remoteIp = remoteIp; } + public void setRemoteIp(String remoteIp) { + this.remoteIp = remoteIp; + UpdateSendDestination(); + } public String remoteIp() { return remoteIp; } @@ -331,10 +334,7 @@ public class MediaEngine implements VideoDecodeEncodeObserver { public void setAudioTxPort(int audioTxPort) { this.audioTxPort = audioTxPort; - check(remoteIp != null, - "remoteIP must have been set before setting audio send port"); - check(voe.setSendDestination(audioChannel, audioTxPort, - remoteIp) == 0, "VoE set send destination failed"); + UpdateSendDestination(); } public int audioTxPort() { return audioTxPort; } @@ -539,10 +539,21 @@ public class MediaEngine implements VideoDecodeEncodeObserver { public void setVideoTxPort(int videoTxPort) { this.videoTxPort = videoTxPort; - check(remoteIp != null, - "remoteIP must have been set before setting audio send port"); - check(vie.setSendDestination(videoChannel, videoTxPort, remoteIp) == 0, - "Failed setSendDestination"); + UpdateSendDestination(); + } + + private void UpdateSendDestination() { + if (remoteIp == null) { + return; + } + if (audioTxPort != 0) { + check(voe.setSendDestination(audioChannel, audioTxPort, + remoteIp) == 0, "VoE set send destination failed"); + } + if (videoTxPort != 0) { + check(vie.setSendDestination(videoChannel, videoTxPort, remoteIp) == 0, + "Failed setSendDestination"); + } } public int videoTxPort() { diff --git a/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/SettingsMenuFragment.java b/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/SettingsMenuFragment.java index f6cac96e62..bf436f3272 100644 --- a/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/SettingsMenuFragment.java +++ b/webrtc/examples/android/media_demo/src/org/webrtc/webrtcdemo/SettingsMenuFragment.java @@ -78,9 +78,11 @@ public class SettingsMenuFragment extends Fragment } }); etRemoteIp = (EditText) v.findViewById(R.id.etRemoteIp); - etRemoteIp.setOnClickListener(new View.OnClickListener() { - public void onClick(View editText) { - getEngine().setRemoteIp(etRemoteIp.getText().toString()); + etRemoteIp.setOnFocusChangeListener(new View.OnFocusChangeListener() { + public void onFocusChange(View editText, boolean hasFocus) { + if (!hasFocus) { + getEngine().setRemoteIp(etRemoteIp.getText().toString()); + } } }); // Has to be after remote IP as loopback changes it.