android 判断模拟器
我查到的资料有很多,但是人懒,没有一个一个去试。选了三种,实现了判断的功能,算是站在巨人的肩上完成的。
啦啦第一种:判断蓝牙
虽然网上说很多模拟器都能屏蔽这个,但是天真的我去试了一下,妈蛋。为什么我下的模拟器都告诉我没有蓝牙,难道是我太帅了。上代码:
/**
* 判断蓝牙是否有效来判断是否为模拟器
*
* @return true 为模拟器
*/
public boolean notHasBlueTooth() {
BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter();
if (ba ==null) {
return true;
}else {
// 如果有蓝牙不一定是有效的。获取蓝牙名称,若为null 则默认为模拟器
String name = ba.getName();
if (TextUtils.isEmpty(name)) {
return true;
}else {
return false;
}
}
}
以上就是判断蓝牙的代码。当返回false时,那就是真机了,当为true时,就是模拟器了,后面雷同。我很懒的。
第二种:判断光传感器
话不多说,上代码。
/**
* 判断是否存在光传感器来判断是否为模拟器
* 部分真机也不存在温度和压力传感器。其余传感器模拟器也存在。
* @return true 为模拟器
*/
public static BooleannotHasLightSensorManager(Context context) {
SensorManager sensorManager = (SensorManager) context.getSystemService(SENSOR_SERVICE);
Sensor sensor8 = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //光
if (null == sensor8) {
return true;
}else {
return false;
}
}
第三种:判断CPU
/**
* 判断cpu是否为电脑来判断 模拟器
*
* @return true 为模拟器
*/
public static boolean checkIsNotRealPhone() {
String cpuInfo =readCpuInfo();
if ((cpuInfo.contains("intel") || cpuInfo.contains("amd"))) {
return true;
}
return false;
}
//用到的方法
public static StringreadCpuInfo() {
String result ="";
try {
String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
ProcessBuilder cmd =new ProcessBuilder(args);
Process process = cmd.start();
StringBuffer sb =new StringBuffer();
String readLine ="";
BufferedReader responseReader =new BufferedReader(new InputStreamReader(process.getInputStream(), "utf-8"));
while ((readLine = responseReader.readLine()) !=null) {
sb.append(readLine);
}
responseReader.close();
result = sb.toString().toLowerCase();
}catch (IOException ex) {
}
return result;
}
好了,代码就到这里了。
我测试了一下:
1.逍遥模拟器 All 2. 蓝叠模拟器 All 3. 夜神模拟器 cpu
4. 靠谱助手 All5. 天天模拟器 cpu 6. 海马模拟器All 7.雷电模拟器 All
这些里面 夜神和天天的都跳过了CPU的验证,可能是我查的资料有问题吧。
我要说一声上面的代码不是原创,准确的说,这是我复制的,写这篇文章,只是为了记录。怕以后忘了,所以不要打赏,如果觉得有用可以给个小心心的。
拜谢。