アプリの実行中にスクリーンセーバーを無効にする方法はありますか?
画面を暗くすることは私が言いたいことです。
アプリの実行中にスクリーンセーバーを無効にする方法はありますか?
画面を暗くすることは私が言いたいことです。
回答:
あなたはこのようなものを使いたいです:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Googleが推奨するXMLの方法もあります。
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Googleスライドを確認してください-スライド16。
「忘れた場合、ウェイクロックはコストがかかります(...)正確性を確保するためにandroid:keepScreenOnの使用を検討してください」
PowerManager.newWakeLockしgetWindow().addFlagsていて、何らかの理由で機能しませんでしたが、これは機能しました。
これらのメソッドはすべて、機能するためにUIスレッドから実行する必要があることに注意してください。Android CordovaアプリでJavaScriptからKeepScreenOnを変更する方法をご覧ください
ビューでは、私の場合はSurfaceViewサブクラスで、画面を常にオンに設定できます。私はこのビューがまだものを描いている間、画面をそのままにしたかったのです。
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
これをonStartに配置します
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
そしてこれはあなたに現れます
<uses-permission android:name="android.permission.WAKE_LOCK" />
することを忘れないでください
wakeLock.release();
onStopにて
PARTIAL_WAKE_LOCK画面をオフにすることができます。
これはこれを解決する最良の方法です
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
特定の画面を常に目覚めさせたい場合は、これを処理するためのより良い方法です。それ以外の場合は、有効化および無効化するときに自分で処理する必要があります。
https://developer.android.com/training/scheduling/wakelock.html
procedure SetSleep(aEnable:Boolean);
var
vFlags: integer;
begin
vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or
TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or
TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or
TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;
if aEnable then
begin
CallInUIThread ( // uses FMX.Helpers.Android
procedure
begin
TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
end );
end
else
CallInUIThread (
procedure
begin
TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
end );
end;
1.getWindow()。addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);は、ネイティブAndroidに最適なソリューションです。
2. React androidアプリケーションを使用する場合は、以下のコードを使用してください。
@ReactMethod
public void activate() {
final Activity activity = getCurrentActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
});
}
}
これは、ウェイクロックを取得することで実行できます。
私はそれを自分自身をテストしなかったが、ここで、この上に小さなチュートリアルです。
View#setKeepScreenOnまたはそれに相当するxmlレイアウト属性android:keepScreenOn="true"
WakeLockます。
android:keepScreenOn="true"は、私の意見では活動に対する唯一の有効な回答です。どうしても必要な場合を除き、ウェイロックから離れてください。
View.setKeepScreenOn()[リンク] [1]の使用についてはどうですか?自分で使ったことはありません。[1]:developer.android.com/reference/android/view/...