“Moto E”设备没有磁场传感器。然而,他们似乎使用 GPS 来模拟它。但是,当然,这只有在您移动时才真正起作用。我更愿意知道它正在这样做,这样我就可以禁用某些功能,或者警告用户。
我似乎找不到像许多其他设备那样执行此操作的方法,因为传感器即使被模拟也“存在”。
就此而言,该型号也没有陀螺仪。然而 FusedSensors 似乎工作得很好(尽管在其他设备上可能不如其他设备)。
感谢任何输入! 戴夫
最佳答案
使用思路:<uses-feature android:name="android.hardware.sensor.compass" android:required="true" />
在 list 中似乎根本没有任何效果。
但是下面的代码确实有效!
PackageManager manager = getPackageManager();
boolean hasCompass = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS);
if (!hasCompass)
{
Toast toast = Toast.makeText(this, "WARNING: DEVICE HAS NO COMPASS", Toast.LENGTH_LONG);
toast.show();
}
我想在帖子 [问题] 中将此归功于 pointtofuture:How to make sure an android device application supports hardware feature
我应该指出,我在“Moto E 2nd Gen”(无指南针)和三星 Galaxy S7 Edge(有指南针)上进行了尝试,结果一致。 AndroidStudio 模拟器都显示有指南针,但模拟器设置不允许选择或取消选择该硬件功能(它适用于 GPS 和其他一些)。如果模拟器有罗盘模拟就好了。
戴夫
关于android - 我可以在 Android 上检测物理磁场传感器还是虚拟磁场传感器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131256/