2011年7月22日金曜日

久々にセンサーを使ってみた

台風一過って普通すごい夏日になる気がするんですけど… てな今日でしたが、中身は全くもって台風とは関係ありません

先週久しぶりにセンサーを使うことがありましたがちょっと困ったことがあったので備忘録
というか誰か解決法教えてください。

  • 知らない間に傾きセンサーが非推奨になってた
  • 端末によって常に「SENSOR_STATUS_UNRELIABLE」を返すお方が居る…


前者に関しては、非推奨になっている以上仕方ないので修正します。
参考はこちら

SDTECHさん
TechBoosterさん

非推奨になっているので、<user-feature>にもありません。

http://developer.android.com/guide/topics/manifest/uses-feature-element.html

でもまぁなんでセンサーのあるものをワザワザ演算としたのでしょうね…
併用じゃ駄目だったのかしら…
こんな私にも分かるように誰か事細かく説明して欲しいです


次は問題の常にUNRELIABLEなんですが…

上記のサイトのサンプルソースを見ても、UNRELIABLEな値は無視していいと思うというか無視するべきかと思っています。

Developerにもこうかいてあります。

The values returned by this sensor cannot be trusted, calibration is needed or the environment doesn't allow readings

俺の拙い英語力でも「信頼出来ないか、キャリブレーションが必要か、その環境で(値を)読み出すのは許可できねー」
とかそんなんだと思います。

つまり以下のサンプルソース的なので正しいはず。

public void onSensorChanged( SensorEvent event) {
 if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE){
  return;
 }
 
 // 略

まあ、大体の端末は別にこれで問題なく動くと思います。

が、IS06は違った…

でーん



単に onAccuracyChanged にだけ焦点を当てたアプリを作りました。
待てど暮らせど加速度と近接はUNRELIABLEなまま。

磁気と傾き(非推奨)はこの後MEDIUMとLOWを行ったり来たり…

ちなみにたまたま2台IS06があったので、2台試しましたが、結果は同じ。

で、これ結局どうすればいいの?
とりあえずUNRELIABLEのままで値を読むようにしましたが、いいのかそれで…


おまけ。
desireで動作させた。
キャプチャ取ったあと、傾き(非推奨w)もちゃんとHIGHになりました。
センサーによっては準備時間的なものが必要なんだろと勝手に解釈

あと、IS03も大丈夫だったような…。



0 件のコメント:

コメントを投稿