2015-08-12 2 views
2

J'écris actuellement un programme pour notre service d'incendie local pour afficher les firetrucks qui doivent être occupés, la destination de l'alarme, etc.Java - écran Endormi (ou écran)

Le programme lui-même est écrit en Java et fonctionne sur un pi de framboise connecté à un écran de télévision. Afin de protéger l'écran de rester sur le même site et le même contenu et empêcher l'écran de brûler Je veux mettre l'écran en veille ou allumer l'économiseur d'écran lorsque l'alarme est terminée (commande sera envoyée sur TCP, mais ce n'est pas le problème). Je souhaite également réactiver l'écran lorsqu'une nouvelle alarme est reçue.

Je n'ai pas été en mesure de trouver une solution qui va mettre l'écran en veille ou économiseur d'écran, et le récupérer à nouveau. Est-ce que quelqu'un a fait quelque chose comme ça?

Répondre

1

Malheureusement, Java n'a pas de bibliothèque intégrée pour cela. Cependant, vous pouvez faire

Runtime.getRuntime().exec("xscreensaver-command -activate"); 

Pour désactiver l'écran de veille, faire

Runtime.getRuntime().exec("xscreensaver-command -deactivate"); 

Aussi, assurez-vous xscreensaver est installé

sudo apt-get install xscreensaver 

Je ne sais pas si cela aidera à réduire la chaleur de l'écran, mais vous pouvez essayer

public class ScreenSaver { 
    private static final JFrame frame = new JFrame(); 

    public static void startScreenSaver() throws Exception { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     frame.setBackground(Color.BLACK); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setUndecorated(true); 
     frame.validate(); 
     GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(frame); 
     frame.setVisible(true); 
    } 

    public static void stopScreenSaver() { 
     frame.setVisible(false); 
    } 
} 
+1

Cela a résolu le problème principal. Une bonne solution jusqu'à présent. Y at-il une commande Linux qui met l'écran en veille et en plus une commande pour le réveiller? – fnL

+0

@fnL, je l'ai édité et ajouté le code pour le désactiver/le réveiller. – Arin

-1

Je ne pense pas que Java vous permet de contrôler les fonctions natives de votre ordinateur, telles que le mode veille ou stand-by.

Il y a quelques options que vous pouvez prendre:

1) Si votre programme sera toujours mise au point, vous pouvez avoir un fil qui garde la trace de la durée de votre programme n'a pas été touché et vous pouvez Activer un "économiseur d'écran" dans votre programme.

2) Vous pouvez utiliser le JNA pour accéder aux fonctions natives de l'ordinateur et le configurer pour afficher l'économiseur d'écran ou y dormir.

0

Il n'existe aucun moyen de le faire à partir de Java. Vous devrez soit recourir à des API spécifiques à la plate-forme (à l'aide de JNI), soit, si vous le pouvez, aux utilitaires de ligne de commande spécifiques à la plate-forme. L'émulation d'un économiseur d'écran vous-même, bien que possible, ne fera que gaspiller plus de puissance (vous dessinez activement quelque chose gaspillant l'énergie CPU/GPU, et l'écran ne passera pas en veille).

Il peut être préférable de déposer l'idée de contrôler l'écran de votre application. Au lieu de cela laisser le système d'exploitation - toute plate-forme devrait être facilement mis en place pour éteindre l'écran après un certain temps sans intervention de l'utilisateur.