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;
|
}
|
}
|