2015年6月7日日曜日

Android Sensor の間隔を調整したい。

やりたかったこと。
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で実装されている。
  1. private static int getDelay(int rate) {  
  2.      int delay = -1;  
  3.      switch (rate) {  
  4.          case SENSOR_DELAY_FASTEST:  
  5.              delay = 0;  
  6.              break;  
  7.          case SENSOR_DELAY_GAME:  
  8.              delay = 20000;  
  9.              break;  
  10.          case SENSOR_DELAY_UI:  
  11.              delay = 66667;  
  12.              break;  
  13.          case SENSOR_DELAY_NORMAL:  
  14.              delay = 200000;  
  15.              break;  
  16.          default:  
  17.              delay = rate;  
  18.              break;  
  19.      }  
  20.      return delay;  
  21.  }  
0 件のコメント:
コメントを投稿