package de.uhilger.calypso.handler; import com.sun.net.httpserver.HttpExchange; import de.uhilger.calypso.App; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * Obwohl ein laufendes VLC-Programm mit Tastaturbefehlen gesteuert * werden kann, funktioniert es nicht, dem Prozess einen Tastaturbefehl * wie z.B. S fuer Stopp ueber process.getOutputStream zu 'schreiben', * moeglicherweise, weil auf dem Raspberry Pi das VLC als Kommando- * zeilenprogramm ohne UI laeuft. Im Augenblick gelingt nur die Steuerung * ueber dbus. Hier muss noch geprueft werden, ob das auch mit Windows und * Mac OS klappt, was aber fuer einen Einsatz auf dem Raspberry Pi * nebensaechlich ist. * * Die Steuerung von VLC via dbus wiederum folgt dem Standard mpris * (Media Player Remote Interfacing Specification) von freedesktop.org, * der von zahlreichen Mediaplayern unterstuetzt wird. * * @author Ulrich Hilger */ public class DBusHandler extends CmdHandler { private static final Logger logger = Logger.getLogger(DBusHandler.class.getName()); public DBusHandler(String cmd) { super(cmd); } @Override protected String process(HttpExchange t, String params) { String antwort;// = null; try { StringBuilder kommando = new StringBuilder(); kommando.append(VLCPlayer.DBUS_PREFIX); kommando.append(cmd); logger.log(Level.FINE, "kommando: {0}", kommando.toString()); Process player_process = Runtime.getRuntime().exec(kommando.toString()); antwort = "Kommando ausgefuehrt: " + kommando; } catch (IOException ex) { antwort = "Fehler: " + ex.getMessage(); } return antwort; } }