diff --git a/app/src/main/java/org/linphone/LinphoneManager.java b/app/src/main/java/org/linphone/LinphoneManager.java index bb0103b36..451ec9fee 100644 --- a/app/src/main/java/org/linphone/LinphoneManager.java +++ b/app/src/main/java/org/linphone/LinphoneManager.java @@ -795,7 +795,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou public void setHandsetMode(Boolean on) { if (mLc.isIncomingInvitePending() && on) { handsetON = true; - mLc.acceptCall(mLc.getCurrentCall()); + acceptCall(mLc.getCurrentCall()); LinphoneActivity.instance().startIncallActivity(); } else if (on && CallActivity.isInstanciated()) { handsetON = true; @@ -1173,7 +1173,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou public void run() { if (mLc != null) { if (mLc.getCallsNb() > 0) { - mLc.acceptCall(call); + acceptCall(call); if (LinphoneManager.getInstance() != null) { LinphoneManager.getInstance().routeAudioToReceiver(); if (LinphoneActivity.instance() != null) @@ -1465,12 +1465,22 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou return reinviteWithVideo(); } - public boolean acceptCallIfIncomingPending() throws CoreException { - if (mLc.isIncomingInvitePending()) { - mLc.acceptCall(mLc.getCurrentCall()); - return true; + public boolean acceptCall(Call call) { + if (call == null) return false; + + CallParams params = LinphoneManager.getLc().createCallParams(call); + + boolean isLowBandwidthConnection = !LinphoneUtils.isHighBandwidthConnection(LinphoneService.instance().getApplicationContext()); + + if (params != null) { + params.enableLowBandwidth(isLowBandwidthConnection); + params.setRecordFile(LinphoneUtils.getCallRecordingFilename(getContext(), call.getRemoteAddress())); + } else { + Log.e("Could not create call params for call"); + return false; } - return false; + + return acceptCallWithParams(call, params); } public boolean acceptCallWithParams(Call call, CallParams params) { diff --git a/app/src/main/java/org/linphone/call/CallIncomingActivity.java b/app/src/main/java/org/linphone/call/CallIncomingActivity.java index 1d7b5aec6..05212d482 100644 --- a/app/src/main/java/org/linphone/call/CallIncomingActivity.java +++ b/app/src/main/java/org/linphone/call/CallIncomingActivity.java @@ -246,17 +246,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity { } alreadyAcceptedOrDeniedCall = true; - CallParams params = LinphoneManager.getLc().createCallParams(mCall); - - boolean isLowBandwidthConnection = !LinphoneUtils.isHighBandwidthConnection(LinphoneService.instance().getApplicationContext()); - - if (params != null) { - params.enableLowBandwidth(isLowBandwidthConnection); - } else { - Log.e("Could not create call params for call"); - } - - if (params == null || !LinphoneManager.getInstance().acceptCallWithParams(mCall, params)) { + if (!LinphoneManager.getInstance().acceptCall(mCall)) { // the above method takes care of Samsung Galaxy S Toast.makeText(this, R.string.couldnt_accept_call, Toast.LENGTH_LONG).show(); } else { diff --git a/app/src/main/java/org/linphone/views/CallButton.java b/app/src/main/java/org/linphone/views/CallButton.java index e53a660b8..db9201030 100644 --- a/app/src/main/java/org/linphone/views/CallButton.java +++ b/app/src/main/java/org/linphone/views/CallButton.java @@ -58,38 +58,31 @@ public class CallButton extends ImageView implements OnClickListener, AddressAwa } public void onClick(View v) { - try { - if (!LinphoneManager.getInstance().acceptCallIfIncomingPending()) { - if (mAddress.getText().length() > 0) { - LinphoneManager.getInstance().newOutgoingCall(mAddress); - } else { - if (LinphonePreferences.instance().isBisFeatureEnabled()) { - CallLog[] logs = LinphoneManager.getLc().getCallLogs(); - CallLog log = null; - for (CallLog l : logs) { - if (l.getDir() == Call.Dir.Outgoing) { - log = l; - break; - } - } - if (log == null) { - return; - } - - ProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig(); - if (lpc != null && log.getToAddress().getDomain().equals(lpc.getDomain())) { - mAddress.setText(log.getToAddress().getUsername()); - } else { - mAddress.setText(log.getToAddress().asStringUriOnly()); - } - mAddress.setSelection(mAddress.getText().toString().length()); - mAddress.setDisplayedName(log.getToAddress().getDisplayName()); + if (mAddress.getText().length() > 0) { + LinphoneManager.getInstance().newOutgoingCall(mAddress); + } else { + if (LinphonePreferences.instance().isBisFeatureEnabled()) { + CallLog[] logs = LinphoneManager.getLc().getCallLogs(); + CallLog log = null; + for (CallLog l : logs) { + if (l.getDir() == Call.Dir.Outgoing) { + log = l; + break; } } + if (log == null) { + return; + } + + ProxyConfig lpc = LinphoneManager.getLc().getDefaultProxyConfig(); + if (lpc != null && log.getToAddress().getDomain().equals(lpc.getDomain())) { + mAddress.setText(log.getToAddress().getUsername()); + } else { + mAddress.setText(log.getToAddress().asStringUriOnly()); + } + mAddress.setSelection(mAddress.getText().toString().length()); + mAddress.setDisplayedName(log.getToAddress().getDisplayName()); } - } catch (CoreException e) { - LinphoneManager.getInstance().terminateCall(); - onWrongDestinationAddress(); } }