私のアプリでは読み込みプロセスが長く、デバイスが画面ロックをかけると、何らかの理由でプロセスが停止します。
デバイスが自動画面ロックされないようにするにはどうすればよいですか?
この使用を宣言する必要があります-AndroidManifestの許可:
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
そしてあなたのコードでアクティビティ:
PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();
これを行うことにより、アプリケーションが一時停止または破棄されたときに、このロックを解除することを忘れないでください。
wakeLock.release();
通常、onResume()内でacquireメソッドを呼び出すことをお勧めしますアクティビティとonPause()のreleaseメソッドのこのようにして、一時停止または再開した場合でもアプリケーションが正常に動作することを保証します。
マニフェストで許可を要求せずに画面ロックをオンに保つ別の方法は次のとおりです。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
UIスレッドで長い読み込みプロセスを実行していますか?何かが正しくないようです。プロセスが長すぎて画面ロックがタイムアウトし、プロセスが終了する場合は、バックグラウンドサービスを使用する必要があります。
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
androidmanifestで:
<uses-permission Android:name="Android.permission.DISABLE_KEYGUARD"/>
[〜#〜]または[〜#〜]
フォロー このリンク
XML Way:
親レイアウトでkeepScreenOn
属性を使用するだけです。
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:keepScreenOn="true">
プログラム的に:
フラグを追加することにより、プログラムで設定できます。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
次の行では、アプリがフォアグラウンドにあるときに電話をオンにすることができます
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
次の手順では、ロックボタンが押されたときにロック画面を無効にすることができます。 KeyguardLockクラスはAPIレベル13で非推奨になりました
/*onCreate*/
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); // Deprecated :/
lock.disableKeyguard();
そしてあなたのマニフェストで:
<uses-permission Android:name="Android.permission.DISABLE_KEYGUARD"/>
まだ言及されていない興味深いオプションの1つは、
View#setKeepScreenOn(boolean onOff)
方法。これは実際には、アプリの実行中の任意の時点で動的に使用できます。アプリの状態に応じて画面モードを設定します
キーガードコードを使用すると、完全に機能します
メインアクティビティファイルのonCreateメソッドにコードを貼り付け、Androidマニフェストファイル)に権限を貼り付けるだけです