このページはまだ編集中です。
ALS(Automatic Light Sensor)の解説
まったく需要のなさそうなALSの設定値に関して解説する。
【参考文献】
- (Need Root)Enable Automatic Light Sensor on Xperia Ray
- AS3676のデータシート
【前準備】
ALSを有効にするには、参考文献1.)に書いてある手順のうち、以下の箇所の変更が必要。
echo 0,0,0,0 > $dev/lcd-backlight/als/params #[gain],[filter_up],[filter_down],[offset]
↓変更
echo 3,2,2,0 > $dev/lcd-backlight/als/params #[gain],[filter_up],[filter_down],[offset]
「echo x,x,x,x」の説明については後述。
【$dev/lcd-backlight/als/paramsの各paramの説明】
詳しくは参考文献2.)の「8.4.8 ALS - Ambient Light Sensing」参照
[gain]は光の明るさを検出した何倍で数値に変換するか。
調整範囲は0~3で、0=1/4、1=1/2、2=1、3=2、の意味。
0がもっとも検出範囲が狭くなるので、明るい場所でよく使うなら0を設定する。
逆に暗めの部屋なら3を使用する。
- [filter_up],[filter_down]
[filter_up],[filter_down]は、明るさを検出する速度(検出周波数?)を変更するもの
調整範囲は0~7で、各値は0から、0.25Hz, 0.5Hz, 1Hz, 2Hz, 4Hz, 8Hz, 16Hz, 32Hz、となっている。
高い値に設定するとその分電池を消費する(と思われる)ので、好みで設定する。
[offset]は、検出した数値にいくつ+するか。
調整範囲は0~255。オフセットは必要なときだけ設定すればいいので、とりあえず0固定で良い。
【ALS値について】
ALS値は、明るさ(センサーから取得した値)×[gain]+[offset]、という式で表せる。
最小値は0で、最大値は255。
現状ALS値がどの値を示すかは標準の電話アプリから「*#*#7378423#*#*」を入力し
Serviceが起動するので、「Service tests」→「Ambient Light Sensor」を選択するとわかる。
この値は上述のとおり、[gain]と[offset]に設定した値で変化する。
本体右上(よく見ると丸い穴が見える)のセンサーをふさいで見ると、ALS値が0になることが確認できるはず。
ちなみに、[gain]を0に設定した場合、蛍光灯の弱い光ではあまり変動しなくなるので、
よく使用する場所で低い範囲でしか値が変動しない場合は、[gain]を上げたほうが調整がしやすい。
【als_curve.confの説明】
詳しくは参考文献2.)の「Figure 23. Ambient Light Sensor internal circuit」参照
als_curve.confには行ごとにALSカーブが設定されている。
stockでは16段階(16行分)の設定があるが、「画面の明るさ」を最低に設定した場合一番上のALSカーブが使用され、
明るさを最大にした場合は一番下のALSカーブが使用される。
各行ごとに
group, y0, y3, k1, k2, x1, x2
の形式をとる。
- group : ALSカーブのグループ番号。1しかないみたいなので変更する必要なし
- y0 : 画面の明るさの最小値(256で割られた値)
- y3 : 画面の明るさの最大値(256で割られた値)
- k1 : 傾き1。座標(x1,y0)からk1/32という傾きでカーブが引かれるみたい
- k2 : 傾き2。座標(x2,x2*k1/32?)からk2/32という傾きでカーブが引かれるみたい
- x1 : 傾き1のカーブを使用し始める閾値(ALS値)。ALS値がx1以下なら明るさはy0固定
- x2 : 傾き2のカーブを使用し始める閾値(ALS値)。
※注意・・説明は推測含みます。
実際に今の設定でy0、y3の明るさがどのくらいになるのかは、
右上のセンサーを指で塞ぐか懐中電灯等で強い光を当ててみるとわかる。
【ALSカーブの調整例】
画面の明るさを最小にした場合は als_curve.conf にあるうち一番上の行の
1,6,6,0,0,10,38
が使用される。
この設定の場合、y0,y3が6なので明るさは6固定ということになる。
6は真っ暗な部屋で使用するにはいいが、部屋の電気をつけると暗すぎてよく見えない。
一つ上の設定は
1,13,61,10,13,10,38
だが、これだと自分は少々明る過ぎると感じたので、これよりは明るさを抑えた設定を目指すことにした。
自分の場合、最小値はもともとの6で問題なかったので、最大値だけを変更することにする。
何回か値を変えてリブートを繰り返し、25ぐらいが適当と判断。
最終的に
1,6,25,10,13,10,38
とした。
最終更新:2012年11月10日 15:14