Вот моя проблема: Я использую Android Wear (сони умный watch3) акселерометр типичный способ:Android Wear акселерометр дает только + - 2g
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
методе я получаю только + - 2g читает несмотря на то, что Sensor.getMaximumRange()
дает 16 г (156,96 м/с * с). Есть ли способ откалибровать акселерометр или это ошибка? Любая помощь будет оценена по достоинству. Thx
P.S. Я пытался найти подробную спецификацию диапазона аппаратного акселерометра в Google, используя метод Sensor.getVendor
, но не повезло.
Это очень полезно, что вы сказали. Мне любопытно, есть ли способ разблокировать эти диапазоны ускорения, чтобы включить, например, ± 8 г? –
В Api, похоже, нет способа разблокировать более высокий диапазон. Но, как описано (http://stackoverflow.com/questions/25280924/android-accelerometer-full-range), диапазон, по-видимому, зависит от устройства и может быть изменен только на уровне абстракции оборудования в конфигурации.h, и поэтому у вас есть укоренить часы. Я тестировал его сейчас со вторым Sony Smartwatch 3 и имеет тот же диапазон +/- 2g. –