酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Mobile(.NET Compact Framework)でバックライトの輝度を設定・取得する

Windows Mobileのコントロールパネルのシステムタブにある「バックライト」で輝度を変更出来ます。今回は、プログラム上からバックライトの輝度を変更する方法をご紹介します。

f:id:ch3cooh393:20140513022751j:plain

S11HT(EMONSTER)の「バックライト」の設定画面です。このバッテリィ使用時と、外部電源使用時のバックライト輝度設定値は、それぞれ下記のレジストリに対応しています。

  • HKEY_CURRENT_USERControlPanelBacklightBrightness
  • HKEY_CURRENT_USERControlPanelBacklightACBrightness

このレジストリ値を変更する事で、連動して画面の明るさ(バックライトの輝度)が変わります。

以下に、サンプルコードを示します。

バックライトの輝度を設定する

VB.NET

Using backLight As RegistryKey = Registry.CurrentUser.CreateSubKey("ControlPanelBacklight")

   ' バッテリー駆動時 
   backLight.SetValue("Brightness", value)

   ' AC電源駆動時 
   backLight.SetValue("ACBrightness", value)

End Using

C#

using (RegistryKey backLight = Registry.CurrentUser.CreateSubKey("ControlPanelBacklight")) {
   
   // バッテリー駆動時 
   backLight.SetValue("Brightness", value);
   
   // AC電源駆動時             
   backLight.SetValue("ACBrightness", value);
}

バックライトの輝度を取得する

VB.NET

Using backLight As RegistryKey = Registry.CurrentUser.CreateSubKey("ControlPanelBacklight")

   ' バッテリー駆動時 
   Dim brightness As Object = backLight.GetValue("Brightness")

   ' AC電源駆動時 
   Dim ac_brightness As Object = backLight.GetValue("ACBrightness")

End Using

C#

using (RegistryKey backLight = Registry.CurrentUser.CreateSubKey("ControlPanelBacklight")) {
   
   // バッテリー駆動時 
   object brightness = backLight.GetValue("Brightness");
   
   // AC電源駆動時            
   object ac_brightness = backLight.GetValue("ACBrightness");
}

複数の端末に対応する際の注意点

ここで紹介したコードは実際にS11HT上にて動作確認を取っておりますが、バックライトの輝度情報が格納されているレジストリ名や設定値の有効な範囲等、OEMメーカーのハードウェアとドライバ(実装)に依存する為、前記のコードでは変更出来ない可能性もあります。

手元にある国内で流通している端末で確認してみた所、OEMメーカー毎によってこれだけ違いますので注意してください。

SHARP Advanced/W-ZERO3[es] TOSHIBA X01T HTC S11HT
バッテリ使用時 BatteryBrightness Brightness BrightNess
外部電使用時 ACBrightnes Brightness ACBrightNess
調整値 0~6 0~255 0~10