我正在尝试在我的 android 应用程序上使用线性加速度融合传感器。但是,它找不到 Sensor.TYPE_LINEAR_ACCELERATION 的传感器。
我执行这些调用:
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mLinearAcceleration = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
在上面之后,定义了 mAccelerometer,但 mLinearAcceleration 为空。我知道 TYPE_LINEAR_ACCELERATION 直到 API 级别 9 才添加,但我认为我至少在 API 级别 9 中运行。这是我的清单文件的片段:
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
所以我相信我在正确的 API 级别下工作。
但是,当我尝试列出所有可用的传感器时,我没有找到所有应该可用于此 API 级别的传感器。
当我打电话...
List<Sensor> l = mSensorManager.getSensorList(Sensor.TYPE_ALL);
for(Sensor s : l)
System.out.println(s.getName());
我明白了
Goldfish 3-axis Accelerometer
Goldfish 3-axis Magnetic field sensor
Goldfish Orientation sensor
Goldfish Temperature sensor
Goldfish Proximity sensor
这些都不是线性加速度,一个是方向,一个不推荐使用的传感器。看来我的传感器运行起来好像它们来自 API 级别 9 之前,但我不知道为什么会这样。我的项目中是否有一些字段可能会强制应用程序充当旧 API?(AndroidManifest.xml 文件中支持的最低 API 字段除外,该字段已设置为 9)