環境光センサーは、ディスプレイの明るさを自動調整するために外部の光レベルを測定する光検出器です。0(完全な暗闇)から100,000 lx以上(直射日光)までの照度をルクス(lx)単位で測定します。Vishayアプリケーションノート(2024年)によると、ALSベースの自動輝度調整により、手動制御と比較してディスプレイの消費電力を25~40%削減できます。
重要なポイント
環境光センサー(ALS)は、スマートフォンの前面パネル、レシーバースピーカーの近くに配置された半導体光検出器です。ALSを搭載した最初の携帯電話は2000年代半ば(Nokia N95、2006年)に登場し、現在では100ドルからの低価格モデルにもセンサーが搭載されています。
最新のALSには分光補正が施されており、その感度は人間の眼(555 nmにピークを持つ比視感度曲線V(λ))に近づいています。センサーは、眼の分光感度を考慮した単位であるルクスで照度を測定します。主なメーカーは、ams OSRAM(TSL、TMDシリーズ)、Vishay(VEMLシリーズ)、Broadcom(APDSシリーズ)です。
| パラメータ | 値 |
|---|---|
| 範囲 | 0~100,000 lx以上 |
| 分解能 | 0.1 lx(低光量) |
| 消費電力 | 0.1~0.5 mA |
| サイズ | 1.5×1.0×0.4 mm |
| 分光ピーク | 555 nm(V(λ)) |
自動輝度調整以外にも、環境光センサーはカメラのキャリブレーション(撮影条件の判断)、照度監視アプリ(Light Meter)、スマートホームシステムに使用されています。Strategy Analytics(2024年)によると、販売される全スマートフォンの95%以上にALSが搭載されています。
ALSの核心はシリコンフォトダイオードで、入射光の強度に比例した光電流を生成します。光電流はトランスインピーダンスアンプで電圧に変換され、内蔵ADC(12~20ビット)でデジタル化されます。分光補正には、IR成分とUV成分を減衰させる干渉型または吸収型の光学フィルターが使用されます。
人間の眼は明るさを対数的に知覚するため、ALSは0.1 lx(深夜)から100,000 lx以上(晴天)まで動作する対数型またはプログラマブルアンプを備えています。Broadcom APDS-9306データシート(2024年)によると、照度が100倍以上変化するとセンサーは自動的にゲインを切り替え、切替時間は100ミリ秒を超えません。
最新のALS(ams TSL2520)は、50/100 Hzまたは60/120 HzのLEDランプや蛍光灯からのフリッカー検出をサポートしています。この機能はカメラのシャッター同期に使用され、これがないとランプのフリッカーによる暗い帯が写真に現れます。ALSが周波数を検出し、カメラのISPプロセッサに渡します。
自動輝度調整はALSの主要機能です。アルゴリズムは5段階で構成されます:照度測定、ノイズフィルタリング、目標輝度の計算、遷移のスムージング、ディスプレイへの適用。異なる条件での一般的な目標輝度:夜間2~5 cd/m²、オフィス(500 lx)200~400 cd/m²、晴天時(50,000 lx以上)600~1000+ cd/m²。
Android 9(Pie)以降、Googleはユーザーの行動から学習する適応型輝度カーブを導入しました。ユーザーが特定の照度レベルで手動で明るさを変更すると、システムはその偏差を記憶しカーブを調整します。Android 13以降では、時刻とコンテキストに基づいて明るさの好みを予測するために、オンデバイスの機械学習モデル(TensorFlow Lite)が使用されています。
急激な明るさの変化は目に不快です。最新のアルゴリズムは、時定数0.5~3秒のローパスフィルターと明るさ変化率制限(ramp rate limit)を使用します。Appleは明るさ変更時に200~400ミリ秒の遷移アニメーションを使用し、ユーザーに気付かれないようにしています。急激な変動(1フレームあたり5%超)はブロックされます。
class AdaptiveBrightnessController {
private val smoothFactor = 0.15f
private var targetBrightness = 0.5f
fun calculateBrightness(
lux: Float,
userOverride: Float?
): Float {
val mapped = luxToBrightnessCurve(lux)
val adaptive = userOverride
?.let { it * 0.7f + mapped * 0.3f }
?: mapped
// ローパスフィルター(スムージング)
targetBrightness = smoothFactor * adaptive +
(1f - smoothFactor) * targetBrightness
return targetBrightness
}
private fun luxToBrightnessCurve(
lux: Float
): Float = when {
lux < 10f -> 0.05f
lux < 200f -> 0.15f + lux * 0.0005f
lux < 5000f -> 0.25f + lux * 0.00005f
else -> 0.7f + lux * 0.000005f
}
}
Sensor.TYPE_LIGHTは現在の照度をルクス単位で提供します。このセンサーは環境センサーカテゴリに属し、キャリブレーション不要で即座に動作します。SENSOR_DELAY_NORMAL(200ミリ秒)のポーリングレートで全てのシナリオに対応可能です。ALSの動作にユーザー権限は必要ありません。
照度が急変した場合(トンネルから日光への出口)、ALSはセンサーチップ内蔵のローパスフィルターにより50~300ミリ秒の遅延で値を報告します。これにより、高速な光の変化(街灯の通過など)での明るさのちらつきを防ぎます。アプリは3~5サンプルの移動平均ウィンドウでさらにデータをフィルタリングし、ノイズを除去できます。
class LightSensorMonitor {
private val windowSize = 5
private val readings = LinkedList<Float>()
fun smoothLightReading(lux: Float): Float {
readings.add(lux)
if (readings.size > windowSize) {
readings.removeFirst()
}
return readings.average().toFloat()
}
fun detectLightChange(
currentLux: Float
): LightChange = when {
currentLux < 5f -> LightChange.DARK
currentLux < 200f -> LightChange.INDOOR
currentLux < 5000f -> LightChange.OUTDOOR_SHADE
else -> LightChange.DIRECT_SUNLIGHT
}
}
enum class LightChange {
DARK, INDOOR, OUTDOOR_SHADE, DIRECT_SUNLIGHT
}
環境光センサーは最新スマートフォンの99%に搭載されていますが、正しく動作させるにはPackageManager.hasSystemFeature(FEATURE_SENSOR_LIGHT)で確認してください。例外的なケース(超低価格モデル、タブレット)ではセンサーが存在しない可能性があり、アプリはnull返り値を適切に処理する必要があります。
自動輝度調整以外にも、環境光センサーは写真撮影やARアプリケーションで使用されています。Camera FV-5アプリはマニュアルモードでの自動露出ペアリングにALSを使用します。ARCoreは実際の照明に基づいて仮想オブジェクトの明るさを調整し、ARシーンをフォトリアリスティックにします。
ディスプレイはスマートフォンで最も電力を消費する部品です:600 cd/m²で3~5 Wを消費します。ALSベースの自動輝度調整は、手動最大設定と比較して屋内(200~500 lx)での平均ディスプレイ輝度を30~50%低減します。DisplayMateの調査(2024年)によると、自動輝度調整を有効にしたユーザーは、手動で最大輝度に設定したユーザーよりもバッテリー寿命が25~40%延びます。屋外で50,000 lx以上の場合は、ALSが輝度を800~1000 cd/m²に引き上げ、画面の可読性を確保します。
最新のスマートフォンカメラはALSデータを使用して撮影モードを自動選択します:逆光時HDR、10 lx未満でナイトモード、スタジオ照明でポートレートモード。Qualcomm Snapdragon ISPホワイトペーパー(2024年)によると、ALSによりカメラは100ミリ秒以内に光源の種類(昼光、白熱灯、LED、蛍光灯)を判別し、シャッターボタンが押される前にホワイトバランスを調整できます。
ディスプレイ下環境光センサーは2025~2026年に標準になりつつあります。SamsungとAppleはすでにOLEDディスプレイのピクセル下にALSを配置する技術の特許を取得しています。分光センサーの発展により、光の強度だけでなく色温度(CCT)も測定できるようになり、True Toneとカメラのオートホワイトバランスが向上します。
よくある質問
環境光センサーが外部の光レベルをルクス単位で測定し、システムが輝度カーブにマッピングして対応するディスプレイ輝度を設定します。Android 9以降では、オンデバイスの機械学習を使用してカーブがユーザーの好みに適応します。
センサーは画面の上部、レシーバースピーカーとフロントカメラの近くに配置されています。最近のスマートフォンのほとんどでは、ディスプレイガラスの下に隠れており、肉眼では見えません。旧モデルでは、センサーは小さな点のように見えます。
原因:センサーの汚れ(ほこり、油分)、センサー領域を覆う厚い保護ガラス、または適応カーブの不具合。柔らかい布で画面の上部を拭いてください。改善しない場合は、設定で自動輝度調整をオフにしてから再度オンにしてください。
いいえ — カメラとALSは異なるセンサーです。カメラはRGB画像を撮影し、ALSは分光補正されたフォトダイオードで光の強度を測定します。カメラを使用する照度計アプリは、ALSと比較して50~100%の誤差があります。
電話アプリで*#0*#(Samsungの場合)をダイヤルしてエンジニアリングメニューに入り、Light Sensorを選択します。他のブランドの場合は、Google PlayのSensor Testを使用してください。電話を光源に向けると、測定値が0から10,000 lx以上に変化します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。