Android判断是否为模拟器(实测夜神通过)

news/2024/10/22 7:32:18/

1.拨打电话和设备参数

 /*** 检测当前设备是否是模拟器.*/public static boolean checkEmulator(Context context) {String url = "tel:" + "123456";Intent intent = new Intent();intent.setData(Uri.parse(url));intent.setAction(Intent.ACTION_DIAL);// 是否可以处理跳转到拨号的 Intentboolean canResolveIntent = intent.resolveActivity(context.getPackageManager()) != null;String fingerprint = Build.FINGERPRINT;//唯一标识此版本的字符串。String model = Build.MODEL;//手机型号String serial = Build.SERIAL;//硬件序列号,安卓8.1废弃.return fingerprint.startsWith("generic")|| fingerprint.toLowerCase().contains("vbox")|| fingerprint.toLowerCase().contains("test-keys")|| model.contains("google_sdk")|| model.contains("Emulator")|| model.contains("Android SDK built for x86")|| serial.equalsIgnoreCase("unknown")|| serial.equalsIgnoreCase("android")|| Build.MANUFACTURER.contains("Genymotion")//制造商|| (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))|| "google_sdk".equals(Build.PRODUCT)//整体产品的名称|| ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkOperatorName().toLowerCase().equals("android")|| !canResolveIntent;}

2.光传感器

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

3.蓝牙

  /**判断蓝牙是否有效来判断是否为模拟器*返回:true 为模拟器*/public static 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;}}}

4.CPU

 /**根据CPU是否为电脑来判断是否为模拟器*返回:true 为模拟器*/public static boolean checkIsNotRealPhone() {String cpuInfo = readCpuInfo();if ((cpuInfo.contains("intel") || cpuInfo.contains("amd"))) {return true;}return false;}/**根据CPU是否为电脑来判断是否为模拟器(子方法)*返回:String*/public static String readCpuInfo() {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;}


http://www.ppmy.cn/news/313340.html

相关文章

计算机 屏幕卡住,电脑卡屏是怎么回事 电脑屏幕死机或卡死处理方法

电脑在我们使用过程中会莫名其妙的卡住,我们怎么使用鼠标操作都不行,这就是我们所说卡屏,那么遇到电脑卡屏是怎么回事呢?下面就让小编为大家介绍一下电脑屏幕死机或卡死处理的办法。 处理方法: 1、屏幕卡死的时候,屏幕…

Android Studio的模拟器卡死、死机问题解决方法

目前使用的Android Studio 4.2.1,创建了一个Pixel 4 API29的X86架构模拟器,运行时经常会卡死在某个界面,如下: 导致无法安装测试app,之前的处理方式都是直接删掉、新建模拟器,今天在网上搜索了一下&#xf…

电脑总是死机是怎么回事

在办公室,大家一般都遇到过自己或者同事的电脑死机过,这也是一种见怪不怪的事情了,话又说回来了,造成电脑死机的原因是什么?应该如何避免这种情况的发生呢?好系统重装助手针对这一问题来为大家分析一下原因…

AS自带安卓模拟器无法启动,一直黑屏解决方法

AS自带安卓模拟器无法启动,一直黑屏 问题描述:使用Android Studio新创建的模拟器可以正常使用,当重新启动Android Studio之后,模拟器可以启动,但一直黑屏(也没有显示Android字样) 我自己总结了…

计算机卡住了怎样恢复,电脑频繁假死怎么办 电脑死机数据恢复

原标题:"手把手教你电脑假死怎么办"关于电脑问题教程分享。 - 来源:191路由网 - 编辑:小元。 小伙伴们,当电脑出现假死现象时你们知道该如何处理吗?估计大多数的人都是清楚,不知道的话,也不要慌张哦&#xf…

关于Android Studio关闭模拟器死机解决方案的尝试

关于Android Studio关闭模拟器死机解决方案的尝试 背景介绍尝试一、切换到独显![转自https://blog.csdn.net/hx7013/article/details/77184594](https://img-blog.csdn.net/20180402103744898?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h4NzAxMw/font/5a6L5L2T/fontsiz…

电脑死机蓝屏怎么办 电脑死机蓝屏原因介绍【解决方法】

引起电脑蓝屏的原因有很多,如电脑超频过度引起电脑蓝屏,内存条接触不良或内存损坏导致电脑蓝屏,硬盘出现故障导致电脑蓝屏,以及安装的软件存在不兼导致电脑蓝屏等。本文将逐一介绍分析出现电脑蓝屏现象的原因与解决办法。 一、安装…

Android studio : 模拟器 真机 运行失败(mac电脑)

出现问题如下: 1:运行模拟器的时候:emulator - 5570 disconnected 清除adb.exe:adb kill-server 重启adb.exe :adb start-server *或者后边有:device supports but apk only supports armeabi-v7a,x86…