android-模拟器检测方法

系统检测:

IMEI 等×

优点:简单方便

缺点:模拟器一般都对这部分进行处理

手机号码×

手机号码在6.0后需要申请权限,敏感度太高,且不一定获取到。

硬件检测

电池☆

对电池电量,充电状态,温度等

一般模拟器对此并未处理,可靠度较高。

需要轮询处理,非及时,未来模拟器有可能对此进行修改。

mac地址×

优点:利用mac地址唯一性

缺点:模拟器可以模拟

wifi ☆

优点:连接wifi的情况下,AS模拟器显示 『wlan0 Link encap:UNSPEC』 未指定网卡类型,而真机情况下是『wlan0 Link encap:Ethernet』以太网。

缺点:只能在使用wifi情况下,非wifi情况下,该值都拿不到。

蓝牙 ☆

模拟器可以模拟拥有蓝牙设备

在未开启蓝牙的情况下, 但是获取到蓝牙的地址和名字为null,部分模拟器可能对此进行处理。

如开启蓝牙,需要权限申请,不建议进行此操作。

手机是可以获取到对应蓝牙相关。

相机×

夜神可以打开笔记本摄像头,台式机暂时不可知。

Gps×

模拟器支持虚拟定位,且6.0以后需要申请权限,海外包也不许定位。

传感器数量 ★★★

模拟器能模拟的传感器数量一般无法超过10,而一般手机传感器数量大于20。

小米mix2s传感器数量为48, 魅族6为16。

夜神模拟器 传感器数量 7。

分别为

Invensense Accelerometer (加速传感器)

Orientation Sensor (方位传感器)

Gyroscope (陀螺仪)

AK8963 Magnetometer (磁场传感器)

Gravity Sensor (重力传感器)

Rotation Vector Sensor(旋转矢量传感器)

Linear Acceleration Sensor(线性加速传感器)

HARDWARE和BOARD×

模拟器会返回自己模拟对象的参数。

特定硬件传感器 ★★★

全部类型见尾部代码。

模拟器暂时无法模仿的传感器

光传感器

Sensor.TYPE_LIGHT

临近传感器

TYPE_PROXIMITY

计步器

TYPE_STEP_COUNTER

预装app数量判断×

部分模拟器系统预装数量也不少,只能仅供参考 。

总结:

建议 首先使用传感器数量和特定传感器进行 可疑性判断

蓝牙, wifi, 电池 可以作为 辅助数据进行监听。

附加传感器类型代码

public String getSensorTypeName(int type) {
        switch (type) {
            case Sensor.TYPE_ACCELEROMETER:
                return "加速度传感器";
            case Sensor.TYPE_GYROSCOPE:
                return "陀螺仪传感器";
            case Sensor.TYPE_LIGHT:
                return "环境光线传感器";
            case Sensor.TYPE_MAGNETIC_FIELD:
                return "电磁场传感器";
            case Sensor.TYPE_ORIENTATION:
                return "方向传感器";
            case Sensor.TYPE_PRESSURE:
                return "压力传感器";
            case Sensor.TYPE_PROXIMITY:
                return "距离传感器";
            case Sensor.TYPE_TEMPERATURE:
                return "温度传感器";
            case Sensor.TYPE_GRAVITY:
                return "重场传感器";
            case Sensor.TYPE_LINEAR_ACCELERATION:
                return "线性加速度传感器";
            case Sensor.TYPE_ROTATION_VECTOR:
                return "旋转矢量传感器";
            case Sensor.TYPE_RELATIVE_HUMIDITY:
                return "湿度传感器";
            case Sensor.TYPE_AMBIENT_TEMPERATURE:
                return "温度传感器";
            case Sensor.TYPE_GAME_ROTATION_VECTOR:
                return "游戏旋转矢量传感器";
            case Sensor.TYPE_STEP_COUNTER:
                return "计步器";
            case Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR:
                return "地磁旋转矢量传感器";
            case Sensor.TYPE_SIGNIFICANT_MOTION:
                return "特殊动作触发传感器";
            default:
                return "未知传感器";
        }
    }

你可能感兴趣的:(android-模拟器检测方法)