Existe-t-il un moyen de désactiver l'économiseur d'écran pendant que mon application est en cours d'exécution?
La gradation de l'écran est ce que je veux dire.
Existe-t-il un moyen de désactiver l'économiseur d'écran pendant que mon application est en cours d'exécution?
La gradation de l'écran est ce que je veux dire.
Réponses:
Vous souhaitez utiliser quelque chose comme ceci:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
J'ai utilisé:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
pour désactiver le délai d'expiration de l'écran et
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
pour le réactiver.
Il existe également une méthode XML recommandée par Google:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Vérifiez Google Slides - Diapositive 16.
"Wakelocks est coûteux en cas d'oubli (...) Pensez à utiliser android: keepScreenOn pour vous assurer de l'exactitude"
PowerManager.newWakeLocket getWindow().addFlagsn'a pas fonctionné pour une raison quelconque, cela a fonctionné.
Il est important de noter que ces méthodes doivent toutes être exécutées à partir du thread d'interface utilisateur pour fonctionner. Voir la modification de KeepScreenOn à partir de javascript dans l'application Android Cordova
Ajoutez simplement la ligne ci-dessous dans votre MainActivityet votre application n'éteignez jamais les lumières.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Dans une vue, dans mon cas une sous-classe SurfaceView, vous pouvez activer l'écran toujours activé. Je voulais que l'écran reste allumé pendant que cette vue dessinait encore des trucs.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Mettez ceci à onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
Et cela chez vous manifeste
<uses-permission android:name="android.permission.WAKE_LOCK" />
N'oubliez pas de
wakeLock.release();
chez onStop
PARTIAL_WAKE_LOCKpermet à l'écran de s'éteindre.
c'est la meilleure façon de résoudre ce problème
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
est la meilleure façon de gérer cela si nous voulons rendre un écran particulier éveillé tout le temps, sinon nous devons nous gérer vous-même quand l'activer et le désactiver
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); est la meilleure solution pour Android natif.
2. si vous voulez faire avec l'application Android React, veuillez utiliser le code ci-dessous.
@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);
}
});
}
}
Cela peut être fait en acquérant un Wake Lock.
Je ne l'ai pas testé moi-même, mais voici un petit tutoriel à ce sujet.
View#setKeepScreenOnou son équivalent d'attribut de mise en page xml,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"est la seule réponse valable pour les activités à mon avis. Éloignez-vous des réveils sauf si c'est absolument nécessaire.
View.setKeepScreenOn()[link] [1] ?. Je ne l'ai jamais utilisé moi-même. [1]: developer.android.com/reference/android/view/…