From fb1637006de02f6d1e0f79c09156c07a3c102dc3 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sun, 5 Apr 2020 23:04:04 -0400 Subject: [PATCH] Include screen size details in debuglogs. --- .../logsubmit/LogSectionSystemInfo.java | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) 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 c5a135b3ce..95a2a83cd8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java @@ -5,6 +5,8 @@ import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.view.WindowManager; import androidx.annotation.NonNull; @@ -14,9 +16,10 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import java.util.Arrays; +import java.util.LinkedHashMap; import java.util.LinkedList; -import java.util.List; import java.util.Locale; +import java.util.Map; public class LogSectionSystemInfo implements LogSection { @@ -34,6 +37,10 @@ public class LogSectionSystemInfo implements LogSection { 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(getScreenDensityClass(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(" (") .append(Build.VERSION.INCREMENTAL).append(", ") .append(Build.DISPLAY).append(")\n"); @@ -91,4 +98,40 @@ public class LogSectionSystemInfo implements LogSection { return abis; } } + + private static @NonNull String getScreenResolution(@NonNull Context context) { + DisplayMetrics displayMetrics = new DisplayMetrics(); + WindowManager windowManager = ServiceUtil.getWindowManager(context); + + windowManager.getDefaultDisplay().getMetrics(displayMetrics); + return displayMetrics.widthPixels + "x" + displayMetrics.heightPixels; + } + + private static @NonNull String getScreenDensityClass(@NonNull Context context) { + int density = context.getResources().getDisplayMetrics().densityDpi; + + LinkedHashMap levels = new LinkedHashMap() {{ + put(DisplayMetrics.DENSITY_LOW, "ldpi"); + put(DisplayMetrics.DENSITY_MEDIUM, "mdpi"); + put(DisplayMetrics.DENSITY_HIGH, "hdpi"); + put(DisplayMetrics.DENSITY_XHIGH, "xhdpi"); + put(DisplayMetrics.DENSITY_XXHIGH, "xxhdpi"); + put(DisplayMetrics.DENSITY_XXXHIGH, "xxxhdpi"); + }}; + + String densityString = "unknown"; + + for (Map.Entry entry : levels.entrySet()) { + densityString = entry.getValue(); + if (entry.getKey() > density) { + break; + } + } + + return densityString + " (" + density + ")"; + } + + private static @NonNull String getScreenRefreshRate(@NonNull Context context) { + return String.format(Locale.ENGLISH, "%.2f hz", ServiceUtil.getWindowManager(context).getDefaultDisplay().getRefreshRate()); + } }