Androidはアプリで画面をオンにします
-
27-10-2019 - |
質問
フォアグラウンドサービスを実行する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. 。そして、あなたは彼に説明を見つけることができます 本 とても良いもの
所属していません StackOverflow