時計のジャイロスコープを利用する SmartWatch 1 用のアプリをいくつか開発しました。やっと開発用の SmartWatch 2 を手に入れましたが、ジャイロスコープの反応がかなり悪いことに気付きました。たとえば、SmartWatch 1 では、どんなにわずかな動きでも記録されるようです。ただし、SmartWatch 2 では、読み取りは 100 ミリ秒のタイマーで実行されるようです。センサーとやり取りする方法は次のとおりです。
private final AccessorySensorEventListener mListener = new AccessorySensorEventListener() {
public void onSensorEvent(AccessorySensorEvent mySensorEvent) {
sensorEvent = mySensorEvent;
float[] values = sensorEvent.getSensorValues();
currentX = values[0];
currentY = values[1];
currentZ = values[2];
}
}
センサーを登録するためのさまざまなバリエーションも試しました。
mSensor.registerInterruptListener(mListener);
- と -
mSensor.registerListener(mListener, Sensor.SensorRates.SENSOR_DELAY_FASTEST, Sensor.SensorInterruptMode.SENSOR_INTERRUPT_DISABLED);
- と -
mSensor.registerFixedRateListener(mListener, Sensor.SensorRates.SENSOR_DELAY_FASTEST);
これらはすべて、まったく同じ効果をもたらすようです。SmartWatch 2 でこれを間違っているのでしょうか、それとも SmartWatch 2 のジャイロスコープの反応が悪いのでしょうか?