Lo más probable es que no exista un método que garantice el resultado correcto.
Una común parece ser:
Build.FINGERPRINT.startsWith("generic")
El uso contains
lugar de startsWith
en el caso de Android x86. Sin embargo, esto no es lo suficientemente confiable. Los dispositivos Android con ROM personalizada (como Cyanogenmod) pueden devolver falsos positivos.
- ¿Cómo funcionan los ultramaratones?
- ¿Cuál es el ultramaratón más fácil? ¿Qué es lo más difícil?
- ¿Cuánto tiempo de progreso puede esperar al entrenar 12 semanas para una carrera de 5 km?
- Cuando entrena maratón, ¿debo trabajar para mejorar la cadencia o la longitud de la zancada, para aumentar la velocidad?
- ¿Es posible que una niña de 16 años baje un tiempo de 6:13 1600 m a 4:55 en exactamente un año?
Entonces, lo que puede hacer es usar un método como el siguiente con múltiples comprobaciones:
importar android.os.Build;
/ *** Métodos de utilidad relacionados con dispositivos físicos y emuladores *** /
DeviceUtil de clase pública {
público estático booleano isEmulator () {
return Build.FINGERPRINT.startsWith (“genérico”)
|| Build.FINGERPRINT.startsWith (“desconocido”)
|| Build.MODEL.contains (“google_sdk”)
|| Build.MODEL.contains (“Emulador”)
|| Build.MODEL.contains (“Android SDK construido para x86”)
|| Build.MANUFACTURER.contains (“Genymotion”)
|| (Build.BRAND.startsWith (“genérico”)
&& Build.DEVICE.startsWith (“genérico”))
|| “google_sdk” .equals (Build.PRODUCT);
}
}
Los emuladores de Android generalmente tienen init.goldfish.rc
en su directorio raíz, puede verificar ese archivo o verificar algo similar como a continuación:
isEmulator = Build.HARDWARE.contains("golfdish")
Fuente: Stackoverflow, Github