From b6a8f02169ecea91936e81c297e8ce0f1b2f107b Mon Sep 17 00:00:00 2001 From: ulrich Date: Tue, 23 Mar 2021 16:35:55 +0000 Subject: [PATCH] ... --- src/de/uhilger/avdirektor/handler/OMXPlayer.java | 67 +++++++++++++++++++-------------- 1 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/de/uhilger/avdirektor/handler/OMXPlayer.java b/src/de/uhilger/avdirektor/handler/OMXPlayer.java index d8f1f00..de16ca0 100644 --- a/src/de/uhilger/avdirektor/handler/OMXPlayer.java +++ b/src/de/uhilger/avdirektor/handler/OMXPlayer.java @@ -1,11 +1,5 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package de.uhilger.avdirektor.handler; -import com.sun.net.httpserver.HttpExchange; import de.uhilger.avdirektor.App; import de.uhilger.avdirektor.MeldeThread; import de.uhilger.avdirektor.ProzessLauscher; @@ -20,6 +14,12 @@ import java.util.logging.Logger; /** + * Methoden zur Ausfuehrung des Programmes omxplayer des Raspberry Pi + * sowie zum Senden von Kommandos an eine laufende Instanz des + * omxplayer. + * + * Die Klasse OMXPlayer stellt als abstrakte Basisklasse ihre Methoden + * den Handler-Klassen zur Verfuegung. * * @author ulrich */ @@ -27,21 +27,23 @@ private static final Logger logger = Logger.getLogger(OMXPlayer.class.getName()); - /** * Einen Prozess zum Abspielen mit dem omxplayer starten - * @param t * @param urlStr URL der Quelle, die abgespielt werden soll * @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); } + */ /** * Einen Prozess zum Abspielen mit dem omxplayer starten @@ -50,22 +52,24 @@ <a href="https://github.com/huceke/omxplayer/blob/master/README.md"target="_blank">Aufstellung der Parameter</a>.Die Zeichenkette parameter enthaelt Eintraege wie z.B. * App.OPT_LOCAL_AUDIO oder App.OPT_HDMI_AUDIO. Mehrere Parameter werden mit App.BLANK getrennt. - * @param t * @param urlStr der URL der Quelle, die abgespielt werden soll * @param parameter die Parameter, die vom omxplayer angewendet werden sollen * @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 abspielen(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) { @@ -104,6 +108,8 @@ mt.start(); } //servletContext.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; } @@ -124,19 +130,20 @@ entfernen und gibt so das Objekt wieder frei fuer die Ausfuehrung weiterer Kommandos. * - * @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."; } @@ -150,30 +157,32 @@ /** * Dem laufenden Abspielprozess ein Kommando uebermitteln - * @param t * @param k das Kommando laut * <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."; -- Gitblit v1.9.3