|  |  | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |    | 
 |  |  |   /* | 
 |  |  |    | 
 |  |  |     bei etwas wie | 
 |  |  |     http://rpi4-az:9090/avd/play?t=/Filme/S/sound_city.m4v&p=--timeout=60%20--threshold=60 | 
 |  |  |    | 
 |  |  |     sind = nicht nur nach dem Query-Parameter sondern auch in dessen Wert | 
 |  |  |      | 
 |  |  |     also erstmal nach & zerlegen: | 
 |  |  |     t=/Filme/S/sound_city.m4v | 
 |  |  |     p=--timeout=60%20--threshold=60 | 
 |  |  |    | 
 |  |  |     dann die Position beim ersten = von links abschneiden | 
 |  |  |    | 
 |  |  |   */ | 
 |  |  |   protected Map getQueryMap(HttpExchange t) { | 
 |  |  |     HashMap map = new HashMap(); | 
 |  |  |     String query = t.getRequestURI().getQuery(); | 
 |  |  |     if(query != null && query.length() > 0) { | 
 |  |  |       String qParts[] = query.split("&"); | 
 |  |  |       for(String qPart : qParts) { | 
 |  |  |         //logger.info("qPart: " + qPart); | 
 |  |  |         logger.finer("qPart: " + qPart); | 
 |  |  |         String pParts[] = qPart.split("="); | 
 |  |  |         map.put(pParts[0], pParts[1]); | 
 |  |  |         logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]); | 
 |  |  |         /* | 
 |  |  |         if(qPart.contains(" ")) { | 
 |  |  |           String pParts[] = qPart.split(" "); | 
 |  |  |           for(String pPart : pParts) { | 
 |  |  |             String ppParts[] = pPart.split("="); | 
 |  |  |             map.put(ppParts[0], ppParts[1]); | 
 |  |  |             logger.finer("ppParts[0]: " + ppParts[0] + ", ppParts[1]: " + ppParts[1]); | 
 |  |  |           } | 
 |  |  |         } else { | 
 |  |  |           String pParts[] = qPart.split("="); | 
 |  |  |           map.put(pParts[0], pParts[1]); | 
 |  |  |           logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]); | 
 |  |  |         } | 
 |  |  |         */ | 
 |  |  |         /* | 
 |  |  |         String pParts[] = qPart.split("="); | 
 |  |  |         for(String pPart : pParts) { | 
 |  |  |           logger.finer("pPart: " + pPart); | 
 |  |  |         } | 
 |  |  |         */ | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |     return map; | 
 |  |  | 
 |  |  |    * @param token | 
 |  |  |    * @return Antwort des Servers | 
 |  |  |    */ | 
 |  |  |   public String abspielen(HttpExchange t, String urlStr, String token) { | 
 |  |  |     return abspielenMitParametern(t, urlStr, null, token); | 
 |  |  |   public String abspielen(String urlStr, String token) { | 
 |  |  |     return abspielenMitParametern(urlStr, null, token); | 
 |  |  |   } | 
 |  |  |    | 
 |  |  |   public String abspielenMitRueckmeldung(HttpExchange t, String urlStr, String meldeUrlStr, String token) { | 
 |  |  |     return abspielenMitParameternUndRueckmeldung(t, urlStr, null, meldeUrlStr, token); | 
 |  |  |   public String abspielenMitRueckmeldung(String urlStr, String meldeUrlStr, String token) { | 
 |  |  |     return abspielenMitParameternUndRueckmeldung(urlStr, null, meldeUrlStr, token); | 
 |  |  |   } | 
 |  |  |    | 
 |  |  |   /** | 
 |  |  | 
 |  |  |    * @param token | 
 |  |  |    * @return Antwort des Servers | 
 |  |  |    */ | 
 |  |  |   public String abspielenMitParametern(HttpExchange t, String urlStr, String parameter, String token) { | 
 |  |  |     return abspielenMitParameternUndRueckmeldung(t, urlStr, parameter, null, token); | 
 |  |  |   public String abspielenMitParametern(String urlStr, String parameter, String token) { | 
 |  |  |     return abspielenMitParameternUndRueckmeldung(urlStr, parameter, null, token); | 
 |  |  |   } | 
 |  |  |    | 
 |  |  |   public String abspielenMitParameternUndRueckmeldung(HttpExchange t, String urlStr, String parameter, String meldeUrlStr, String token) { | 
 |  |  |   public String abspielenMitParameternUndRueckmeldung(String urlStr, String parameter, String meldeUrlStr, String token) { | 
 |  |  |     String antwort;// = null; | 
 |  |  |     try { | 
 |  |  |       Object o = t.getAttribute(App.PI_PLAYER); | 
 |  |  |       //Object o = t.getAttribute(App.PI_PLAYER); | 
 |  |  |       Process o = App.getPlayerProcess(); | 
 |  |  |       if(o != null) { | 
 |  |  |         tilgen(t);         | 
 |  |  |         tilgen();         | 
 |  |  |       } | 
 |  |  |       StringBuilder kommando = new StringBuilder("omxplayer "); | 
 |  |  |       if(parameter != null) { | 
 |  |  | 
 |  |  |         mt.start(); | 
 |  |  |       } | 
 |  |  |       //servletContext.setAttribute(App.PI_PLAYER, player_process); | 
 |  |  |       t.setAttribute(App.PI_PLAYER, player_process); | 
 |  |  |       //t.setAttribute(App.PI_PLAYER, player_process); | 
 |  |  |       App.setPlayerProcess(player_process); | 
 |  |  |       //Runtime.getRuntime().exec("killall dbus-daemon"); | 
 |  |  |       antwort = "Abspielen gestartet, url: " + urlStr; | 
 |  |  |     } | 
 |  |  | 
 |  |  |    * @param t  | 
 |  |  |    * @return die Antwort des Servers | 
 |  |  |    */ | 
 |  |  |   public String tilgen(HttpExchange t) { | 
 |  |  |   public String tilgen() { | 
 |  |  |     String antwort; // = null; | 
 |  |  |     try { | 
 |  |  |       Object o = t.getAttribute(App.PI_PLAYER); | 
 |  |  |       //Object o = t.getAttribute(App.PI_PLAYER); | 
 |  |  |       Process o = App.getPlayerProcess(); | 
 |  |  |       if(o == null) { | 
 |  |  |         t.setAttribute(App.PI_PLAYER, null); | 
 |  |  |         //t.setAttribute(App.PI_PLAYER, null); | 
 |  |  |         App.setPlayerProcess(null); | 
 |  |  |         // t.removeAttribute(App.PI_PLAYER); | 
 |  |  |         antwort = "Es ist kein Player zum Beenden vorhanden, aber der Servlet-Kontext wurde bereinigt."; | 
 |  |  |       } else { | 
 |  |  |         kommando(t, App.CMD_STOP); | 
 |  |  |         kommando(App.CMD_STOP); | 
 |  |  |         //t.removeAttribute(PI_PLAYER); | 
 |  |  |         antwort = "Player gestoppt, Kontext bereinigt."; | 
 |  |  |       } | 
 |  |  | 
 |  |  |    * <a href="https://github.com/huceke/omxplayer/blob/master/README.md" target="_blank">Liste der Kommandos</a> | 
 |  |  |    * @return die Antwort des Servers | 
 |  |  |    */ | 
 |  |  |   public String kommando(HttpExchange t, String k) { | 
 |  |  |   public String kommando(String k) { | 
 |  |  |     String antwort; // = null; | 
 |  |  |     try { | 
 |  |  |       Object o = t.getAttribute(App.PI_PLAYER); | 
 |  |  |       //Object o = t.getAttribute(App.PI_PLAYER); | 
 |  |  |       Process o = App.getPlayerProcess(); | 
 |  |  |       if(o == null) { | 
 |  |  |         App.setPlayerProcess(null); | 
 |  |  |         //servletContext.removeAttribute(PI_PLAYER); | 
 |  |  |         t.setAttribute(App.PI_PLAYER, null); | 
 |  |  |         //t.setAttribute(App.PI_PLAYER, null); | 
 |  |  |         antwort = "Es wird nichts abgespielt dem ein Kommando gesendet werden kann."; | 
 |  |  |       } else { | 
 |  |  |         Process player_process = (Process) o; | 
 |  |  |         Process player_process = o; | 
 |  |  |         OutputStream os = player_process.getOutputStream(); | 
 |  |  |         Writer out = new BufferedWriter(new OutputStreamWriter(os)); | 
 |  |  |         out.write(k); | 
 |  |  |         out.flush(); | 
 |  |  |         if(k.equals(App.CMD_STOP)) { | 
 |  |  |           out.close(); | 
 |  |  |           App.setPlayerProcess(null); | 
 |  |  |           //player_process.destroy(); | 
 |  |  |           //player_process = null; | 
 |  |  |           t.setAttribute(App.PI_PLAYER, null); | 
 |  |  |           //t.setAttribute(App.PI_PLAYER, null); | 
 |  |  |           //servletContext.removeAttribute(PI_PLAYER); | 
 |  |  |         } | 
 |  |  |         antwort = "Kommando '" + k + "' ausgefuehrt."; |