KONFIGURATION CONFIGURATION_FILE_PATH = "url"; CLIENT_TS_UPDATE_INTERVAL = 10 * 60 * 1000 CLIENT_MAX_VIDEO_OFFSET = 50 CLIENT_MAX_BEHIND_COUNT = 5 CLIENT_INITIAL_VIDEO_SPEED = 1 CLIENT_DEBUG_MODE = 0 CLIENT_DEFAULT_LOGO = ""; CLIENT_LOG_PREFIX = "MovieClient " + clientNumber +" sagt"; MovieClient private Socket serverSocket; private int clientOffset; private int clientNumber; private String serverIp; private String serverPort; private boolean connected; private MovieQueue movieQueue; prepare(){ //konfiguration holen //selbst server im background starten wenn nötig connect(); setCurrentOffset(); //zeitverzögerung berechnen movieQueue.init(); //abzuspielende Videos holen } connect() disconnect() sendMessage() type ts //nachricht zur offset bestimmung type slowflag //signal an den server dass es zu schnell geht type geturl //erfragt die URL eines Videos, um es in den lokalen Storage zu kopieren type other //sonstige nachrichten setCurrentOffset(){ 10 Nachrichten senden, dann durchschnitt bestimmen timer alle X min neu? } class MovieQueue extends ArrayList add(movie,start)-> fügt ein Video hinzu -> prüft ausserdem, ob das Video auf der SD-Karte liegt. -> fragt sonst den Server nach einer URL und kopiert das Video in lokalen Ordner update() -> fragt den Server, ob es neue Videos gibt. remove() -> entfernt Videos aus der Queue init() -> holt movies vom server und initialisiert die Queue class MovieStarter implements Runnable hat startzeit sleep bis startzeit wacht auf und startet MoviePlayer(); hat methode zum destroyen (falls config änderung) class MoviePlayer() extends Activity private double videoSpeed; startet das Video class VideoSyncer{ stoppt das video wenn nötig sendet notfalls "TOO FAST" flag an den Server, der das dann an alle Clients weitedrleitet } setVideoSpeed(){ } class Movie() private starttime private title Views: client view wenn debug: Anzeige: Current client id Connected to Server XY Nächstes Video in sonst: Anzeige: default logo image movie View spielt movie in fullscreen dann zurück zum Client