我已在AVD中创建了具有新硬件配置文件且禁用了传感器的虚拟设备。然后,我要同时检查getDefaultSensor是否为null和PackageManager.FEATURE_SENSOR_ACCELEROMETER。
在没有传感器硬件配置文件的仿真器上,两者均报告为真。
Context context = mRegistrar.context();
SensorManager sensorManager = (SensorManager) context.getSystemService(context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
PackageManager manager = context.getPackageManager();
boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER);
result.success(hasAccelerometer);
Sensor不为null并返回
{Sensor name="Goldfish 3-axis Magnetic field sensor", vendor="The Android Open Source Project", version=1, type=2, maxRange=2000.0, resolution=1.0, power=6.7, minDelay=10000}
在仿真器设置菜单中似乎也没有禁用传感器的选项。
仿真器是否可以报告与在没有传感器的设备上运行时相同的报告方式?
答案 0 :(得分:0)
似乎有些方法可以检测您的应用程序是否在仿真设备上运行:https://stackoverflow.com/a/13815880/3034696
尝试boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER) && !sensor.getName().contains("Goldfish");