java - 尽管 Pixel 2 存在于传感器列表中,但无法在 Pixel 2 上获取磁场传感器
问题描述
我尝试使用以下代码获取磁场传感器,已获得精细位置访问权限:
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
我用谷歌像素 2 测试我的应用程序,结果 sensorManager 为空,当用 TYPE_MAGNETIC_FIELD_UNCALIBRATED 替换传感器类型时也是如此。
但是,当我使用以下代码获取 Pixel 2 上的传感器列表时:
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
我在列表中看到“霍尔效应传感器”,我认为是磁场传感器,传感器对象的描述如下:
{Sensor name="AK8789 Hall Effect", vendor="AKM", version=1, type=33171016, maxRange=1.0, resolution=1.0, power=0.001, minDelay=0}
编辑:用指南针应用程序测试了我的设备,证明磁传感器可能有缺陷。因此,如果传感器有缺陷,上面的代码将返回 null。我还用另一个像素设备测试了代码,发现指南针的传感器称为磁力计,而不是霍尔效应传感器
解决方案
推荐阅读
- c++ - 函数原型范围的有趣用法
- c# - SQL Server 引发错误:数据为空。不能对 Null 值调用此方法或属性
- typescript - 从 STDIN 而不是文件编译打字稿代码?
- android - Gradle Scan 在第一个模块上显示缓慢的插件
- python-3.x - 我正在使用 Python 解决在列表中保存和打印重复值的问题,但出现以下错误:如何解决此问题?
- hyperledger-fabric - 如何使用节点 SDK 调用启用了 TLS 的链码?
- php - sqlsrv_query 和 sqlsrv_num_rows 不起作用,但没有显示错误
- node.js - 运行 Jasmine 测试时如何查看“console.log”的输出
- sql - 汇总销售数据
- excel - 如何使用箭头键在 ActiveX Combobox 的项目之间切换