Karol Żygłowicz
Karol Żygłowicz

Reputation: 2452

Android Wear accelerometer giving only +- 2g

Here is my problem: I'm using android wear (sony smart watch3) accelerometer typical way:

    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;
}

In onSensorChange method i'm getting only +- 2g reads despite the fact that Sensor.getMaximumRange() is giving 16g (156.96 m/s*s). Is there any way to calibrate accelerometer or is this a bug? Any help will be appreciated. Thx

P.S. I was trying to find detailed specyfication of hardware accelerometer module range in google using Sensor.getVendor method but with no luck.

Upvotes: 1

Views: 213

Answers (1)

Phil Sid
Phil Sid

Reputation: 26

The Sony Smartwatch 3 has a EM7180 Sensor Fusion Platform (http://www.emmicroelectronic.com/products/sensor-fusion-sensor-interface/sensor-fusion/em7180sfp) built in with a Bosch BMX055 (https://www.bosch-sensortec.com/bst/products/all_products/bmx055) that has an accelerometer, gyroscope and magnetometer. It has several Acceleration ranges ±2g/±4g/±8g/±16g. But mine only reads in the range +/- 2g, too.

Upvotes: 1

Related Questions