From 74127d44d0be536ca1d39bf165b7676886aee700 Mon Sep 17 00:00:00 2001 From: likan999 Date: Thu, 22 Jun 2017 00:47:15 -0700 Subject: [PATCH] More accurate condition to detect emulator Previous commit, 6f39f9a, tries to fix the color issue for emulator. But the condition for detecting emulator is incomplete, e.g. it stops working for emulators using Google Play, whose Build.BRAND=="google". https://stackoverflow.com/a/21505193 shows a more accurate condition for this. --- .../java/generator/src/java/android+JavaCameraView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/java/generator/src/java/android+JavaCameraView.java b/modules/java/generator/src/java/android+JavaCameraView.java index 2d972c9ce6..a7c72e43f0 100644 --- a/modules/java/generator/src/java/android+JavaCameraView.java +++ b/modules/java/generator/src/java/android+JavaCameraView.java @@ -147,7 +147,14 @@ public class JavaCameraView extends CameraBridgeViewBase implements PreviewCallb Size frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height); /* Image format NV21 causes issues in the Android emulators */ - if (Build.BRAND.equalsIgnoreCase("generic") || Build.BRAND.equalsIgnoreCase("Android")) + if (Build.FINGERPRINT.startsWith("generic") + || Build.FINGERPRINT.startsWith("unknown") + || Build.MODEL.contains("google_sdk") + || Build.MODEL.contains("Emulator") + || Build.MODEL.contains("Android SDK built for x86") + || Build.MANUFACTURER.contains("Genymotion") + || (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic")) + || "google_sdk".equals(Build.PRODUCT)) params.setPreviewFormat(ImageFormat.YV12); // "generic" or "android" = android emulator else params.setPreviewFormat(ImageFormat.NV21);