2179167_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2179167_ja-JP

2179167_ja-JP

IMX8MQ Android 11の自動明るさコントロール

こんにちは皆さん。IMX8MQ の Adaptive Brightness 機能に関して奇妙な問題が発生しています。OPT3001 周囲光センサを使用しました。このセンサをカーネル側に追加することに成功しました。dmesg ログで確認し、ルクス値を正常に読み取ることができます。役に立つ出力をいくつか紹介します。
----------------------------------------------------------------------
smarc_mx8mq:/sdcard $ dmesg | grep オプト 3001
[ 2.901412] opt3001 0-0044: TI OPT3001 が見つかりました
smarc_mx8mq:/sdcard $
----------------------------------------------------------------------
cat /sys/bus/i2c/devices/0-0044/iio:device0/in_illuminance_input
113.440000 (これは単なる例であり、周囲の光に応じて異なります)。

----------------------------------------------------------------------

ご覧のとおり、センサはカーネル側で動作しています。

HAL 側では、この周囲光のルクス値を制御して FMQ に書き込むサービスを駆動しています。
実際のところ、直接見せたほうがいいです。

これはdumpsys sensorserviceの出力です


smarc_mx8mq:/ $ dumpsys センサーサービス
撮影時刻: 10:27:38.483
センサデバイス:
合計 1 個のハードウェア センサ、1 個が実行中、0 個の無効なクライアント:
0x00000001) アクティブカウント = 1; サンプリング期間(ms) = {250.0},選択 = 250.00 ミリ秒; バッチ期間(ミリ秒) = {0.0},選択 = 0.00 ミリ秒
センサーリスト:
0x00000001) OPT3001 アンビエントライト | Texas Instruments | バージョン: 1 | タイプ: Android.sensor.light(5)| パーミッション: なし | フラグ: 0x00000002
変更時 | maxDelay=0us | maxRate=5.00Hz| バッチ処理なし | 非ウェイクアップ |
核融合国家:
9軸融合無効(クライアント数0)、ジャイロレート=200.00Hz、q=<0,0,0,0>(0)、b=<0,0,0>
ゲームフュージョン(磁気なし)無効(クライアント0台)、ジャイロレート= 200.00Hz、q=< 0, 0, 0, 0 > (0)、b=< 0, 0, 0 >
geomag fusion(ジャイロなし)無効(クライアント数0)、ジャイロレート= 200.00Hz、q=< 0, 0, 0, 0 >(0)、b=< 0, 0, 0 >
最近のセンサイベント情報:
アクティブセンサ:
OPT3001 アンビエントライト (ハンドル = 0x00000001、接続 = 1)
ソケットバッファサイズ = 39 イベント情報
WakeLockステータス: 保持されていません
モード:ノーマル
センサのプライバシー: 無効
1 アクティブな接続
接続数: 0
動作モード: 通常
com.android.server.display.AutomaticBrightnessController | WakeLockRefCount 0 | uid 1000 | キャッシュサイズ 0 | 最大キャッシュサイズ 0
OPT3001 アンビエントライト 0x00000001 | ステータス: アクティブ | 保留中のフラッシュイベント情報 0
直接接続0件
以前の登録:
09:42:02 + 0x00000001 pid= 551 uid= 1000 パッケージ=com.android.server.display.AutomaticBrightnessController サンプリング期間=250000us バッチ処理期間=0us
09:37:56 - 0x00000001 pid= 551 uid= 1000 パッケージ=com.android.server.display.AutomaticBrightnessController
09:35:28 + 0x00000001 pid= 551 uid= 1000 パッケージ=com.android.server.display.AutomaticBrightnessController サンプリング期間=250000us バッチ処理期間=0us
smarc_mx8mq:/ $



ご覧のとおり、automoticbrgihtnesscontroller は実際にセンサを認識しています。

----------------------------------------------------------------------
これは自動輝度コントローラのdumpsysディスプレイ出力です

dumpsysディスプレイ

自動輝度コントローラの設定:
mScreenBrightnessRangeMinimum=0.035433073
mScreenBrightnessRangeMaximum=1.0
mDozeScaleFactor=1.0
初期光センサーレート=250
m通常の光センサーレート=250
mLightSensorWarmUpTimeConfig=0
mBrighteningLightDebounceConfig=4000
mDarkeningLightDebounceConfig=8000
mResetAmbientLuxAfterWarmUpConfig=true
mAmbientLightHorizon=10000
m重み付けインターセプト=10000

