Mono Works

チラシのすきま

メモ:アプリの画面表示中にスリープにさせない

アプリによっては、長時間放置したまま画面を点灯したままにしたいことがあります。これをアプリで制御すること可能です。ただし、スマートフォンにとって画面点灯はバッテリ消費の一番の要因であるため、使い方に注意が必要です。今回のメモは、アプリの中で特定の画面が表示されている間のみスリープにならないよう(画面を点灯したまま)にする方法についてです。

View  |  Android Developers

それでは、さっそく参りましょう。

レイアウトファイル側で画面点灯を維持する場合

レイアウトファイルで画面点灯を維持するには、Viewの属性「android:keepScreenOn」に「true」を設定します。値には「false」も設定できるようですが、使う場面が思い浮かびません。

レイアウトファイル(\app\src\main\res\layout\activity_main.xml)

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/how_are_you"/>

</LinearLayout>

これで、レイアウトに activity_main.xmlを指定した Activityが表示されている間は、画面点灯が維持されます。

実行ファイル側で画面点灯を維持する場合

定義には「FLAG_KEEP_SCREEN_ON」を使い、その書式は定型です。「getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)」という1行をonCreate()メソッドに追加します。あと WindowManagerを importする必要がありますが、Android Studioの場合、Alt + Enterで自動補完してくれます。これでMainActivityが表示されている間、画面点灯が維持されます。

実行ファイル(\app\src\main\java\jp\co\monoworks\TEST\MainActivity.java)

package jp.co.monoworks.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
}

WindowManager.LayoutParams  |  Android Developers

もし、同じ Activity内の別の指示によって、画面点灯キープをOFFにしたい場合は、下記の1行を追加します。

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

実際の画面(ただ点灯し続けているだけです。はい)

androiddevmemo20151201_00

【参考サイト】

View | Android Developers

WindowManager.LayoutParams | Android Developers

comments powered by Disqus
Googleブログ検索
Amazon検索
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。DQX内では "ぬここ" の中の人もやってます。好きなことをつらつらと書き留めてます。
"DQX@ぬここ(UD487-754)"
採用案内