9

長い間、画面がスリープ モードにならないようにする方法を知っていると思っていましたが、アクティビティで次のコードを使用するだけでした。

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

ただし、これは、電話が「開発者モード」の場合、つまり USB デバッグ (設定 --> 開発者向けオプション --> USB デバッグ) が有効/チェックされている場合にのみ機能することに気付きました。次に、上記のコードは実際に画面/デバイスを停止してスリープ状態にします。

そのデバッグがチェックされていない場合、私の画面は明日がないようにスリープ状態になります。デバイスで Android 4.04 を実行していますが、

 android:minSdkVersion="12"
 android:targetSdkVersion="16"

編集

Commonsware の提案でテストし、コードに setKeepScreenOn() を追加したので、次のようになります。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
View root = findViewById(android.R.id.content); 
if (root != null)
    root.setKeepScreenOn(true);

このコードが実際に実行されることも確認しました。しかし、それは何も変わりません。

4

2 に答える 2

2

私は同じ問題に直面していました。プロジェクトに1つのアクティビティを使用していましたが、他のすべての画面はフラグメントでありandroid:keepScreenOn="true"、メインアクティビティで使用しました。

これを使用してみて、希望の結果が得られなかった場合はお知らせください。

ありがとう。

于 2014-09-26T17:08:26.117 に答える
1

私のアプリで実際に機能する唯一のソリューションは、メイン アプリケーション クラスの WakeLock です。残念ながら、SCREEN_BRIGHT_WAKE_LOCK フラグは非推奨です!

public class MyApp extends Application {
    PowerManager.WakeLock screenOnWakeLock;
    @Override
    public void onCreate() {
        super.onCreate();
        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        wakeLock =  powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"ScreenlockTag");
        wakeLock.acquire();
    }

    @Override
    public void onTerminate()
    {
        if (screenOnWakeLock != null && screenOnWakeLock.isHeld())
            screenOnWakeLock.release();
        super.onTerminate();
    }
}
于 2015-09-11T07:51:35.580 に答える