我的要求是调用函数的特定变体(如果它是Emulator和不同的函数) 变种是硬件。
答案 0 :(得分:0)
我使用此代码(您也可以获取代码来提取序列号)
public static String getDeviceSerialNumber(Context ctx)
{
String phoneSerial = null;
try
{
phoneSerial = ((TelephonyManager)ctx.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
}
catch(Exception ex)
{
phoneSerial = null;
}
//If it's not a phone or for some reason we can't get serial/IMEI - get serial from
if (phoneSerial == null)
{
try
{
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
phoneSerial = (String) get.invoke(c, "ro.serialno");
} catch (Exception ignored) {}
}
return phoneSerial;
}
public static boolean isRunningInEmulator(Context ctx)
{
return "000000000000000".equals(getDeviceSerialNumber(ctx));
}
答案 1 :(得分:0)
使用Build.DEVICE。
答案 2 :(得分:0)
我用过
String bpStr = Build.PRODUCT;
if ("google_sdk".equals(bpStr))
// IT'S RUNNING ON THE EMULATOR
答案 3 :(得分:0)
虽然在我看来其他选项似乎更好,因为您永远不知道未来的设备是否会省略包括此项,您还可以检查加速计传感器。仿真器不支持一个,目前所有拥有Android市场和谷歌原生应用程序的手机都有加速度计。
在onCreate中,在实现SensorEventListener之后;
SensorManager manager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
if (manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size() == 0) {
textView.setText("No accelerometer installed");
}