Androidは節電のために, バックライトを自動消灯する機能を備えている.
このバックライトの自動消灯をON/OFFする方法は何通りかある. ここでは3種類の方法を紹介する.
XMLにより設定
- res/layout/main.xml
- バッグライトを常時ONにする場合, "android:keepScreenOn"を"true"に設定する.
- バックライトを自動消灯ONにする場合, "android:keepScreenOn"を"false"に設定する. (デフォルト)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true"
>
<Button android:id="@+id/button_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/on_label"
/>
</LinearLayout>
ウィンドウに設定
- getWindow()でウィンドウを取得する.
- バッグライトを常時ONにする場合, Window#addFlagsメソッドでWindowManager.LayoutParams.FLAG_KEEP_SCREEN_ONを追加する.
- バックライトを自動消灯ONにする場合, Window#clearFlagsメソッドで, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ONをクリアする.
package com.moonlight_aska.android.backlight01;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
public class Backlight01 extends Activity implements View.OnClickListener {
Button btn;
boolean flag = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button)findViewById(R.id.button_id);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == btn) {
if(flag == false) {
// 常時ONに設定
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
btn.setText(R.string.off_label);
flag = true;
}
else {
// 自動消灯ONに設定
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
btn.setText(R.string.on_label);
flag = false;
}
}
}
}
ビューに設定
- バッグライトを常時ONにする場合, View#setKeepScreenOnメソッドで"true"を設定する.
- バックライトを自動消灯ONにする場合, View#setKeepScreenOnメソッドで"false"を設定する.
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == btn) {
if(flag == false) {
// 常時ONに設定
btn.setKeepScreenOn(true);
btn.setText(R.string.off_label);
flag = true;
}
else {
// 自動消灯ONに設定
btn.setKeepScreenOn(false);
btn.setText(R.string.on_label);
flag = false;
}
}
}