やりたかったこと。
AndroidのSensorを使って磁力を取得するプログラムをつくったのですが、取得するタイミングをもっと遅くしたいなぁと思いました。たとえば、1秒ごととか5秒ごととか。
調べてみると、registerListener()の引数で、任意の値を設定できる。ことがわかったんだけど、
自分の端末(Androidバージョン2.3.5)では動作しませんでした。
Androidのデベロッパーサイトをみると、2.3 (API level 9) から使えることになってるので、
動いてもよさそう、、、だけど効かない。
ためしに、別の端末(Androidバージョン4.4.2)で、試したところ、設定通りに動作しました。
2.3.5ではあきらめることに。
調べて分かったことを記録しておきます。
わかったこと(1)
Androidのデベロッパーサイトを見ると、Android2.3から、registerListenerの引数に、μ秒を指定できるという記載がある。サイトのリンク
わかったこと(2)
定義済みのSENSOR_DELAY_*の値は、SensorManager.javaで実装されている。private static int getDelay(int rate) { int delay = -1; switch (rate) { case SENSOR_DELAY_FASTEST: delay = 0; break; case SENSOR_DELAY_GAME: delay = 20000; break; case SENSOR_DELAY_UI: delay = 66667; break; case SENSOR_DELAY_NORMAL: delay = 200000; break; default: delay = rate; break; } return delay; }