Recently, I came across this Stackoverflow post describing how to check if the device running an app is an emulator. The solution described checking the device fingerprint, model, and brand:
public static boolean isEmulator() {
return 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);
}
Now I was wondering if there is a way to get around this. If I have a standard Genymotion device, how can I want to mask my emulation's fingerprint, model, and brand?
Now if you're wondering why I want to do this, it's simply to try to achieve a genuine device experience on an emulator, especially on apps that refuse to work on emulators.