UiModeManagerを利用してUIモードを変更する
|今回はUiModeManagerクラスについて説明します。
UiModeManagerクラスを利用することでAndroid端末のUIモードをコントロールすることができます。
ドライブモードやナイトモードというUIモードのコントロールが可能です。
詳細は続きからどうぞ。
UiModeManagerのメソッド
まずUiModeManagerクラスで用意されているメソッドですが、以下のようなものがあります。
void disableCarMode(int flags) | ドライブモードを無効にします |
void enableCarMode(int flags) | ドライブモードを有効にします |
int getCurrentModeType() | 現在のドライブモードを取得します |
int getNightMode() | 現在のナイトモードを取得します |
void setNightMode(int mode) | ナイトモードを設定します |
ナイトモードの設定値
次にナイトモードに設定できる値ですが以下のようなものがあります。
なお、ドライブモードを有効にしていないとナイトモードの設定は反映されません。
MODE_NIGHT_NO | ナイトモードを無効にします。 |
MODE_NIGHT_YES | ナイトモードを有効にします |
MODE_NIGHT_AUTO | センサ値、位置情報などをもとに、ナイトモードを自動で設定します |
サンプルプログラム
それではサンプルで実際に動作を見てみます。
ドライブモードとナイトモードの切り替えをボタンから行うサンプルプログラムになります。
まず、getSystemServiceメソッドでUiModeManagerのインスタンスを取得します。
// UiModeManagerのインスタンスを取得 umm = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
次にCarModeの切り替えを行うボタンを作成します。
// CarModeのスイッチ用ボタン btn_carMode = (Button) findViewById(R.id.btn_carMode); btn_carMode.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 現在、Car Modeで動作していない場合 if (umm.getCurrentModeType() == Configuration.UI_MODE_TYPE_NORMAL) { // CarModeをenableにする umm.enableCarMode(0); Toast.makeText(getApplicationContext(), "enable CarMode", Toast.LENGTH_SHORT).show(); // 現在、Car Modeで動作している場合 } else if (umm.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR) { // CarModeをdisableにする umm.disableCarMode(0); Toast.makeText(getApplicationContext(), "disable CarMode", Toast.LENGTH_SHORT).show(); } } }); }
getCurrentModeTypeメソッドでCarModeの設定値を確認してから、
enableCarModeメソッドとdisableCarModeメソッドでCarModeの設定値を変更しています。
次にナイトモードの切り替えボタンです。
// NightModeのスイッチ用ボタン btn_nightMode = (Button) findViewById(R.id.btn_nightMode); btn_nightMode.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 現在、Night Modeで動作している場合 if (umm.getNightMode() == UiModeManager.MODE_NIGHT_YES) { // NightModeを無効にする umm.setNightMode(UiModeManager.MODE_NIGHT_NO); Toast.makeText(getApplicationContext(), "disable NightMode", Toast.LENGTH_SHORT).show(); // 現在、Night Modeで動作していない場合 } else if (umm.getNightMode() == UiModeManager.MODE_NIGHT_NO) { // NightModeを有効にする umm.setNightMode(UiModeManager.MODE_NIGHT_YES); Toast.makeText(getApplicationContext(), "enable NightMode", Toast.LENGTH_SHORT).show(); } } }); }
getNightModeメソッドで現在のナイトモードを確認して、setNightModeメソッドでナイトモードの切り替えを行っています。
実際にドライブモードを有効にすると、ステータスバーにハンドルのアイコンが表示されます。
ドライブモードを有効にした状態でナイトモードも有効にするとステータスバーが暗めのものに変わります。