J'ai lu les commentaires de l'autre réponse qui a été postée et je peux trouver une réponse : Oui ! Gardez simplement à l'esprit que cette solution NE COMPORTE PAS de boutons de contrôle du lecteur multimédia.
Ce que nous voulons faire, c'est deux choses :
1) Empêcher le lecteur multimédia d'afficher des notifications lorsque l'écran est éteint
2) Créez une notification lorsque l'écran se rallume, et seulement si le lecteur multimédia n'en a pas déjà créé une. PLUS, supprimer notre propre notification dès que le lecteur multimédia en affiche à nouveau une.
La première chose est facile :
![Disable/Enable Notifications depending on Screen Activity State]()
En utilisant la puissance d'un bloc "Display On ?" réglé sur "When Changed", vous pouvez précisément activer ou désactiver les notifications pour votre application de lecteur. Lorsque l'état de l'écran devient désactivé, la fibre passe par Non. Le bloc AppOp désactive l'autorisation d'afficher des notifications. Vous avez utilisé le bloc Allow Notifications avant, vous pouvez utiliser celui-là aussi. Après les avoir désactivées, la fibre revient au bloc "Display On ?". Maintenant, lorsque l'écran affiche "Allumé", il passe par Oui et exécute l'autre bloc AppOp, ce qui permet de réactiver les notifications.
Ce script est simple et s'exécutera parallèlement à notre script qui crée une notification dès que l'écran est rallumé. Cela viendra dans la deuxième partie :
![Notification]()
Le bloc "Display On ?" situé tout en haut est le premier bloc dont nous avons besoin. Il est réglé sur "When Changed" et ne se déclenche que lorsque l'écran est TURNED ON. Dès que cela se produit, nous voulons savoir si le lecteur multimédia a déjà affiché une notification. Pour ce faire, nous pouvons utiliser le bloc "Notification Posted ?" (qui, dans le flux, est intitulé "Has notification"). Il est défini sur Immédiatement et demande simplement si une application a affiché une notification ou non. Dans ce cas, notre application est votre lecteur multimédia. Vous devez l'écrire dans le bloc. Si elle l'a déjà fait, nous n'avons pas besoin de créer une notification, donc la fibre retourne à "Display On ?". Si elle n'a PAS créé de notification, nous allons créer notre notification.
Vous voulez que cette notification indique le titre, l'artiste ou l'album de la piste en cours. Pour trouver cette information, nous utilisons le bloc "Media Playing ?" réglé sur "Immediately". Vous pouvez attribuer de nombreuses valeurs aux variables, notamment le titre, l'album, l'artiste, la durée (en secondes), la position actuelle (en secondes), etc. Seuls le titre, l'album et l'artiste nous intéressent pour l'instant.
Maintenant, vous devez écouter. Nous ne pouvons pas simplement dire à Automate d'annuler la notification après "Time X" (Timeout) ou lorsque "Media Player Changed". Nous devons le faire manuellement. Automate ne dispose pas d'une option de délai d'attente pour les notifications (je n'en suis pas sûr, mais je pense que c'était le cas il y a longtemps ). Donc, nous créons un script qui affiche la notification et attend que l'on clique dessus pour ouvrir le lecteur multimédia, et un autre qui ANNULE cette notification dès que le lecteur multimédia en affiche une de lui-même.
![Notification and Notification Cancel Script]()
Le script de gauche crée une notification. Il est réglé sur "When clicked".
![NOTIFICATION]()
Dans cette notification, vous pouvez définir le titre et le message. Au lieu d'entrer du texte brut, vous pouvez également utiliser le contenu des variables, comme l'indique java.println(). Veillez à passer en mode de saisie des variables, car sinon, "Title" sera traité comme du texte. Vous verriez alors "Title" dans le message de votre notification, et non le contenu de la variable.
Après ce blocage, nous pouvons procéder. Lorsque vous cliquez sur la notification, la fibre va passer par Oui et aller dans le bloc "Démarrage de l'application". Ici, vous pouvez entrer le package de votre application. Ainsi, dès que vous cliquez sur votre notification, le lecteur multimédia s'ouvre. PLUS : La notification montre déjà le titre, l'album et l'artiste de la piste en cours. Il ne nous reste plus qu'à annuler la notification.
Nous ne pouvons pas nous contenter d'attendre que le lecteur multimédia ait affiché une nouvelle notification. C'est important ! Nous devons attendre que la piste ait changé.
![Notification Cancel]()
Dans cette partie du script, la fibre entre dans le bloc "Media Playing ?". Celui-ci est réglé sur "When Changed", sans autre argument d'entrée (autre que le paquet d'applications). Il est juste là pour attendre que la piste soit changée ou mise en pause. Dès que cela se produit, nous voulons maintenant supprimer notre notification. Pour supprimer une notification à l'aide du bloc "Notification Cancel", nous devons spécifier l'ID de la notification que nous voulons supprimer. Nous ne l'avons pas, pour le moment. MAIS, le bloc "Notification postée ?" peut nous aider à le faire. Nous utilisons le bloc "Has Notification", et vérifions si com.Android.automate a posté une notification, et si oui, nous assignons son ID à une variable. NOTE : Attention à la notification "Running..." ! Si vous ne l'avez pas déjà désactivée, vous devriez le faire maintenant. Automate pourrait renvoyer l'ID de CETTE notification, qui n'est pas celle que nous voulons supprimer.
Maintenant, la fibre continue dans le bloc Notification Cancel, dans lequel vous devez entrer la variable ID. Dès que la notification est annulée, le bloc Notification Show se poursuit par le NO-Path. Celui-ci ramène à la question "Display On ?" du début.
NOTE : Nous ne pouvons pas attendre que le Media Player affiche une notification pour que la piste change ! Si nous attendions que le lecteur multimédia affiche une nouvelle notification, nous pourrions avoir CE scénario :
Écran activé - L'automate affiche la notification - Écran désactivé (la notification de l'automate persiste) - La piste du lecteur multimédia change (mais n'envoie pas de notification, car l'écran est désactivé) - Écran activé - L'automate affiche toujours la notification de la piste précédente (la notification est périmée).
L'option "Quand la piste change" supprimera la notification des Automates. Lorsque l'écran sera allumé, le lecteur multimédia affichera une nouvelle notification. Mais lorsque l'écran est éteint, notre notification actuelle sera supprimée, et une nouvelle sera créée dès que l'écran sera rallumé.
Voici le script complet avec toutes ses parties. NOTE : Soyez conscient de ces blocs Fork. Je ne les ai pas mentionnés dans la réponse.
![ENTIRE SCRIPT]()
J'ai mis ce script à la disposition de la communauté. Vous pouvez le trouver ICI . Il vous suffit maintenant de modifier les valeurs des blocs et les noms des paquets d'applications.
J'espère que cela vous aidera ! Bonne chance !
EDIT : Ce script n'inclut pas les fonctionnalités de mon autre réponse. Ce script ne s'arrête pas automatiquement dès que le Media Player est fermé. Et jusqu'à présent, vous devez également lancer ce script manuellement. Les deux choses pourraient être incluses cependant.