web-dev-qa-db-ja.com

setKeepScreenOn / FLAG_KEEP_SCREEN_ONの正しい方法

私はメソッドsetKeepScreenOn(true)を使用しており、現在のアクティビティ(コンテンツビューセットを持つ)に関連してこれを呼び出す方法を理解できませんでした。ビューに常に表示されているボタンの1つで呼び出すことで機能させることができましたが、これは間違っているように感じます。これを回避する方法があるはずです。私はこのように現在のフォーカスを参照してみました:

getCurrentFocus().setKeepScreenOn(true);

しかし、それはNullPointerExceptionをスローしました。たぶん、現在の焦点はありませんでした。では、私が内部で作業しているビュークラスを参照する方法を誰かに教えてもらえますか?ありがとう:)

25
Emma Assin

試してみてください この答え

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

getWindowはアクティビティ用に定義されたメソッドであり、最初にViewを見つける必要はありません。

58
Matthew Willis

ホークが言ったようにしかし不十分に説明しました。

XMLレイアウトファイルでFLAG_KEEP_SCREEN_ONを使用することもできます。

Android:keepScreenOn="true"に注意してください

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:keepScreenOn="true"
    Android:orientation="vertical" >

    <!-- whatever is in your layout -->

</LinearLayout>

画面をオンにしておくためのすべての選択肢をブログ投稿に書きました。
http://blog.blundellapps.com/tut-keep-screen-onawake-3-possible-ways/

37
Blundell

セットする Android:keepScreenOn XML

4
Hawk

クラスでそれを行っている場合は、Viewを拡張します。あなたは簡単にすることができます:

this.setKeepScreenOn(true);
1

Googleドキュメントによると Android開発者には2つの方法があります これを行うには:

最初の方法:

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

2番目の方法は、xmlファイルレイアウトにこの属性を追加することです:Android:keepScreenOn="true"

0
Yacine