用过一些网上提供的方法,我这边使用夜神模拟器测试,结果检测为真机。于是想了一个从cpu架构信息来判断的方法,同时支持x86和arm的应该就是模拟器。代码如下:
//获取 cpu 信息
public static String getCpuInfo() {
String[] abis = new String[]{};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
abis = Build.SUPPORTED_ABIS;
} else {
abis = new String[]{Build.CPU_ABI, Build.CPU_ABI2};
}
StringBuilder abiStr = new StringBuilder();
for (String abi : abis) {
abiStr.append(abi);
abiStr.append(',');
}
return abiStr.toString();
}
// 判断是否模拟器
public static boolean isEmulator() {
String abiStr = getCpuInfo();
if (abiStr != null && abiStr.length() > 0) {
boolean isSupportX86 = false;
boolean isSupportArm = false;
if (abiStr.contains("x86_64") || abiStr.contains("x86")) {
isSupportX86 = true;
}
if (abiStr.contains("armeabi") || abiStr.contains("armeabi-v7a") || abiStr.contains("arm64-v8a")) {
isSupportArm = true;
}
if (isSupportX86 && isSupportArm) {
//同时拥有X86和arm的判断为模拟器。
return true;
}
}
return false;
}
这样就可以正常判断夜神模拟器是否是模拟器了。如有问题,还请指正~