|
|
|
|
|
- Affichage de la notification
- Gestion de la batterie et notification persistante
- Spécification du cas d'usage (Android 14)
ThreadPersistant (Fonction) En anglais : ThreadPersistent Rend un thread persistant. L'application n'est pas arrêtée tant qu'au moins un thread persistant est en cours d'exécution (même si toutes ses fenêtres ont été fermées). L'utilisation d'un thread persistant permet par exemple : - de continuer la lecture d'un morceau de musique même si la fenêtre de lecture est fermée.
- de transmettre des coordonnées GPS de façon permanente.
ThreadExécute("MonThread", threadContexteGlobal, ProcJoueMusique)
Notif est une Notification
Notif.Titre = "Lecture en cours ..."
Notif.ActionClic = ProcStopMusique
Notif.Supprimable = Faux
ThreadPersistant("MonThread", Notif, thpMédia)
Syntaxe
<Résultat> = ThreadPersistant(<Nom du thread> , <Notification à afficher> [, <Usage>])
<Résultat> : Booléen - Vrai si le thread a été rendu persistant,
- Faux en cas d'erreur. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
<Nom du thread> : Chaîne de caractères Nom du thread qui doit devenir persistant. Ce nom est donné lors de l'exécution du thread (fonction ThreadExécute). Ce thread doit exister et utiliser le contexte global de l'application. <Notification à afficher> : Variable de type Notification Nom de la variable de type Notification correspondant à la notification à afficher pendant l'exécution du thread persistant. Cette notification ne doit pas être déjà affichée. Si un thread persistant est en cours d'exécution au moment de l'appel de la fonction ThreadPersistant, la notification associée à ce thread sera remplacée par la notification spécifiée. Lorsque le thread aura terminé son exécution, la notification sera automatiquement masquée si plus aucun thread persistant n'est en cours. <Usage> : Constante de type Entier Nouveauté 2025Constante permettant de définir le cas d'usage du thread persistant. Ce paramètre est nécessaire à partir d'android 14. | | thpAppareilConnecté | Interaction avec des appareils connectés. Par exemple, interactions avec un capteur de fréquence cardiaque. Permission ajoutée : android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE (type manifeste : connectedDevice) Permissions supplémentaires requises : - au moins une parmi les suivantes doit avoir été déclarée :
- android.permission.CHANGE_NETWORK_STATE, android.permission.CHANGE_WIFI_STATE,
- android.permission.CHANGE_WIFI_MULTICAST_STATE, android.permission.NFC,
- android.permission.TRANSMIT_IR,android.permission.UWB_RANGING
- ou au moins une parmi les suivantes doit avoir été déclarée et acceptée :
- android.permission.BLUETOOTH_ADVERTISE,
- android.permission.BLUETOOTH_CONNECT,
- android.permission.BLUETOOTH_SCAN
| thpCaméra | Accès à la caméra en arrière-plan. Permission ajoutée : android.permission.FOREGROUND_SERVICE_CAMERA (type manifeste : camera) Permission supplémentaire requise : android.permission.CAMERA | thpLocalisation | Opérations nécessitant un accès à la localisation, telles que la navigation et le partage de localisation. Permission ajoutée : android.permission.FOREGROUND_SERVICE_LOCATION (type manifeste : location) Permissions supplémentaires requises : au moins une parmi les permissions suivantes doit avoir été déclarée : android.permission.ACCESS_COARSE_LOCATION, android.permission.ACCESS_FINE_LOCATION | thpMédia | Lecture continue de musique ou de vidéo en arrière-plan. Permission ajoutée : android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK (type manifeste : mediaPlayback) Permissions supplémentaires requises : aucune | thpMicro | Enregistrement audio en arrière-plan Permission ajoutée : android.permission.FOREGROUND_SERVICE_MICROPHONE (type manifeste : microphone) Permissions supplémentaires requises : android.permission.RECORD_AUDIO | thpSanté | Suivi d'activité physique. Permission ajoutée : android.permission.FOREGROUND_SERVICE_HEALTH (type manifeste : health) Permission supplémentaire requise :- Permission à déclarer : android.permission.HIGH_SAMPLING_RATE_SENSORS
- ou au moins une parmi les suivantes doit avoir été déclarée et acceptée : android.permission.BODY_SENSORS, android.permission.ACTIVITY_RECOGNITION
| thpServiceCourt | Opération critique qui doit se terminer impérativement sans être interrompue. La durée maximale de l'opération ne doit pas dépasser 3 minutes. Permission ajoutée : aucune (type manifeste : shortService) | thpSynchroDonnees | Synchronisation de données. Par exemple, importation depuis une base de données. Permission ajoutée : android.permission.FOREGROUND_SERVICE_DATA_SYNC (type manifeste : dataSync) Permission supplémentaire requise : aucune | thpUsageSpécial (Valeur par défaut) | Opération dont le cas d'usage ne correspond à aucun des cas prédéfinis. Permission ajoutée : android.permission.FOREGROUND_SERVICE_SPECIAL_USE (type manifeste : specialUse)
Remarque : Il est possible de décrire plus précisément le cas d'usage du thread persistant en surchargeant le manifeste de l'application pour ajouter le noeud suivant en tant que fils du noeud <service> :
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="explication du cas d'usage"/> Cela peut être nécessaire pour la publication sur le store Google. |
Remarques Affichage de la notification - L'affichage d'une notification pendant l'exécution d'un thread persistant est obligatoire. Ainsi, l'utilisateur est informé que l'application qu'il a lancée est toujours en cours d'exécution même si plus aucune fenêtre n'est ouverte. Il peut reprendre la main sur cette application lors du clic sur la notification.
Il est également possible de relancer l'application lors du clic sur la notification : il suffit de renseigner la propriété ActiveApplication dans la variable de type Notification. - Conseil : Ne pas ouvrir de fenêtre depuis un thread persistant. Les fenêtres peuvent être ouvertes par exemple depuis la procédure appelée par la notification.
- A partir de Android 13, l'utilisateur a la possibilité de masquer la notification. Il est possible d'empêcher cette action grâce à la propriété Supprimable de la variable de type Notification.
Nouveauté 2025Spécification du cas d'usage (Android 14) A partir de Android 14, il est nécessaire d'indiquer le ou les cas d'usage du thread persistant lors de l'appel à la fonction ThreadPersistant grâce au paramètre <Usage>. Une nouvelle permission sera automatiquement ajoutée selon les cas d'usage spécifiés. Certains cas d'usage nécessitent que des permissions associées soient également déclarées. Ces permissions ne sont pas ajoutées automatiquement. Si les permissions associées n'ont pas été ajoutées à l'application, une erreur fatale sera levée. Par exemple si la constante thpCamera est utilisée, la permission android.permission.FOREGROUND_SERVICE_CAMERA sera automatiquement ajoutée à l'application et la permission android.permission.CAMERA est requise.
Liste des exemples associés :
|
Android (WINDEV Mobile) : Android Notifications Persistantes
[ + ] Cet exemple permet de créer des notifications persistantes qui apparaissent même si l'application n'est plus utilisée. Un thread persistant lancé au démarrage de l'appareil permet d'envoyer les notifications.
|
Classification Métier / UI : Code neutre Composante : wd300android.jar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|