Blacklist Pixel4 from CameraX (#319)

* Blacklist Pixel4 from CameraX

* Create isSupported method
master
Alex Hart 2019-10-28 13:07:28 -03:00 committed by GitHub
parent 3c4efdd8f9
commit 70636fb4a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 2 deletions

View File

@ -57,6 +57,8 @@ import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.logging.PersistentLogger;
import org.thoughtcrime.securesms.logging.UncaughtExceptionLogger;
import org.thoughtcrime.securesms.mediasend.LegacyCameraModels;
import org.thoughtcrime.securesms.mediasend.camerax.CameraXUtil;
import org.thoughtcrime.securesms.migrations.ApplicationMigrations;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.notifications.NotificationChannels;
@ -374,7 +376,7 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi
@SuppressLint("RestrictedApi")
private void initializeCameraX() {
if (Build.VERSION.SDK_INT >= 21) {
if (CameraXUtil.isSupported()) {
new Thread(() -> {
try {
CameraX.init(this, Camera2AppConfig.create(this));

View File

@ -7,13 +7,17 @@ import androidx.annotation.NonNull;
import androidx.camera.core.CameraX;
import androidx.fragment.app.Fragment;
import org.thoughtcrime.securesms.mediasend.camerax.CameraXUtil;
import java.io.FileDescriptor;
import java.util.HashSet;
import java.util.Set;
public interface CameraFragment {
@SuppressLint("RestrictedApi")
static Fragment newInstance() {
if (Build.VERSION.SDK_INT >= 21 && CameraX.isInitialized()) {
if (CameraXUtil.isSupported() && CameraX.isInitialized()) {
return CameraXFragment.newInstance();
} else {
return Camera1Fragment.newInstance();

View File

@ -0,0 +1,20 @@
package org.thoughtcrime.securesms.mediasend;
import android.os.Build;
import java.util.HashSet;
import java.util.Set;
public final class LegacyCameraModels {
private static final Set<String> LEGACY_MODELS = new HashSet<String>() {{
add("Pixel 4");
add("Pixel 4 XL");
}};
private LegacyCameraModels() {
}
public static boolean isLegacyCameraModel() {
return LEGACY_MODELS.contains(Build.MODEL);
}
}

View File

@ -25,6 +25,8 @@ import androidx.camera.core.ImageCapture;
import androidx.camera.core.ImageProxy;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mediasend.LegacyCameraModels;
import org.thoughtcrime.securesms.migrations.LegacyMigrationJob;
import org.thoughtcrime.securesms.util.Stopwatch;
import java.io.ByteArrayOutputStream;
@ -80,6 +82,10 @@ public class CameraXUtil {
return new ImageResult(data, width, height);
}
public static boolean isSupported() {
return Build.VERSION.SDK_INT >= 21 && !LegacyCameraModels.isLegacyCameraModel();
}
public static int toCameraDirectionInt(@Nullable CameraX.LensFacing facing) {
if (facing == CameraX.LensFacing.FRONT) {
return Camera.CameraInfo.CAMERA_FACING_FRONT;