自動輝度コントローラの状態:
mLightSensor={センサ名="OPT3001 アンビエントライト", ベンダー="Texas Instruments", バージョン=1, タイプ=5, 最大範囲=100000.0,解像度=0.01、検出力=0.001、最小遅延=200000}
mLightSensorEnabled=true
mLightSensorEnableTime=470926 (2805217 ミリ秒前)
m現在の光センサーレート=250
mAmbientLux=0.0
mAmbientLuxValid=false
mAmbientBrighteningThreshold=0.0
mAmbientDarkeningThreshold=0.0
mScreenBrighteningThreshold=0.0
mScreenDarkeningThreshold=0.0
mL最終観測ルクス=0.0
mLastObservedLuxTime=0 (3276143 ミリ秒前)
mRecentLightSamples=0
mAmbientLightRingBuffer=[]
mScreenAutoBrightness=NaN
mDisplayPolicy=明るい
mShortTermModelTimeout=300000
mShortTermModelAnchor=-1.0
mShortTermModelValid=true
mBrightnessAdjustmentSamplePending=false
mBrightnessAdjustmentSampleOldLux=0.0
mBrightnessAdjustmentSampleOldBrightness=0.0
mForegroundAppPackageName=com.android.settings
mPendingForegroundAppPackageName=null
mForegroundAppCategory=-1
mPendingForegroundAppCategory=-1

--------------------------------------------------------------------------------
smarc_mx8mq:/ $ getprop | grep センサ
[init.svc.sensor_fusion]:[停止]
[init.svc.vendor.センサ]:[走る]
[init.svc_debug_pid.sensor_fusion]:[]
[init.svc_debug_pid.vendor.センサ]: [351]
[ro.boottime.sensor_fusion]:[24640145010]
[ro.boottime.vendor.センサ]: [20921317621]
[ro.hardware.lightsensor]:[/sys/class/i2c-dev/i2c-0/デバイス/0-0044/]
[vendor.ro.lightsensor.threshold]:[20]
smarc_mx8mq:/ $

ro.hardware.lightsensor と vendor.ro.lightsensor.threshold が何なのか分かりません。これらはすでに含まれていたため、含めませんでした。私は opt3001 を使用しましたが、偶然にも 0x44 i2c アドレスも使用しています。

これは私のサービスです
[init.svc.vendor.センサ]:[走る]

実際、すべてが良好に見えますが、周囲の光に基づいて明るさを変更するだけでは機能しません。

通常、明るさスライダーを設定してもバックライトは変化しませんでしたが、以前にもこの目的のためにサービスを生成しました。SO、コマンドラインで明るさを変更すると、
設定で system screen_brightness を入力すると、LCD のバックライトが変更されます。SO、バックライトを正常に駆動することに問題はありません。


ALS のルクス値を使用して背景光を運転するにはどうすればよいでしょうか?logcat (サービスでデバッグするためにログをいくつか追加しました)、サービス ファイル、dumpsys ディスプレイ、sensorservice 出力などの出力を添付します。

この問題に遭遇した方がいらっしゃいましたらお知らせください。回答だけでなく、あなたの意見もCAN共有します。何でも受け付けます。

添付ファイルを確認してください。zip ファイルには私が作成したサービス ファイルが含まれています。ご確認下さい。

キーワード: 周囲光センサ、IMX8MQ、バックライト、明るさ、スライダー、ルクス値













Re: Automatic Brgihtness Control on IMX8MQ Android 11

こんにちは、

これについては、一般的な Android ドキュメントを参照してください。以下を参照してください。

 
よろしくお願いいたします。
アルド。

Re: Automatic Brgihtness Control on IMX8MQ Android 11

また、センサのフラグタイプを変更することはできません。dumpsys sensorserviceの出力を見ると、
センサーリスト:
0x00000001) OPT3001 アンビエントライト | Texas Instruments | バージョン: 1 | タイプ: android.sensor.light(5) | パーマ: n/a | フラグ: 0x00000002
変更時 | maxDelay=0us | maxRate=5.00Hz | バッチ処理なし | 非ウェイクアップ |

サービス ファイルに連続したフラグ 0x00 を設定しましたが、変更されることはありません。このセンサフラグを 0x02 から 0x00 に変更するにはどうすれば良いかご存知ですか。

よろしく

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 11:27 PM
Updated by: