# -*- coding: utf-8 -*-
import time
import velamentum.dateien.Datei
from velamentum.android import *

class Recorder(object):
    """Die Klasse Recorder dient der Aufnahme von Multimediadaten in eine Datei.
    
    Attribute:
        aufnahmeLaeuft (Wahrheitswert): Gibt an, ob gerade eine Aufnahme läuft.
        datei (Datei): Die Datei, in der die Aufnahme gespeichert werden soll.
    """

    def __init__(self, pDatei=velamentum.dateien.Datei.Datei("/sdcard/aufnahme")):
        """Konstruktor. Initialisiert den Recorder.
        
        Parameter:
            [optional] datei (Datei): Datei, in der die Aufnahme gespeichert
                werden soll [Standardwert: Datei mit Pfad '/scard/aufnahme'].
        """
        self.aufnahmeLaeuft = False
        self.datei = pDatei
    
    def nimmtAuf(self):
        """Anfrage. Gibt an, ob gerade eine Aufgabe läuft.
        
        Parameter:
            --- keine ---
            
        Rückgabe (Wahrheitswert): True falls eine Aufnahme läuft, False sonst.
        """
        return self.aufnahmeLaeuft
    
    def nenneDatei(self):
        """Anfrage. Gibt die Datei zurück, in der die Aufnahme gespeichert
            werden soll.
        
        Parameter 
            --- keine ---
            
        Rückgabe (Datei): Datei, in der die Aufnahme gespeichert werden soll.
        """
        return self.datei
        
    def setzeDatei(self, pDatei):
        """Auftrag. Legt die Datei fest, in der die Aufnahme gespeichert
        werden soll.
        
        Parameter 
            pDatei (Datei): Datei, in der die Aufnahme gespeichert werden soll.
        """
        self.datei = pDatei

    def aufnehmen(self):
        """Auftrag. Startet die Aufnahme der Multimediadaten. 
        
        HINWEIS: Die angegebene Datei wird überschrieben.
        
        Parameter 
            --- keine ---
        """
        self.aufnahmeLaeuft = True
    
    def stoppen(self):
        """Auftrag. Stoppt die Aufnahme der Multimediadaten.
        
        Parameter 
            --- keine ---
        """
        self.aufnahmeLaeuft = False
    
    def aufnehmenAuto(self, pDauer):
        """Auftrag. Startet eine Aufnahme mit der in 'pDauer' angegebenen Dauer
        und beendet die Aufnahme danach automatisch. 
        
        HINWEIS: Die angegebene Datei wird überschrieben.
        
        Parameter 
            pDauer (Zahl): Dauer der Aufnahme.
        """
        self.aufnehmen()
        time.sleep(pDauer)
        self.stoppen()
        
    def aufnehmenInteraktiv(self):
        """Auftrag. Startet eine interaktive Aufnahme. Der Benutzer erhält die
        Möglichkeit die Aufnahme interaktiv zu starten und zu stoppen. Dazu wird
        in der Regel auf die jeweilige Recorder-Applikation zurückgegriffen.
        
        HINWEIS: Die angegebene Datei wird überschrieben.
        
        Parameter:
            --- keine ---
        """
        pass