From e3954ab5e863f694008145c76729c0bb219a1724 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 14 Nov 2022 10:49:55 -0400 Subject: [PATCH] Utilize logic from lottie to determine animation scale. --- .../logsubmit/LogSectionSystemInfo.java | 66 ++++++++++--------- .../stories/StoryFirstTimeNavigationView.kt | 4 +- .../util/ContentResolverExtensions.kt | 17 ----- .../securesms/util/ContextUtil.java | 7 ++ 4 files changed, 43 insertions(+), 51 deletions(-) delete mode 100644 app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java index 70e43107ca..92c3513762 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java @@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.service.webrtc.AndroidTelecomUtil; import org.thoughtcrime.securesms.util.AppSignatureUtil; import org.thoughtcrime.securesms.util.ByteUnit; +import org.thoughtcrime.securesms.util.ContextUtil; import org.thoughtcrime.securesms.util.DeviceProperties; import org.thoughtcrime.securesms.util.NetworkUtil; import org.thoughtcrime.securesms.util.ScreenDensity; @@ -48,42 +49,43 @@ public class LogSectionSystemInfo implements LogSection { final PackageManager pm = context.getPackageManager(); final StringBuilder builder = new StringBuilder(); - builder.append("Time : ").append(System.currentTimeMillis()).append('\n'); - builder.append("Manufacturer : ").append(Build.MANUFACTURER).append("\n"); - builder.append("Model : ").append(Build.MODEL).append("\n"); - builder.append("Product : ").append(Build.PRODUCT).append("\n"); - builder.append("Screen : ").append(getScreenResolution(context)).append(", ") + builder.append("Time : ").append(System.currentTimeMillis()).append('\n'); + builder.append("Manufacturer : ").append(Build.MANUFACTURER).append("\n"); + builder.append("Model : ").append(Build.MODEL).append("\n"); + builder.append("Product : ").append(Build.PRODUCT).append("\n"); + builder.append("Screen : ").append(getScreenResolution(context)).append(", ") .append(ScreenDensity.get(context)).append(", ") .append(getScreenRefreshRate(context)).append("\n"); - builder.append("Font Scale : ").append(context.getResources().getConfiguration().fontScale).append("\n"); - builder.append("Android : ").append(Build.VERSION.RELEASE).append(", API ") + builder.append("Font Scale : ").append(context.getResources().getConfiguration().fontScale).append("\n"); + builder.append("Animation Scale: ").append(ContextUtil.getAnimationScale(context)); + builder.append("Android : ").append(Build.VERSION.RELEASE).append(", API ") .append(Build.VERSION.SDK_INT).append(" (") .append(Build.VERSION.INCREMENTAL).append(", ") .append(Build.DISPLAY).append(")\n"); - builder.append("ABIs : ").append(TextUtils.join(", ", getSupportedAbis())).append("\n"); - builder.append("Memory : ").append(getMemoryUsage()).append("\n"); - builder.append("Memclass : ").append(getMemoryClass(context)).append("\n"); - builder.append("MemInfo : ").append(getMemoryInfo(context)).append("\n"); - builder.append("OS Host : ").append(Build.HOST).append("\n"); - builder.append("RecipientId : ").append(SignalStore.registrationValues().isRegistrationComplete() ? Recipient.self().getId() : "N/A").append("\n"); - builder.append("ACI : ").append(getCensoredAci(context)).append("\n"); - builder.append("Device ID : ").append(SignalStore.account().getDeviceId()).append("\n"); - builder.append("Censored : ").append(ApplicationDependencies.getSignalServiceNetworkAccess().isCensored()).append("\n"); - builder.append("Network Status: ").append(NetworkUtil.getNetworkStatus(context)).append("\n"); - builder.append("Data Saver : ").append(DeviceProperties.getDataSaverState(context)).append("\n"); - builder.append("Play Services : ").append(getPlayServicesString(context)).append("\n"); - builder.append("FCM : ").append(SignalStore.account().isFcmEnabled()).append("\n"); - builder.append("BkgRestricted : ").append(Build.VERSION.SDK_INT >= 28 ? DeviceProperties.isBackgroundRestricted(context) : "N/A").append("\n"); - builder.append("Locale : ").append(Locale.getDefault()).append("\n"); - builder.append("Linked Devices: ").append(TextSecurePreferences.isMultiDevice(context)).append("\n"); - builder.append("First Version : ").append(TextSecurePreferences.getFirstInstallVersion(context)).append("\n"); - builder.append("Days Installed: ").append(VersionTracker.getDaysSinceFirstInstalled(context)).append("\n"); - builder.append("Build Variant : ").append(BuildConfig.BUILD_DISTRIBUTION_TYPE).append(BuildConfig.BUILD_ENVIRONMENT_TYPE).append(BuildConfig.BUILD_VARIANT_TYPE).append("\n"); - builder.append("Emoji Version : ").append(getEmojiVersionString(context)).append("\n"); - builder.append("RenderBigEmoji: ").append(FontUtil.canRenderEmojiAtFontSize(1024)).append("\n"); - builder.append("Telecom : ").append(AndroidTelecomUtil.getTelecomSupported()).append("\n"); - builder.append("User-Agent : ").append(StandardUserAgentInterceptor.USER_AGENT).append("\n"); - builder.append("App : "); + builder.append("ABIs : ").append(TextUtils.join(", ", getSupportedAbis())).append("\n"); + builder.append("Memory : ").append(getMemoryUsage()).append("\n"); + builder.append("Memclass : ").append(getMemoryClass(context)).append("\n"); + builder.append("MemInfo : ").append(getMemoryInfo(context)).append("\n"); + builder.append("OS Host : ").append(Build.HOST).append("\n"); + builder.append("RecipientId : ").append(SignalStore.registrationValues().isRegistrationComplete() ? Recipient.self().getId() : "N/A").append("\n"); + builder.append("ACI : ").append(getCensoredAci(context)).append("\n"); + builder.append("Device ID : ").append(SignalStore.account().getDeviceId()).append("\n"); + builder.append("Censored : ").append(ApplicationDependencies.getSignalServiceNetworkAccess().isCensored()).append("\n"); + builder.append("Network Status : ").append(NetworkUtil.getNetworkStatus(context)).append("\n"); + builder.append("Data Saver : ").append(DeviceProperties.getDataSaverState(context)).append("\n"); + builder.append("Play Services : ").append(getPlayServicesString(context)).append("\n"); + builder.append("FCM : ").append(SignalStore.account().isFcmEnabled()).append("\n"); + builder.append("BkgRestricted : ").append(Build.VERSION.SDK_INT >= 28 ? DeviceProperties.isBackgroundRestricted(context) : "N/A").append("\n"); + builder.append("Locale : ").append(Locale.getDefault()).append("\n"); + builder.append("Linked Devices : ").append(TextSecurePreferences.isMultiDevice(context)).append("\n"); + builder.append("First Version : ").append(TextSecurePreferences.getFirstInstallVersion(context)).append("\n"); + builder.append("Days Installed : ").append(VersionTracker.getDaysSinceFirstInstalled(context)).append("\n"); + builder.append("Build Variant : ").append(BuildConfig.BUILD_DISTRIBUTION_TYPE).append(BuildConfig.BUILD_ENVIRONMENT_TYPE).append(BuildConfig.BUILD_VARIANT_TYPE).append("\n"); + builder.append("Emoji Version : ").append(getEmojiVersionString(context)).append("\n"); + builder.append("RenderBigEmoji : ").append(FontUtil.canRenderEmojiAtFontSize(1024)).append("\n"); + builder.append("Telecom : ").append(AndroidTelecomUtil.getTelecomSupported()).append("\n"); + builder.append("User-Agent : ").append(StandardUserAgentInterceptor.USER_AGENT).append("\n"); + builder.append("App : "); try { builder.append(pm.getApplicationLabel(pm.getApplicationInfo(context.getPackageName(), 0))) .append(" ") @@ -97,7 +99,7 @@ public class LogSectionSystemInfo implements LogSection { } catch (PackageManager.NameNotFoundException nnfe) { builder.append("Unknown\n"); } - builder.append("Package : ").append(BuildConfig.APPLICATION_ID).append(" (").append(getSigningString(context)).append(")"); + builder.append("Package : ").append(BuildConfig.APPLICATION_ID).append(" (").append(getSigningString(context)).append(")"); return builder; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt index 6a17592d3e..a0fba2c4d6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryFirstTimeNavigationView.kt @@ -19,7 +19,7 @@ import com.bumptech.glide.request.target.Target import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.blurhash.BlurHash import org.thoughtcrime.securesms.mms.GlideApp -import org.thoughtcrime.securesms.util.areSystemAnimationsDisabled +import org.thoughtcrime.securesms.util.ContextUtil import org.thoughtcrime.securesms.util.visible class StoryFirstTimeNavigationView @JvmOverloads constructor( @@ -119,7 +119,7 @@ class StoryFirstTimeNavigationView @JvmOverloads constructor( } private fun startLottieAnimations() { - if (context.contentResolver.areSystemAnimationsDisabled()) { + if (ContextUtil.getAnimationScale(context) == 0f) { return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt deleted file mode 100644 index d7ae0cc351..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ContentResolverExtensions.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.thoughtcrime.securesms.util - -import android.animation.ValueAnimator -import android.content.ContentResolver -import android.os.Build -import android.provider.Settings - -fun ContentResolver.areSystemAnimationsDisabled(): Boolean { - return if (Build.VERSION.SDK_INT >= 26) { - !ValueAnimator.areAnimatorsEnabled() - } else { - val durationScale = Settings.Global.getFloat(this, Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f) - val transitionScale = Settings.Global.getFloat(this, Settings.Global.TRANSITION_ANIMATION_SCALE, 1.0f) - - !(durationScale > 0f && transitionScale > 0f) - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ContextUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/ContextUtil.java index fc0d7d68f7..63cccc66da 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ContextUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ContextUtil.java @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.util; import android.content.Context; import android.graphics.drawable.Drawable; +import android.provider.Settings; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; @@ -16,4 +17,10 @@ public final class ContextUtil { return Objects.requireNonNull(AppCompatResources.getDrawable(context, drawable)); } + /** + * Implementation "borrowed" from com.airbnb.lottie.utils.Utils#getAnimationScale(android.content.Context) + */ + public static float getAnimationScale(Context context) { + return Settings.Global.getFloat(context.getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f); + } }