back button should not end call if call is connected. fixes #3975

This commit is contained in:
Daniel Gultsch 2021-01-23 18:42:34 +01:00
parent bc97d0b0bb
commit 619af9c6c5
2 changed files with 25 additions and 6 deletions

View file

@ -537,6 +537,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
@Override @Override
protected void onNewIntent(final Intent intent) { protected void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
if (isViewOrShareIntent(intent)) { if (isViewOrShareIntent(intent)) {
if (xmppConnectionService != null) { if (xmppConnectionService != null) {
clearPendingViewIntent(); clearPendingViewIntent();

View file

@ -458,18 +458,21 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
@Override @Override
public void onBackPressed() { public void onBackPressed() {
if (isConnected()) {
if (switchToPictureInPicture()) {
return;
}
} else {
endCall();
}
super.onBackPressed(); super.onBackPressed();
endCall();
} }
@Override @Override
public void onUserLeaveHint() { public void onUserLeaveHint() {
super.onUserLeaveHint(); super.onUserLeaveHint();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && deviceSupportsPictureInPicture()) { if (switchToPictureInPicture()) {
if (shouldBePictureInPicture()) { return;
startPictureInPicture();
return;
}
} }
//TODO apparently this method is not getting called on Android 10 when using the task switcher //TODO apparently this method is not getting called on Android 10 when using the task switcher
final boolean emptyReference = rtpConnectionReference == null || rtpConnectionReference.get() == null; final boolean emptyReference = rtpConnectionReference == null || rtpConnectionReference.get() == null;
@ -478,6 +481,21 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
} }
} }
private boolean isConnected() {
final JingleRtpConnection connection = this.rtpConnectionReference != null ? this.rtpConnectionReference.get() : null;
return connection != null && connection.getEndUserState() == RtpEndUserState.CONNECTED;
}
private boolean switchToPictureInPicture() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && deviceSupportsPictureInPicture()) {
if (shouldBePictureInPicture()) {
startPictureInPicture();
return true;
}
}
return false;
}
@RequiresApi(api = Build.VERSION_CODES.O) @RequiresApi(api = Build.VERSION_CODES.O)
private void startPictureInPicture() { private void startPictureInPicture() {
try { try {