diff --git a/src/org/linphone/IncallActivity.java b/src/org/linphone/IncallActivity.java index 135538a3c..0687d8388 100644 --- a/src/org/linphone/IncallActivity.java +++ b/src/org/linphone/IncallActivity.java @@ -273,6 +273,10 @@ public class IncallActivity extends AbstractCalleesActivity implements lc().pauseCall(call); } else { ((Checkable) v).setChecked(true); + List pausedCalls = LinphoneUtils.getCallsInState(lc(), Arrays.asList(State.Paused)); + if (pausedCalls.size() == 1) { + lc().resumeCall(pausedCalls.get(0)); + } } break; case R.id.conf_simple_video: diff --git a/src/org/linphone/LinphoneUtils.java b/src/org/linphone/LinphoneUtils.java index 86d16e9f5..14da19f47 100644 --- a/src/org/linphone/LinphoneUtils.java +++ b/src/org/linphone/LinphoneUtils.java @@ -26,8 +26,11 @@ import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Set; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneCall; @@ -177,16 +180,21 @@ public final class LinphoneUtils { return false; } - public static final List getRunningOrPausedCalls(LinphoneCore lc) { + public static final List getCallsInState(LinphoneCore lc, Collection states) { List foundCalls = new ArrayList(); for (LinphoneCall call : getLinphoneCalls(lc)) { - State state = call.getState(); - if (state == State.Paused || state == State.PausedByRemote || state == State.StreamsRunning) { + if (states.contains(call.getState())) { foundCalls.add(call); } } return foundCalls; } + public static final List getRunningOrPausedCalls(LinphoneCore lc) { + return getCallsInState(lc, Arrays.asList( + State.Paused, + State.PausedByRemote, + State.StreamsRunning)); + } public static final int countConferenceCalls(LinphoneCore lc) { int count = lc.getConferenceSize();