简单粗暴识别工作室Android识别模拟器

最近有项目需要设备模拟器,此贴用来记录我识别模拟器的方法:

1、通过能否打电话来判断模拟器:

String url = "tel:" + "10086";
        Intent intent = new Intent();
        intent.setData(Uri.parse(url));
        intent.setAction(Intent.ACTION_DIAL);
        // 隐示意图跳转到打电话界面 Intent (检查是否存在)
        boolean canResolverIntent = intent.resolveActivity(context.getPackageManager()) != null;

canResolverIntent ==true,可以打电话,判断为真机。

目前主流模拟器都没有打电话这个功能:

简单粗暴识别工作室Android识别模拟器_第1张图片

这个来判断基本可以ban掉很多模拟器了

2、通过cpu来判断:

基本x86可以判定为模拟器

Build.MODEL.contains("x86")
android.os.Build.CPU_ABI.contains("x86")

3、第三通传感器来判断:例如:光传感器,方向传感器。

/**
 * 判断是否存在光传感器来判断是否为模拟器 部分真机也不存在温度和压力传感器。其余传感器模拟器也存在。
 *
 * @return true 为模拟器
 */
public int notHasLightSensorManager(Context context) {
    SensorManager sensorManager = (SensorManager) context
            .getSystemService(Context.SENSOR_SERVICE);
    Sensor sensor8 = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); // 光
    if (null == sensor8) {
        Log.i("", "光传感器判定为false");
        return 0;
    } else {
        Log.i("", "光传感器判定为true");
        return 1;
    }
}

 

你可能感兴趣的:(简单粗暴识别工作室Android识别模拟器)