这是我的问题:我使用的是android穿戴(sony smart watch3)加速度计的典型方式:
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
senAccelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, senAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float x;
float y;
float z;
switch (sensorEvent.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
Log.d("swing", "onSensorChanged:" + senAccelerometer.getVersion());
calculateSensorFrequency(System.currentTimeMillis());
x = sensorEvent.values[0];
y = sensorEvent.values[1];
z = sensorEvent.values[2];
.
.
.
break;
}
在onSensorChange
方法中,尽管Sensor.getMaximumRange()
给出了16g(156.96 m / s * s),但我只获得了+ - 2g读数。有没有办法校准加速度计或这是一个错误?任何帮助将不胜感激。 THX
P.S。我试图使用Sensor.getVendor
方法在google中找到硬件加速度计模块范围的详细规格,但没有运气。
答案 0 :(得分:1)
索尼智能手表3内置EM7180传感器融合平台(http://www.emmicroelectronic.com/products/sensor-fusion-sensor-interface/sensor-fusion/em7180sfp),内置博世BMX055(https://www.bosch-sensortec.com/bst/products/all_products/bmx055),配有加速度计,陀螺仪和磁力计。它有几个加速度范围±2g /±4g /±8g /±16g。但我的只读取范围+/- 2g。