首页 > 解决方案 > 在android模拟器中禁用传感器

问题描述

我在 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 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}

模拟器设置菜单中似乎也没有禁用传感器的选项。

模拟器有没有办法像在没有传感器的设备上运行一样报告?

标签: android

解决方案


似乎有办法检测您的应用程序是否在模拟设备上运行:https ://stackoverflow.com/a/13815880/3034696

尝试boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER) && !sensor.getName().contains("Goldfish");


推荐阅读