Bonjour,
Je suis actuellement en train de développer une application Android permettant d'assister les travailleurs isolés (en usine par exemple). Lorsque le téléphone est trop incliné (travailleur allongé, tombé, etc) pendant un certain délais, le téléphone passe en mode "Pré-alerte". Il est alors possible pendant un certains délais de désactiver le mode pré-alerte afin d'informer le téléphone que tout va bien. Au delà de ce délais, si le mode pré-alerte n'est pas désactivé le téléphone passe en mode alerte. Le téléphone est alors localisé, un sms avec la localisation du travailleur est envoyé et ce dernier déclenche une alarme sonore permettant de localiser plus facilement l'utilisateur.
Dans un premier temps, tout mon code se trouvait dans une activity (Main). Ce qui fait que l'application ne fonctionnait que lorsque celle-ci est affichée à l'utilisateur. Toutefois, il peut arriver que l'utilisateur ferme cette application (du moins l'IHM). Pour résoudre ce problème, j'ai décidé d'utiliser un service qui tourne en tâche de fond. Ce dernier est alors capable de détecter une trop forte inclinaison même si l'IHM n'est pas affichée. Cela fonctionne plutôt pas mal.
En revanche, lorsque l'IHM est fermée et que le téléphone passe en mode pré-alerte, j'aimerais que le service ré-ouvre l'IHM afin de lui proposer de désactiver le mode pré-alerte.
J'ai donc utilisé le code suivant :
Celà ouvre bien l'IHM, mais ouvre une nouvelle instance de mon IHM (je me retrouve donc avec deux instances "Main" de mon IHM affichée)...Je voudrais que ce soit la même instance qui soit affichée. J'ai donc fouillé sur internet et je suis tombé sur un attribut à rajouter dans mon manifest :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Intent intent = new Intent(DATI.getInstance().context, Main.class); DATI.getInstance().context.startActivity(intent);
Ca fonctionne a peu près bien, sauf dans le cas suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2android:launchMode="singleInstance"
1. J'ouvre l'IHM => le service est exécuté
2. Je ferme l'IHM (bouton HOME ou BACK)
3. Je penche mon téléphone => le mode pré-alerte est déclenché et mon IHM se réouvre (telle qu'elle était avant)
4. Je ferme l'IHM (bouton HOME ou BACK)
PAFFFF le téléphone se met à buger...la surcouche HTC se mets à rebooter, le téléphone passe en mode paysage, des applis fermées il y a deux jours se ré-ouvrent, etc...
Quelqu'un aurait une solution à mon problème ? Soit pour régler ce bug, soit pour concevoir l'application d'une autre manière ? S'il vous faut d'autres morceaux de codes que vous jugez utile, n'hésitez pas à me demander !
Merci d'avance![]()
Partager