Change summary
src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java | 1
src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java | 30
2 files changed, 25 insertions(+), 6 deletions(-)
Detailed changes
@@ -537,6 +537,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
@Override
protected void onNewIntent(final Intent intent) {
+ super.onNewIntent(intent);
if (isViewOrShareIntent(intent)) {
if (xmppConnectionService != null) {
clearPendingViewIntent();
@@ -458,18 +458,21 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
@Override
public void onBackPressed() {
+ if (isConnected()) {
+ if (switchToPictureInPicture()) {
+ return;
+ }
+ } else {
+ endCall();
+ }
super.onBackPressed();
- endCall();
}
@Override
public void onUserLeaveHint() {
super.onUserLeaveHint();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && deviceSupportsPictureInPicture()) {
- if (shouldBePictureInPicture()) {
- startPictureInPicture();
- return;
- }
+ if (switchToPictureInPicture()) {
+ return;
}
//TODO apparently this method is not getting called on Android 10 when using the task switcher
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)
private void startPictureInPicture() {
try {