Android Wear加速度计仅提供+ - 2g

时间:2016-05-16 10:49:41

标签: java android accelerometer wear-os

这是我的问题:我使用的是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中找到硬件加速度计模块范围的详细规格,但没有运气。

1 个答案:

答案 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。