He leído los comentarios de la otra respuesta que se ha publicado y puedo dar una respuesta: Sí. Sólo hay que tener en cuenta que esta solución NO cuenta con botones de control de Media Player.
Lo que queremos hacer es dos cosas:
1) Evitar que el reproductor multimedia publique notificaciones mientras la pantalla está apagada
2) Crear una notificación cuando la pantalla se vuelva a encender, y sólo cuando el reproductor multimedia no haya creado ya una. ADEMÁS, eliminar nuestra propia notificación tan pronto como el reproductor multimedia vuelva a publicar una.
Lo primero es fácil:
Utilizando el poder de un bloque "¿Mostrar en?" establecido en "Cuando se cambie", puede activar o desactivar con precisión las notificaciones para su aplicación de reproducción. Cuando el estado de la pantalla cambie a apagado, la fibra pasará por No. El bloque AppOp desactiva el permiso para publicar notificaciones. Si antes usaste el bloque Permitir Notificaciones, puedes usar ese también. Después de deshabilitarlas, la fibra vuelve al bloque "¿Display On?". Ahora, cuando la pantalla cambie a "Activado", procederá a través de Sí y ejecutará el otro bloque AppOp, habilitando las notificaciones nuevamente.
Ahora, este script es fácil y se ejecutará junto a nuestro script que crea una notificación tan pronto como la pantalla se vuelve a encender. Esto vendrá en la segunda parte:
El bloque "Display On?" en la parte superior es el primer bloque que necesitamos. Está configurado como "When Changed" y sólo procede cuando la pantalla está ENCENDIDA. En cuanto eso ocurra, queremos saber si el reproductor multimedia ya ha publicado una notificación. Para ello, podemos utilizar el bloque "Notification Posted?" (que, en el flujo está etiquetado como "Has notification"). Está configurado como Inmediatamente y simplemente pregunta si una aplicación ha publicado una notificación o no. En este caso, nuestra aplicación es el reproductor multimedia. Tienes que escribirlo en el bloque. Si ya lo ha hecho, no es necesario crear una notificación, por lo que la fibra vuelve a "¿Mostrar On?". Si NO ha creado una notificación, procedemos a crear nuestra notificación.
Quieres que esa notificación diga el Título y el Artista y o Álbum de la pista actual en curso. Para encontrar esa información, utilizamos el bloque "¿Medios en reproducción?" configurado como "Inmediatamente". Puedes asignar muchos valores a las variables, incluyendo Título, Álbum, Artista, Duración (en seg), Posición actual (en seg) y más. Sólo el Título, el Álbum y el Artista son relevantes para nosotros ahora.
Ahora, tienes que escuchar. No podemos simplemente decirle a Automate que cancele la notificación después de un "Tiempo X" (Tiempo de espera) o cuando el "Reproductor multimedia haya cambiado". Tenemos que hacerlo manualmente. Automate no cuenta con una opción de Timeout para las notificaciones (no estoy seguro, pero creo que lo hizo hace mucho tiempo ). Así que, hacemos un script que publica la notificación y espera hasta que se haga clic para abrir el Reproductor de Medios, y hacemos otro que CANCELA esta notificación tan pronto como el Reproductor de Medios publicó uno por sí mismo.
El script de la izquierda crea una notificación. Se establece en "Al hacer clic".
En esta notificación, puede establecer el Título y el Mensaje. En lugar de introducir texto plano, también puede utilizar el contenido de las variables, como se conoce por java.println(). Asegúrese de entrar en el modo de introducción de variables, ya que de lo contrario procesará "Título" como texto. Entonces verá "Título" en el mensaje de su notificación, no el contenido de la variable.
Después de ese bloque, podemos continuar. Al hacer clic en la notificación, la fibra procederá a través de Sí y pasará al bloque "Inicio de la aplicación". Aquí, puedes introducir el paquete de tu aplicación. Así, tan pronto como se haga clic en la notificación, se abrirá el reproductor de medios. ADEMÁS: La notificación ya muestra el título, el álbum y el artista de la pista que se está ejecutando. Ahora sólo tenemos que cancelar la notificación.
No podemos esperar a que el reproductor de medios publique una nueva notificación. Eso es importante. Debemos esperar hasta que la PISTA HAYA CAMBIADO.
En esta parte del script, la fibra entra en el bloque "¿Media Playing?". Este se pone en "Cuando se cambie" sin más argumentos de entrada (aparte del paquete de la aplicación). Sólo está ahí para esperar hasta que la pista haya sido cambiada o pausada. Tan pronto como eso ocurra, queremos eliminar nuestra notificación. Para eliminar una notificación mediante el bloque "Cancelar notificación", tenemos que especificar el ID de la notificación que queremos eliminar. En este momento no lo tenemos. PERO, el bloque "Notificación publicada" puede ayudarnos con eso. Usamos el bloque "Tiene Notificación", y comprobamos si el com.Android.automate ha publicado una notificación, y si es así, asignamos su ID a una variable. NOTA: ¡Cuidado con la notificación "Running..."! Si aún no la tienes desactivada, deberías hacerlo ahora. Automate podría devolver el ID de ESA notificación, que no es la que queremos eliminar.
Ahora, la fibra continúa en el bloque de Cancelación de la Notificación, en el que hay que introducir la variable ID. Tan pronto como se cancele la notificación, el bloque Mostrar Notificación continuará a través de la ruta NO. Este lleva de nuevo a "¿Mostrar On?" al principio.
NOTA: ¡No podemos esperar a que el reproductor de medios publique una notificación en lugar de cambiar la pista! Si esperamos a que el reproductor multimedia publique una nueva notificación, podríamos tener ESTE escenario:
Pantalla encendida - Automate publica la notificación - Pantalla apagada (la notificación de Automate persiste) - La pista del reproductor multimedia cambia (pero no envía una notificación, porque la pantalla está apagada) - Pantalla encendida - Automate sigue mostrando la notificación de la pista anterior (La notificación está desactualizada).
El "Cuando la pista cambia" eliminará la notificación de Automates. Cuando la pantalla esté encendida, el reproductor multimedia publicará una nueva notificación. Pero cuando la pantalla esté apagada, se borrará nuestra notificación actual y se creará una nueva en cuanto se vuelva a encender la pantalla.
Aquí está el guión completo con todas sus partes. NOTA: Tenga en cuenta estos bloques de bifurcación. No los he mencionado en la respuesta.
He subido este script a la comunidad. Puedes encontrarlo AQUÍ . Ahora sólo hay que cambiar los valores de los bloques y los nombres de los paquetes de aplicaciones.
Espero que esto te ayude. Buena suerte.
EDIT: Este script no incluye las características de mi otra respuesta. Este script no se detiene automáticamente en cuanto se cierra el Media Player. Y hasta ahora, también es necesario iniciar este script manualmente. Sin embargo, ambas cosas podrían incluirse.