From b9578c21be82ac85116f877ca00c06a9a3383c70 Mon Sep 17 00:00:00 2001 From: Arne Date: Sun, 19 Sep 2021 04:14:57 +0200 Subject: [PATCH] * Avoid description repetition screenshots * dexOptions is no longer used in agp7 * stop agp7 complaining about missing proguard rules * PIP aspect ratio should match video aspect ratio * Revert "Always show Quote as last action" * use androidx ExifInterface to parse rotation * default "auto accept files" to Never for wifi and mobile data connection --- build.gradle | 21 +++----- .../metadata/android/de/changelogs/105.txt | 8 +++ .../metadata/android/en-US/changelogs/105.txt | 7 +++ fastlane/metadata/android/en-US/icon.png | Bin 0 -> 13760 bytes .../android/en-US/images/featureGraphic.png | Bin 0 -> 36816 bytes .../metadata/android/en-US/images/icon.png | Bin 0 -> 13760 bytes gradle/wrapper/gradle-wrapper.properties | 5 +- proguard-rules.pro | 10 ++++ .../siacs/conversations/entities/Account.java | 4 +- .../persistance/FileBackend.java | 41 ++++++++++----- .../conversations/ui/RtpSessionActivity.java | 25 +++++++-- .../conversations/ui/util/Rationals.java | 26 ++++++++++ .../ui/widget/SurfaceViewRenderer.java | 48 ++++++++++++++++++ src/main/res/layout/activity_rtp_session.xml | 4 +- src/main/res/menu/message_context.xml | 8 +-- src/main/res/values/defaults.xml | 4 +- src/main/res/values/strings.xml | 1 + 17 files changed, 171 insertions(+), 41 deletions(-) create mode 100644 fastlane/metadata/android/de/changelogs/105.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/105.txt create mode 100644 fastlane/metadata/android/en-US/icon.png create mode 100644 fastlane/metadata/android/en-US/images/featureGraphic.png create mode 100644 fastlane/metadata/android/en-US/images/icon.png create mode 100644 src/main/java/eu/siacs/conversations/ui/util/Rationals.java create mode 100644 src/main/java/eu/siacs/conversations/ui/widget/SurfaceViewRenderer.java diff --git a/build.gradle b/build.gradle index f8826dd67..d91a6eba5 100644 --- a/build.gradle +++ b/build.gradle @@ -3,10 +3,10 @@ buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.2.2' + classpath 'com.android.tools.build:gradle:7.0.2' } } @@ -33,11 +33,11 @@ repositories { configurations { playstoreImplementation gitImplementation - compile.exclude group: 'org.jetbrains' , module:'annotations' + implementation.exclude group: 'org.jetbrains' , module:'annotations' } dependencies { - implementation 'org.webrtc:google-webrtc:1.0.32006' + implementation 'org.webrtc:google-webrtc:1.+' implementation project(':libs:android-transcoder') playstoreImplementation('com.google.firebase:firebase-messaging:22.0.0') { ///higher versions are causing crashes due to missing project IDs exclude group: 'com.google.firebase', module: 'firebase-core' @@ -63,7 +63,7 @@ dependencies { implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.legacy:legacy-support-v13:1.0.0' implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'androidx.exifinterface:exifinterface:1.3.2' + implementation 'androidx.exifinterface:exifinterface:1.3.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.emoji:emoji:1.1.0' gitImplementation 'androidx.emoji:emoji-appcompat:1.1.0' @@ -112,8 +112,8 @@ android { targetSdkVersion 29 //bversionNameSuffix " beta_(2021-06-28)" // " beta_(XXXX-XX-XX)" // activate for beta versions - versionCode 104 - versionName "1.3.1" + versionCode 105 + versionName "1.3.2" //resConfigs "en" archivesBaseName += "-$versionName" @@ -145,13 +145,6 @@ android { //exclude "lib/armeabi/**" } - dexOptions { - // Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false. - preDexLibraries = preDexEnabled && !travisBuild - javaMaxHeapSize "4g" - jumboMode true - } - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/fastlane/metadata/android/de/changelogs/105.txt b/fastlane/metadata/android/de/changelogs/105.txt new file mode 100644 index 000000000..503fb7de6 --- /dev/null +++ b/fastlane/metadata/android/de/changelogs/105.txt @@ -0,0 +1,8 @@ +* Vermeiden von Wiederholung in der Beschreibung zu Screenshots +* dexOptionen wird nicht mehr in agp7 verwendet +* stoppe agp7 Beschwerde über fehlende Proguard-Regeln +* PIP-Aspektverhältnis soll mit Video-Aspektverhältnis übereinstimmen +* Kehre "Always show Quote as last action" um +* Verwende androidx ExifInterface zur Parse Rotation +* standardmäßig "auto akzeptieren von Dateien" zu "Niemals" für Wi-Fi und mobile Datenverbindung + diff --git a/fastlane/metadata/android/en-US/changelogs/105.txt b/fastlane/metadata/android/en-US/changelogs/105.txt new file mode 100644 index 000000000..e33a9470a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/105.txt @@ -0,0 +1,7 @@ +* Avoid description repetition screenshots +* dexOptions is no longer used in agp7 +* stop agp7 complaining about missing proguard rules +* PIP aspect ratio should match video aspect ratio +* Revert "Always show Quote as last action" +* use androidx ExifInterface to parse rotation +* default "auto accept files" to Never for wifi and mobile data connection diff --git a/fastlane/metadata/android/en-US/icon.png b/fastlane/metadata/android/en-US/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..609d2769201efc9ac6563501e2bedaea4b6a6f6d GIT binary patch literal 13760 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png new file mode 100644 index 0000000000000000000000000000000000000000..fdd80f956ffd9a0a017fcdf4e2b0def0b3978eef GIT binary patch literal 36816 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..609d2769201efc9ac6563501e2bedaea4b6a6f6d GIT binary patch literal 13760 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index da9702f9e..90f60f340 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Sun Sep 19 02:58:45 CEST 2021 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/proguard-rules.pro b/proguard-rules.pro index efb765a26..30b755906 100644 --- a/proguard-rules.pro +++ b/proguard-rules.pro @@ -29,6 +29,16 @@ -dontwarn java.lang.** -dontwarn javax.lang.** +-dontwarn com.android.org.conscrypt.SSLParametersImpl +-dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl +-dontwarn org.bouncycastle.jsse.BCSSLParameters +-dontwarn org.bouncycastle.jsse.BCSSLSocket +-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider +-dontwarn org.openjsse.javax.net.ssl.SSLParameters +-dontwarn org.openjsse.javax.net.ssl.SSLSocket +-dontwarn org.openjsse.net.ssl.OpenJSSE + + -keepclassmembers class eu.siacs.conversations.http.services.** { !transient ; } diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java index a106f8d37..c471cabf3 100644 --- a/src/main/java/eu/siacs/conversations/entities/Account.java +++ b/src/main/java/eu/siacs/conversations/entities/Account.java @@ -5,6 +5,8 @@ import android.database.Cursor; import android.os.SystemClock; import android.util.Log; +import com.google.common.base.Strings; + import org.json.JSONException; import org.json.JSONObject; @@ -248,7 +250,7 @@ public class Account extends AbstractEntity implements AvatarService.Avatarable } public String getHostname() { - return this.hostname == null ? "" : this.hostname; + return Strings.nullToEmpty(this.hostname); } public void setHostname(String hostname) { diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 13334e39d..1361f689e 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -35,6 +35,8 @@ import android.util.DisplayMetrics; import android.util.Log; import android.util.LruCache; +import androidx.exifinterface.media.ExifInterface; + import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.annotation.StringRes; @@ -76,7 +78,6 @@ import eu.siacs.conversations.services.XmppConnectionService; import eu.siacs.conversations.ui.util.Attachment; import eu.siacs.conversations.utils.Compatibility; import eu.siacs.conversations.utils.CryptoHelper; -import eu.siacs.conversations.utils.ExifHelper; import eu.siacs.conversations.utils.FileUtils; import eu.siacs.conversations.utils.FileWriterException; import eu.siacs.conversations.utils.MimeUtils; @@ -805,19 +806,34 @@ public class FileBackend { } } - private int getRotation(File file) { - return getRotation(Uri.parse("file://" + file.getAbsolutePath())); + private int getRotation(final File file) { + try (final InputStream inputStream = new FileInputStream(file)) { + return getRotation(inputStream); + } catch (Exception e) { + return 0; + } } - private int getRotation(Uri image) { - InputStream is = null; - try { - is = mXmppConnectionService.getContentResolver().openInputStream(image); - return ExifHelper.getOrientation(is); - } catch (FileNotFoundException e) { + private int getRotation(final Uri image) { + try (final InputStream is = mXmppConnectionService.getContentResolver().openInputStream(image)) { + return is == null ? 0 : getRotation(is); + } catch (final Exception e) { return 0; - } finally { - close(is); + } + } + + private static int getRotation(final InputStream inputStream) throws IOException { + final ExifInterface exif = new ExifInterface(inputStream); + final int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); + switch (orientation) { + case ExifInterface.ORIENTATION_ROTATE_180: + return 180; + case ExifInterface.ORIENTATION_ROTATE_90: + return 90; + case ExifInterface.ORIENTATION_ROTATE_270: + return 270; + default: + return 0; } } @@ -1773,7 +1789,8 @@ public class FileBackend { this.resId = resId; } - public @StringRes int getResId() { + public @StringRes + int getResId() { return resId; } } diff --git a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java index bbd3b2801..892069d53 100644 --- a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java @@ -1,5 +1,9 @@ package eu.siacs.conversations.ui; +import static java.util.Arrays.asList; +import static eu.siacs.conversations.utils.PermissionUtils.getFirstDenied; +import eu.siacs.conversations.ui.util.Rationals; + import android.Manifest; import android.annotation.SuppressLint; import android.app.PictureInPictureParams; @@ -63,10 +67,8 @@ import eu.siacs.conversations.xmpp.jingle.Media; import eu.siacs.conversations.xmpp.jingle.RtpEndUserState; import me.drakeet.support.toast.ToastCompat; -import static eu.siacs.conversations.utils.PermissionUtils.getFirstDenied; -import static java.util.Arrays.asList; -public class RtpSessionActivity extends XmppActivity implements XmppConnectionService.OnJingleRtpConnectionUpdate { +public class RtpSessionActivity extends XmppActivity implements XmppConnectionService.OnJingleRtpConnectionUpdate, eu.siacs.conversations.ui.widget.SurfaceViewRenderer.OnAspectRatioChanged { public static final String EXTRA_WITH = "with"; public static final String EXTRA_SESSION_ID = "session_id"; @@ -446,12 +448,14 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe public void onStart() { super.onStart(); mHandler.postDelayed(mTickExecutor, CALL_DURATION_UPDATE_INTERVAL); + this.binding.remoteVideo.setOnAspectRatioChanged(this); } @Override public void onStop() { mHandler.removeCallbacks(mTickExecutor); binding.remoteVideo.release(); + binding.remoteVideo.setOnAspectRatioChanged(null); binding.localVideo.release(); final WeakReference weakReference = this.rtpConnectionReference; final JingleRtpConnection jingleRtpConnection = weakReference == null ? null : weakReference.get(); @@ -516,9 +520,12 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe @RequiresApi(api = Build.VERSION_CODES.O) private void startPictureInPicture() { try { + final Rational rational = this.binding.remoteVideo.getAspectRatio(); + final Rational clippedRational = Rationals.clip(rational); + Log.d(Config.LOGTAG, "suggested rational " + rational + ". clipped to " + clippedRational); enterPictureInPictureMode( new PictureInPictureParams.Builder() - .setAspectRatio(new Rational(10, 16)) + .setAspectRatio(clippedRational) .build() ); } catch (final IllegalStateException e) { @@ -526,6 +533,16 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe Log.w(Config.LOGTAG, "unable to enter picture in picture mode", e); } } + @Override + public void onAspectRatioChanged(final Rational rational) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && isPictureInPicture()) { + final Rational clippedRational = Rationals.clip(rational); + Log.d(Config.LOGTAG, "suggested rational after aspect ratio change " + rational + ". clipped to " + clippedRational); + setPictureInPictureParams(new PictureInPictureParams.Builder() + .setAspectRatio(clippedRational) + .build()); + } + } private boolean deviceSupportsPictureInPicture() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { diff --git a/src/main/java/eu/siacs/conversations/ui/util/Rationals.java b/src/main/java/eu/siacs/conversations/ui/util/Rationals.java new file mode 100644 index 000000000..bc469a013 --- /dev/null +++ b/src/main/java/eu/siacs/conversations/ui/util/Rationals.java @@ -0,0 +1,26 @@ +package eu.siacs.conversations.ui.util; + +import android.util.Rational; + +public final class Rationals { + + //between 2.39:1 and 1:2.39 (inclusive). + private static final Rational MIN = new Rational(100,239); + private static final Rational MAX = new Rational(239,100); + + private Rationals() { + + } + + + public static Rational clip(final Rational input) { + if (input.compareTo(MIN) < 0) { + return MIN; + } + if (input.compareTo(MAX) > 0) { + return MAX; + } + return input; + } + +} \ No newline at end of file diff --git a/src/main/java/eu/siacs/conversations/ui/widget/SurfaceViewRenderer.java b/src/main/java/eu/siacs/conversations/ui/widget/SurfaceViewRenderer.java new file mode 100644 index 000000000..818cd60ef --- /dev/null +++ b/src/main/java/eu/siacs/conversations/ui/widget/SurfaceViewRenderer.java @@ -0,0 +1,48 @@ +package eu.siacs.conversations.ui.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.util.Log; +import android.util.Rational; + +import eu.siacs.conversations.Config; + +public class SurfaceViewRenderer extends org.webrtc.SurfaceViewRenderer { + + private Rational aspectRatio = new Rational(1,1); + + private OnAspectRatioChanged onAspectRatioChanged; + + public SurfaceViewRenderer(Context context) { + super(context); + } + + public SurfaceViewRenderer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public void onFrameResolutionChanged(int videoWidth, int videoHeight, int rotation) { + super.onFrameResolutionChanged(videoWidth, videoHeight, rotation); + final int rotatedWidth = rotation != 0 && rotation != 180 ? videoHeight : videoWidth; + final int rotatedHeight = rotation != 0 && rotation != 180 ? videoWidth : videoHeight; + final Rational currentRational = this.aspectRatio; + this.aspectRatio = new Rational(rotatedWidth, rotatedHeight); + Log.d(Config.LOGTAG,"onFrameResolutionChanged("+rotatedWidth+","+rotatedHeight+","+aspectRatio+")"); + if (currentRational.equals(this.aspectRatio) || onAspectRatioChanged == null) { + return; + } + onAspectRatioChanged.onAspectRatioChanged(this.aspectRatio); + } + + public void setOnAspectRatioChanged(final OnAspectRatioChanged onAspectRatioChanged) { + this.onAspectRatioChanged = onAspectRatioChanged; + } + + public Rational getAspectRatio() { + return this.aspectRatio; + } + + public interface OnAspectRatioChanged { + void onAspectRatioChanged(final Rational rational); + } +} \ No newline at end of file diff --git a/src/main/res/layout/activity_rtp_session.xml b/src/main/res/layout/activity_rtp_session.xml index 0af72a372..c991b603b 100644 --- a/src/main/res/layout/activity_rtp_session.xml +++ b/src/main/res/layout/activity_rtp_session.xml @@ -98,7 +98,7 @@ - - + - true true true - 10485760 - 524288 + 0 + 0 0 0 0 diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index cce82f21f..cee7e37d0 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1144,6 +1144,7 @@ The app you used to share this file did not provide enough permissions. Unable to enable video. Do you really want to cancel and delete your recording? + Hide app contents in the app switcher and block screenshots Pause voice message automatically Pause the current voice message when you move your device away from your ear. Plain text document