【发布时间】:2014-12-13 06:35:55
【问题描述】:
我在 nexus 5 和 oneplus one 手机上使用计步器。他们都有一个名为“Pedometer”的传感器,供应商是“QTI”,sensorType是33171009
在andorid的传感器文档中,没有这种传感器的文档。
SensorEventListener 使用传感器事件调用 public void onSensorChanged(SensorEvent event),其中传感器名称为“计步器”,值是 16 个浮点值的数组。由于没有关于这种类型传感器的文档,我不知道这些值的含义。
如果对象SensorEvent 也告诉我们每个值是什么,那将会很有帮助。相反,您必须在文档中查找 values 数组以查看每个值代表什么。
尽管如此,这个特定的传感器(计步器)在 android 传感器文档中的任何地方都没有提到(至少从我发现的内容来看,如果有人知道它存在于哪里,那将非常有帮助)。
深入研究源代码,我通过原生方法nativeGetNextSensor(Sensor sensor, int next) 在SystemSensorManager.java 中找到了这个传感器(计步器)的实例化。
由于这种方法,数组的大小为 16:
static int getMaxLengthValuesArray(Sensor sensor, int sdkLevel) {
// RotationVector length has changed to 3 to 5 for API level 18
// Set it to 3 for backward compatibility.
if (sensor.mType == Sensor.TYPE_ROTATION_VECTOR &&
sdkLevel <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
return 3;
}
int offset = sensor.mType;
if (offset >= sSensorReportingModes.length) {
// we don't know about this sensor, so this is probably a
// vendor-defined sensor, in that case, we don't know how many value
// it has
// so we return the maximum and assume the app will know.
// FIXME: sensor HAL should advertise how much data is returned per
// sensor
return 16;
}
return sSensorReportingModes[offset];
}
有人知道这 16 个浮点值分别代表什么吗?
【问题讨论】:
标签: android android-sensors sensormanager nexus-5