Android Studio (センサーでのデータ取得4_照度)
■センサーのデータ間隔について。
今回は照度センサー(Sensor.TYPE_LIGHT)を試しつつ、データ取得の間隔について考える。
照度はlxで表示され、スマホの上部のカメラ付近にセンサーがあるよう。
前回のコードを照度に対するものにして、下のようなグラフ表示にした。

青色が取得毎のデータ。値が変更されるたびにメソッドをよんでデータ取得を行う。小数点6桁くらいまでデータ取得しているので、少しでも値が変わると都度メソッドが呼ばれる。これを元データとする。
ピンク色が1秒毎のデータ。1秒毎にプロットして、その時点での最新の元データを使っている。1秒毎にプロットされる。上のグラフは15秒間のもの(古いものは表示されなくなるので、左に動いているように見える)。
緑色は1秒間の平均。1秒間の元データを平均した値をプロット。
黄色は1lx以上の変化があった場合のみプロット。こちらも元データを使っている。
拡大すると黄色、ピンクは青色と同じデータになることが分かる。緑色は平均のため元データの青色とは少し異なる。

見た目は1lx差異が出たらプロットするのが、無駄なくきれいな感じだけど、データ取得しないと1lxの差異があるか分からない。データが変わるたびにメソッドが呼ばれるのは負荷的な点でよくないのではと思う。データ取得自体が軽い動作で問題ないならいいけど。例えば、ある程度の時間間隔でデータ取得を行った上で、処理に使うのは差異があった場合のみ、とかにすればいいのかな。どういうことをやりたいのかによるだろうけど。
今回は照度の値だけど、値が変わるたびに呼ぶのは他のセンサーでも同様の動作かと思う。ざっくりだけど、1秒間に14回ぐらいデータ取得していた。
照度について、屋外や屋内でいくつかデータを取った。
上のグラフは部屋の中のもので、だいたい100~200lxぐらい。
次は、屋外の日光が当たるところと日陰。自分のスマホでは50000lxが限度のようでそれ以上の値は出てこない。下の図で平らになっているところが50000。その後、日陰に入ると15000~20000くらいまで下がる。

次は建物の中。扉などで屋外と仕切られていないところで測定。建物の中に進むにつれてlxは下がる。だいたい600~200くらい。

最後に、部屋の中でもデスクライトをつけたり消したりしたもの。消灯中は100lxぐらいの場所で、つけると1200lxぐらいまで上昇する。

Chat GPTで代表的な照度について問い合わせると下の表が出てきた。室内や建屋内、日陰、屋外など上で見てきた値とだいたいあってる。
| 場所・状態 | 代表的な照度 |
|---|---|
| 🌙 月明かり | 0.1~1 lx |
| 🌃 夜の街・街灯の下 | 5~50 lx |
| 🏠 暗めの室内 | 50~100 lx |
| 🏠 一般的な室内 | 100~500 lx |
| 🏢 オフィス | 300~1,000 lx |
| 💡 明るい店舗・室内 | 500~2,000 lx |
| 🪟 窓際(屋内) | 1,000~5,000 lx |
| 🌥️ 曇天の屋外 | 1,000~10,000 lx |
| ☀️ 日陰(晴天) | 5,000~20,000 lx |
| ☀️ 晴天・屋外 | 30,000~80,000 lx |
| ☀️ 晴天・直射日光 | 50,000~100,000 lx |
| ☀️ 真夏の強い直射日光 | 100,000 lx以上になることもある |
細かな精度はともかくおおまかには合っていたので、スマホのセンサーでも光環境の指標としては使えそう。

