android - 我可以在 Android 上检测物理磁场传感器还是虚拟磁场传感器?

标签 android android-sensors

“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/

相关文章:

android - 在 Android 中编码 SMS 消息

java - Android & PhoneGap——在 NPObject 上调用方法时出错

android - TYPE_ACCELEROMETER 和 TYPE_LINEAR_ACCELERATION 传感器有什么区别?

java - 如何替换 android 4.0.3 的 type_orientation(已弃用)?

android - 持续监控 Android 上的加速计传感器

android - Application 类是否保证在调用定义的引导接收器之前被实例化

android - 带有四个可点击区域的设计圆圈

android - 从 Android 转换 - 您可以转换整个应用程序还是仅转换应用程序内的媒体内容

android - 在旋转矢量传感器中使用标量组件?

android - SGS III 上的罗盘读数