PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WM17] Empecher Mise en Veille avec Android
[WM17] Empecher Mise en Veille avec Android
Débuté par Jean Marc FUSELLA, 27 déc. 2011 12:35 - 16 réponses
Posté le 27 décembre 2011 - 12:35
Bonjour

J'aimerai savoir comment empêcher par programme la mise en veille de mon smartphone Android lors de l'utilisation d'une application

Merci de votre aide
Posté le 27 décembre 2011 - 19:45
Rebonjour

Après plusieurs recherches sur le Net, j'ai créé une procedure globale Java :

public static void StoppeModeVeille()

{
import android.os.Bundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.content.*;
import android.app.Activity;

Context myContext = getContexteApplication();

PowerManager pm = (PowerManager) MyContext.getSystemService(Context.POWER_SERVICE);

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "Wake_Lock");

wl.acquire();
}

Mais ça n'a pas l'air de fonctionner
Quelqu'un a t'il une idee ?
Merci d'avance et meilleurs voeux pour cette annee 2012
Posté le 30 décembre 2011 - 00:09
il suffit de faire une petite procédure java qui force un champ de la fenetre a se maintenir toujours visible avec ce code :

import android.view.*;
///////////////////////////////////////////

public static void ForceScreenOn(String champ)
{
View ViewVisible = (View) getView(champ).getParent();
ViewVisible.setKeepScreenOn(true);
}

Ex: un champ libellé LIB_TEXTE1,
j'appelle ForceScreenOn("LIB_TEXTE1")

that's all !!
Posté le 30 décembre 2011 - 11:26
Merci
J'avais déjà trouvé votre message et j'ai appliqué votre procédure => NICKEL

Bonne année 2012
Posté le 09 février 2012 - 11:34
A quel moment appeler ForceScreenOn, sur l’initialisation du lib ?
car me retourne l'erreur: l'appel de code natif n'est pas disponible.
merci d'avance
Posté le 09 février 2012 - 12:33
Bonjour

Quelle version de WM17 avez vous ?
Cela marche très bien sur la version 56g mais plus sur la version 61h
En fait, plus aucune procedure Java ne passe la compil en 61h.

Cette procedure doit être appelée par exemple dans l'init de la fenêtre qui doit être constament affichée

Cordialement
Posté le 13 février 2012 - 18:31
Bonjour

Formidable tout ca!
Je cherche une fonction de ce type pour empêcher l'appli de passer en arrière plan (eh oui WD n'a pas pensé a faire une fonction pour la remettre en premier plan!)

Qqn a une idée?? ou des exemples de code java...

En tout cas merci...

Développeurs Windev >>> Courage!
Posté le 17 février 2012 - 11:54
ma version est bien la 61h
je comprend donc pourquoi aucune de mes procédures ne fonctionne
merci
Posté le 18 mars 2013 - 15:58
Bonjour, avez vous trouvé une solution? Je suis actuellement confronté au meme genre de problème

Merci
Posté le 18 mars 2013 - 22:01
A partir de la version 18 il y a la fonction SysMiseEnVeille
Posté le 19 mars 2013 - 11:14
Merci de la reponse

Neanmoins le sysMisEnVeille coupe la connexion de données 3g

Jean Marc FUSELLA avait commencé un code java avec la gestion des WakeLock, et dans le cas de l'utilisation du Partial_Wake_Lock, le telephone se met en veille mais ne coupe pas les connexions.

Ainsi la batterie du telephone est moins sollicité et l'ecran n'a pas besoin d'etre allumé en permanence.

Cependant je n'arrive pas à implementer cette fonctionnalité.

Des pistes?

Merci
Posté le 20 mars 2013 - 14:38
Bonjour,

Pour ma part, j'utilise la procédure Java suivante :

import android.app.Activity;
import android.view.Window;
import android.view.WindowManager.LayoutParams;

public static void JavaVerrouillageEcran(boolean keepScreenOn) {
Activity xa = getCurrentActivity();
Window xw = xa.getWindow();
if (keepScreenOn) {
xw.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
xw.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}

Laura
Posté le 20 mars 2013 - 15:58
Désolé de ne pas avoir répondu plus tôt

En fait,

1) je déclare une procedure GLOBALE Java "StoppeModeVeille" dont le code est :

import android.view.*;

public static void StoppeModeVeille(String champ)

// On force l'affichage d'un libellé sur l'écran
{
View ViewVisible = (View) getView(champ).getParent();
ViewVisible.setKeepScreenOn(true);
}

2) Je créé un libellé invisible LIB_Libelle1 sur ma page principale

3) J'appelle cette procédure dans les déclarations globales de ma page principale: StoppeModeVeille("LIB_Libelle1")

Ca marche bien pour moi

Bon courage
Membre enregistré
3 messages
Posté le 10 juin 2013 - 10:03
Bonjour,

Je déterre se sujet car je recherche la même chose ou presque. Par contre j'ai un gros problème lorsque je crée une procédure Java (même vide) dans mon projet je n'arrive plus à créer mon APK, la génération se bloque à 80% et ne bouge plus...
Je voudrai savoir si cela vous est déjà arrivé et s'il y a une solution.

Je voudrai savoir aussi si la dernière solution de Jean Marc FUSELLA permet de réveiller le téléphone (tel un wakelock) ou bloque juste la mise en veille du téléphone quand l'application est lancée ?
Posté le 11 juin 2013 - 12:49
Il faut utiliser un thread persistant (cf fonction ThreadPersistant).
Posté le 11 septembre 2013 - 13:17
Bonjour,

Merci Laura, je ne suis pas passé par la case WM18, maintenant j'attends la 19.
Ton code marche super bien.
Maintenant il faut que je trouve le code java pour remettre mon appli au 1er plan quand on appuie sur l'icône de notification.
Encore merci

Patrick
Posté le 07 janvier 2019 - 16:38
J'utilise une petite fonction en timersys sur 3 ou 4 secondes.
Dans cette fonction, je réaliste juste un toastaffiche(".")

Le toastaffiche réveille le GSM....
on voit juste un petit point de temps en temps mais pas un problème dans mon appli android.
ça me permet de voir que mon appli n'est pas plantée aussi.

Fred