質問

フォアグラウンドサービスを実行するAndroidアプリがあり、そのサービスが実行されている間、ユーザーに画面を維持するオプションを提供したいと思います。

設定の設定、チェックボックスの好みに追加されました。もしそうなら、画面をオンにしたいが、デフォルトではオフに設定したいと思います。それは私のユーザーが求めているものです。現在、私は好みを持っていますが、サービスを実行するとき、私の画面はまだここに閉じられています。

グローバル変数

private static final String PREFS_DEVICE = "DeviceInfo";

コードとIFステートメント

SharedPreferences settings = getSharedPreferences(PREFS_DEVICE, 0);
            if(settings.getBoolean("screenPref", false)) {
                final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
                this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
                this.mWakeLock.acquire();
            }

そして、私はこれをマニフェストに追加しました

<uses-permission android:name="android.permission.WAKE_LOCK" />

私が間違っていることはありますか?サービスからこれを行う別の方法はありますか、それともサービスから不可能です(そうではないことを願っています)。

役に立ちましたか?

解決

これを試して:

mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,         
                            "");    
mWakeLock.acquire();

他のヒント

flag_keep_screen_onを使用する場合があります

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

そして、あなたが続けたくないとき

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

この方法ははるかに優れています。BCZは使用しています 許可、サービス、OFCバッテリーの減少:

public void setWakelock(Activity Target, boolean State)
{
    if (State) Target.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    else Target.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    return;
}

編集

マークマーフィーが提供するパターンに従ってください wakefulintentservice. 。そして、あなたは彼に説明を見つけることができます とても良いもの

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top