Android-Implementierung hinzugefügt
Ursprüngliche Implementierung für Android hinzugefügt.
This commit is contained in:
		
							parent
							
								
									1d272caebe
								
							
						
					
					
						commit
						555cf013ae
					
				
					 35 changed files with 1681 additions and 0 deletions
				
			
		
							
								
								
									
										178
									
								
								source/Android/multimedia/AudioPlayer.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								source/Android/multimedia/AudioPlayer.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,178 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import time
 | 
			
		||||
import random
 | 
			
		||||
import velamentum.dateien.Datei
 | 
			
		||||
from velamentum.multimedia.Player import Player
 | 
			
		||||
from velamentum.android import *
 | 
			
		||||
 | 
			
		||||
class AudioPlayer(Player):
 | 
			
		||||
    """Die Klasse Player dient der Wiedergabe von Multimediadaten aus einer
 | 
			
		||||
    Datei.
 | 
			
		||||
    
 | 
			
		||||
    Attribute:
 | 
			
		||||
        --- von 'Player' geerbte ---
 | 
			
		||||
        datei (Datei): Die Datei, deren Inhalt wiedergegeben werden soll.
 | 
			
		||||
        dauer (Zahl): Gesamtdauer der Datei in Millisekunden.
 | 
			
		||||
        position (Zahl): Die aktuelle Position der Wiedergabe in Millisekunden.
 | 
			
		||||
        wiederholen (Wahrheitswert): Gibt an, ob die Wiedergabe am Ende von
 | 
			
		||||
            vorne beginnen soll.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, pDatei, pSofortWiedergeben=False):
 | 
			
		||||
        """Konstruktor. Initialisiert den Player.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            pDatei (Datei): Datei, die wiedergegeben werden soll.
 | 
			
		||||
            [optional] pSofortWiedergeben (Wahrheitswert): Soll die Datei direkt
 | 
			
		||||
                nach der Initialisierung wiedergegeben werden?
 | 
			
		||||
        """
 | 
			
		||||
        self.datei = pDatei
 | 
			
		||||
        # Eindeutige ID festlegen zur Verwaltung verschiedener gleichzeitig
 | 
			
		||||
        # wiederzugebender Streams.
 | 
			
		||||
        self._id = "%s%04d" % (pDatei.nenneName(), random.randint(0,8191))
 | 
			
		||||
 | 
			
		||||
        if self.datei.istVorhanden():
 | 
			
		||||
            androide.mediaPlay(self.datei.nennePfad(), self._id, 
 | 
			
		||||
                pSofortWiedergeben)
 | 
			
		||||
            self.dauer = int(androide.mediaPlayInfo(self._id)[1]["duration"])
 | 
			
		||||
        else:
 | 
			
		||||
            print("Fehler. Datei %s nicht gefunden." % pDatei.nennePfad())
 | 
			
		||||
        
 | 
			
		||||
    def __del__(self):
 | 
			
		||||
        """Destruktor. Stellt sicher, dass die Wiedergabe beim Löschen des
 | 
			
		||||
        Objekts beendet wird.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        androide.mediaPlayClose(self._id)
 | 
			
		||||
 | 
			
		||||
    def nenneDauer(self):
 | 
			
		||||
        """Anfrage. Gibt die Gesamtdauer der Datei zurück.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Zahl): Gesamtdauer der Datei in Millisekunden.
 | 
			
		||||
        """
 | 
			
		||||
        return self.dauer
 | 
			
		||||
    
 | 
			
		||||
    def nennePosition(self):
 | 
			
		||||
        """Anfrage. Gibt die aktuelle Position der Wiedergabe zurück.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Zahl): Aktuelle Position der Wiedergabe in Millisekunden.
 | 
			
		||||
        """
 | 
			
		||||
        return int(androide.mediaPlayInfo(self._id)[1]["position"])
 | 
			
		||||
    
 | 
			
		||||
    def setzePosition(self, pPosition):
 | 
			
		||||
        """Auftrag. Legt die aktuelle Position der Wiedergabe fest.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            pPosition (Zahl): Neue Position in Millisekunden.
 | 
			
		||||
        """
 | 
			
		||||
        # Position auf gültigen Bereich (0 - dauer) beschränken.
 | 
			
		||||
        if pPosition > self.dauer:
 | 
			
		||||
            pPosition = self.dauer
 | 
			
		||||
        elif pPosition < 0:
 | 
			
		||||
            pPosition = 0
 | 
			
		||||
        
 | 
			
		||||
        androide.mediaPlaySeek(pPosition, self._id)
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    def nenneDatei(self):
 | 
			
		||||
        """Anfrage. Gibt die Datei zurück, die wiedergegeben werden soll.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Datei): Datei, die wiedergegeben werden soll.
 | 
			
		||||
        """
 | 
			
		||||
        return self.datei
 | 
			
		||||
 | 
			
		||||
    def setzeDatei(self, pDatei):
 | 
			
		||||
        """Auftrag. Legt die Datei fest, die wiedergegeben werden soll.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            pDatei (Datei): Datei, die wiedergegeben werden soll.
 | 
			
		||||
        """
 | 
			
		||||
        Player.setzeDatei(self, pDatei)
 | 
			
		||||
 | 
			
		||||
        if pDatei.istVorhanden():
 | 
			
		||||
            androide.mediaPlay(self.datei.nennePfad(), self._id, False)
 | 
			
		||||
            self.dauer = int(androide.mediaPlayInfo(self._id)[1]["duration"])
 | 
			
		||||
        else:
 | 
			
		||||
            print("Fehler. Datei %s nicht gefunden." % pDatei.nennePfad())
 | 
			
		||||
        
 | 
			
		||||
    def nenneWiederholen(self):
 | 
			
		||||
        """Anfrage. Gibt zurück, ob die Wiedergabe am Ende wieder von vorne
 | 
			
		||||
        beginnen soll.
 | 
			
		||||
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Wahrheitswert): Soll die Datei wiederholt 
 | 
			
		||||
            wiedergegeben werden? 
 | 
			
		||||
        """
 | 
			
		||||
        return androide.mediaPlayInfo(self._id)[1]["looping"]
 | 
			
		||||
        
 | 
			
		||||
    def setzeWiederholen(self, pWiederholen):
 | 
			
		||||
        """Auftrag. Legt fest, ob die Wiedergabe am Ende wieder von vorne
 | 
			
		||||
        beginnen soll.
 | 
			
		||||
 | 
			
		||||
        Parameter:
 | 
			
		||||
            pWiederholen (Wahrheitswert): Soll die Datei wiederholt 
 | 
			
		||||
                wiedergegeben werden? 
 | 
			
		||||
        """
 | 
			
		||||
        return androide.mediaPlaySetLooping(self._id, pWiederholen)
 | 
			
		||||
 | 
			
		||||
    def gibtWieder(self):
 | 
			
		||||
        """Anfrage. Gibt an, ob die Datei gerade wiedergegeben wird.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Wahrheitswert): True falls gerade eine Wiedergabe läuft,
 | 
			
		||||
            False sonst.
 | 
			
		||||
        """
 | 
			
		||||
        return androide.mediaIsPlaying(self._id)["result"]
 | 
			
		||||
    
 | 
			
		||||
    def wiedergeben(self):
 | 
			
		||||
        """Auftrag. Startet die Wiedergabe der Multimediadaten. 
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        androide.mediaPlayStart(self._id)
 | 
			
		||||
        
 | 
			
		||||
    def pausieren(self):
 | 
			
		||||
        """Auftrag. Pausiert die Wiedergabe der Multimediadaten. Die Wiedergabe
 | 
			
		||||
        kann mit 'wiedergeben' fortgesetzt werden.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        androide.mediaPlayPause(self._id)
 | 
			
		||||
    
 | 
			
		||||
    def stoppen(self):
 | 
			
		||||
        """Auftrag. Stoppt die Wiedergabe der Multimediadaten. (Wie 'pausieren',
 | 
			
		||||
        Wiedergabe kann jedoch nicht fortgesetzt werden, sondern beginnt dann
 | 
			
		||||
        von vorne.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        androide.mediaPlayPause(self._id)
 | 
			
		||||
        self.setzePosition(0)
 | 
			
		||||
    
 | 
			
		||||
    # Attribute (verdeckte Getter und Setter)
 | 
			
		||||
    datei = property(nenneDatei, setzeDatei, doc="Die Datei, deren Inhalt " \
 | 
			
		||||
        "wiedergegeben werden soll.")
 | 
			
		||||
    dauer = property(nenneDauer, doc="Die Gesamtdauer der Datei in Millisekunden.")
 | 
			
		||||
    position = property(nennePosition, setzePosition, doc = "Die aktuelle "\
 | 
			
		||||
        "Position der Wiedergabe.")
 | 
			
		||||
    wiederholen = property(nenneWiederholen, setzeWiederholen, doc="Gibt an, "\
 | 
			
		||||
        "ob die Wiedergabe am Ende wieder von vorne beginnen soll.")
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								source/Android/multimedia/AudioRecorder.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								source/Android/multimedia/AudioRecorder.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,58 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import velamentum.dateien.Datei
 | 
			
		||||
from velamentum.multimedia.Recorder import Recorder
 | 
			
		||||
from velamentum.ui.dialoge.Dialog import Dialog
 | 
			
		||||
from velamentum.android import *
 | 
			
		||||
 | 
			
		||||
class AudioRecorder(Recorder):
 | 
			
		||||
    """Die Klasse AudioRecorder dient der Aufnahme von Tondaten in eine Datei.
 | 
			
		||||
    
 | 
			
		||||
    Attribute:
 | 
			
		||||
        --- von 'Recorder' geerbte ---
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, pDatei=velamentum.dateien.Datei.Datei("/sdcard/aufnahme.m4a")):
 | 
			
		||||
        """Konstruktor. Initialisiert den AudioRecorder.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            [optional] datei (Datei): Datei, in der die Aufnahme gespeichert
 | 
			
		||||
                werden soll [Standardwert: Datei mit Pfad '/scard/aufnahme.m4a'].
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.__init__(self, pDatei)
 | 
			
		||||
        
 | 
			
		||||
    def aufnehmen(self):
 | 
			
		||||
        """Auftrag. Startet die Aufnahme der Multimediadaten. 
 | 
			
		||||
        
 | 
			
		||||
        HINWEIS: Die angegebene Datei wird überschrieben.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.aufnehmen(self)
 | 
			
		||||
        androide.recorderStartMicrophone(self.datei.nennePfad())
 | 
			
		||||
    
 | 
			
		||||
    def stoppen(self):
 | 
			
		||||
        """Auftrag. Stoppt die Aufnahme der Multimediadaten.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.stoppen(self)
 | 
			
		||||
        androide.recorderStop()
 | 
			
		||||
        
 | 
			
		||||
    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 ---
 | 
			
		||||
        """
 | 
			
		||||
        self.aufnehmen()
 | 
			
		||||
        dialog = Dialog("Audioaufnahme", "Aufnahme gestartet. Zum Beenden" \
 | 
			
		||||
            "'Ok' drücken.")
 | 
			
		||||
        dialog.zeige()
 | 
			
		||||
        self.stoppen()
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										51
									
								
								source/Android/multimedia/BildRecorder.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								source/Android/multimedia/BildRecorder.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import velamentum.dateien.Datei
 | 
			
		||||
from velamentum.multimedia.Recorder import Recorder
 | 
			
		||||
from velamentum.android import *
 | 
			
		||||
 | 
			
		||||
class BildRecorder(Recorder):
 | 
			
		||||
    """Die Klasse BildRecorder dient der Aufnahme von Bilddaten in eine Datei.
 | 
			
		||||
    
 | 
			
		||||
    Attribute:
 | 
			
		||||
        --- von 'Recorder' geerbte ---
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, pDatei=velamentum.dateien.Datei.Datei("/sdcard/aufnahme.jpg")):
 | 
			
		||||
        """Konstruktor. Initialisiert den BildRecorder.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            [optional] pDatei (Datei): Datei, in der die Aufnahme gespeichert
 | 
			
		||||
                werden soll [Standardwert: Datei mit Pfad '/scard/aufnahme.jpg'].
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.__init__(self, pDatei)
 | 
			
		||||
 | 
			
		||||
    def aufnehmen(self):
 | 
			
		||||
        """Auftrag. Macht ein Foto und speichert es in der angegebenen Datei. 
 | 
			
		||||
        
 | 
			
		||||
        HINWEIS: Die angegebene Datei wird überschrieben.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        androide.cameraCapturePicture(self.datei.nennePfad())
 | 
			
		||||
    
 | 
			
		||||
    def stoppen(self):
 | 
			
		||||
        """Auftrag. Dummy. Für Fotos nutzlos.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        pass
 | 
			
		||||
        
 | 
			
		||||
    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
 | 
			
		||||
        auf die Standard-Kamera-App zurückgegriffen.
 | 
			
		||||
        
 | 
			
		||||
        HINWEIS: Die angegebene Datei wird überschrieben.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        androide.cameraInteractiveCapturePicture(self.datei.nennePfad())
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										91
									
								
								source/Android/multimedia/JNIAudioRecorder.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								source/Android/multimedia/JNIAudioRecorder.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,91 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import velamentum.dateien.Datei
 | 
			
		||||
from velamentum.multimedia.Recorder import Recorder
 | 
			
		||||
from velamentum.ui.dialoge.Dialog import Dialog
 | 
			
		||||
 | 
			
		||||
from jnius import autoclass
 | 
			
		||||
 | 
			
		||||
from velamentum.android import *
 | 
			
		||||
 | 
			
		||||
class JNIAudioRecorder(Recorder):
 | 
			
		||||
    """Die Klasse AudioRecorder dient der Aufnahme von Tondaten in eine Datei.
 | 
			
		||||
    
 | 
			
		||||
    BUG: Die Nutzung aus der QPython-Konsole funktioniert derzeit nicht.
 | 
			
		||||
    Der Aufruf aus einer Skriptdatei funktioniert hingegen problemlos.
 | 
			
		||||
    
 | 
			
		||||
    Attribute:
 | 
			
		||||
        --- von 'Recorder' geerbte ---
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, pDatei=velamentum.dateien.Datei.Datei("/sdcard/aufnahme.m4a")):
 | 
			
		||||
        """Konstruktor. Initialisiert den JNIAudioRecorder.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            [optional] pDatei (Datei): Datei, in der die Aufnahme gespeichert
 | 
			
		||||
                werden soll [Standardwert: Datei mit Pfad 
 | 
			
		||||
                '/sdcard/aufnahme.m4a'].
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.__init__(self, pDatei)
 | 
			
		||||
        
 | 
			
		||||
        # Recorder initialisieren
 | 
			
		||||
        MediaRecorder = autoclass('android.media.MediaRecorder')
 | 
			
		||||
        AudioSource = autoclass('android.media.MediaRecorder$AudioSource')
 | 
			
		||||
        OutputFormat = autoclass('android.media.MediaRecorder$OutputFormat')
 | 
			
		||||
        AudioEncoder = autoclass('android.media.MediaRecorder$AudioEncoder')
 | 
			
		||||
        self.__mRecorder = MediaRecorder()
 | 
			
		||||
        self.__mRecorder.setOutputFile(pDatei.nennePfad()) # Pfad der Datei
 | 
			
		||||
        self.__mRecorder.setAudioSource(AudioSource.MIC) # Aufnahme vom Mikrofon
 | 
			
		||||
        self.__mRecorder.setAudioChannels(1) # Mono
 | 
			
		||||
        self.__mRecorder.setAudioEncodingBitRate(131072) # 128 kbps
 | 
			
		||||
        self.__mRecorder.setAudioSamplingRate(48000) # 48 kHz
 | 
			
		||||
        # ACHTUNG: Reihenfolge ist relevant! Erst Format, dann Encoder!
 | 
			
		||||
        self.__mRecorder.setOutputFormat(OutputFormat.MPEG_4) # MP4-Container
 | 
			
		||||
        self.__mRecorder.setAudioEncoder(AudioEncoder.AAC) # AAC-Format
 | 
			
		||||
        
 | 
			
		||||
    def __del__(self):
 | 
			
		||||
        """Destruktor. Notwendig zur Freigabe des MediaRecorders beim Löschen
 | 
			
		||||
        des Python-Objekts.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        self.__mRecorder.release()
 | 
			
		||||
 | 
			
		||||
    def aufnehmen(self):
 | 
			
		||||
        """Auftrag. Startet die Aufnahme der Multimediadaten. 
 | 
			
		||||
        
 | 
			
		||||
        HINWEIS: Die angegebene Datei wird überschrieben.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.aufnehmen(self)
 | 
			
		||||
        self.__mRecorder.setOutputFile(self.datei.nennePfad())    
 | 
			
		||||
        self.__mRecorder.prepare()
 | 
			
		||||
        self.__mRecorder.start()
 | 
			
		||||
    
 | 
			
		||||
    def stoppen(self):
 | 
			
		||||
        """Auftrag. Stoppt die Aufnahme der Multimediadaten.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.stoppen(self)
 | 
			
		||||
        self.__mRecorder.stop()
 | 
			
		||||
        
 | 
			
		||||
    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 ---
 | 
			
		||||
        """
 | 
			
		||||
        self.aufnehmen()
 | 
			
		||||
        dialog = Dialog("Audioaufnahme", "Aufnahme gestartet. Zum Beenden" \
 | 
			
		||||
            "'Ok' drücken.")
 | 
			
		||||
        dialog.zeige()
 | 
			
		||||
        self.stoppen()
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										144
									
								
								source/Android/multimedia/Player.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								source/Android/multimedia/Player.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,144 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import time
 | 
			
		||||
import velamentum.dateien.Datei
 | 
			
		||||
from velamentum.android import *
 | 
			
		||||
 | 
			
		||||
class Player(object):
 | 
			
		||||
    """Die Klasse Player dient der Wiedergabe von Multimediadaten aus einer
 | 
			
		||||
    Datei.
 | 
			
		||||
    
 | 
			
		||||
    Attribute:
 | 
			
		||||
        datei (Datei): Die Datei, deren Inhalt wiedergegeben werden soll.
 | 
			
		||||
        dauer (Zahl): Gesamtdauer der Datei in Millisekunden.
 | 
			
		||||
        position (Zahl): Die aktuelle Position der Wiedergabe in Millisekunden.
 | 
			
		||||
        wiederholen (Wahrheitswert): Gibt an, ob die Wiedergabe am Ende von
 | 
			
		||||
            vorne beginnen soll.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, pDatei):
 | 
			
		||||
        """Konstruktor. Initialisiert den Player.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            pDatei (Datei): Datei, die wiedergegeben werden soll.
 | 
			
		||||
        """
 | 
			
		||||
        self.datei = pDatei
 | 
			
		||||
        # Eindeutige ID festlegen zur Verwaltung verschiedener gleichzeitig
 | 
			
		||||
        # wiederzugebender Streams.
 | 
			
		||||
        self._id = "%s%04d" % (pDatei.nenneName(), randint(0,4095))
 | 
			
		||||
    
 | 
			
		||||
    def nenneDatei(self):
 | 
			
		||||
        """Anfrage. Gibt die Datei zurück, die wiedergegeben werden soll.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Datei): Datei, die wiedergegeben werden soll.
 | 
			
		||||
        """
 | 
			
		||||
        return self.datei
 | 
			
		||||
    
 | 
			
		||||
    def setzeDatei(self):
 | 
			
		||||
        """Anfrage. Gibt die Datei zurück, die wiedergegeben werden soll.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Datei): Datei, die wiedergegeben werden soll.
 | 
			
		||||
        """
 | 
			
		||||
        return self.datei
 | 
			
		||||
        
 | 
			
		||||
    def nenneWiederholen(self):
 | 
			
		||||
        """Anfrage. Gibt zurück, ob die Wiedergabe am Ende wieder von vorne
 | 
			
		||||
        beginnen soll.
 | 
			
		||||
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Wahrheitswert): Soll die Datei wiederholt 
 | 
			
		||||
            wiedergegeben werden? 
 | 
			
		||||
        """
 | 
			
		||||
        return False
 | 
			
		||||
        
 | 
			
		||||
    def setzeWiederholen(self, pWiederholen):
 | 
			
		||||
        """Auftrag. Legt fest, ob die Wiedergabe am Ende wieder von vorne
 | 
			
		||||
        beginnen soll.
 | 
			
		||||
 | 
			
		||||
        Parameter:
 | 
			
		||||
            pWiederholen (Wahrheitswert): Soll die Datei wiederholt 
 | 
			
		||||
                wiedergegeben werden? 
 | 
			
		||||
        """
 | 
			
		||||
        pass
 | 
			
		||||
    
 | 
			
		||||
    def nenneDauer(self):
 | 
			
		||||
        """Anfrage. Gibt die Gesamtdauer der Datei zurück.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Zahl): Gesamtdauer der Datei in Millisekunden.
 | 
			
		||||
        """
 | 
			
		||||
        return 0
 | 
			
		||||
    
 | 
			
		||||
    def nennePosition(self):
 | 
			
		||||
        """Anfrage. Gibt die aktuelle Position der Wiedergabe zurück.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Zahl): Gesamtdauer der Datei in Millisekunden.
 | 
			
		||||
        """
 | 
			
		||||
        return 0
 | 
			
		||||
    
 | 
			
		||||
    def setzePosition(self, pPosition):
 | 
			
		||||
        """Auftrag. Legt die aktuelle Position der Wiedergabe fest.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            pPosition (Zahl): Neue Position in Millisekunden.
 | 
			
		||||
        """
 | 
			
		||||
        pass
 | 
			
		||||
    
 | 
			
		||||
    def gibtWieder(self):
 | 
			
		||||
        """Anfrage. Gibt an, ob die Datei gerade wiedergegeben wird.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            --- keine ---
 | 
			
		||||
            
 | 
			
		||||
        Rückgabe (Wahrheitswert): True falls gerade eine Wiedergabe läuft,
 | 
			
		||||
            False sonst.
 | 
			
		||||
        """
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    def wiedergeben(self):
 | 
			
		||||
        """Auftrag. Startet die Wiedergabe der Multimediadaten. 
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        pass
 | 
			
		||||
        
 | 
			
		||||
    def pausieren(self):
 | 
			
		||||
        """Auftrag. Pausiert die Wiedergabe der Multimediadaten. Die Wiedergabe
 | 
			
		||||
        kann mit 'wiedergeben' fortgesetzt werden.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        pass
 | 
			
		||||
    
 | 
			
		||||
    def stoppen(self):
 | 
			
		||||
        """Auftrag. Stoppt die Wiedergabe der Multimediadaten.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        pass
 | 
			
		||||
    
 | 
			
		||||
    # Attribute (verdeckte Getter und Setter)
 | 
			
		||||
    datei = property(nenneDatei, setzeDatei, doc="Die Datei, deren Inhalt " \
 | 
			
		||||
        "wiedergegeben werden soll.")
 | 
			
		||||
    dauer = property(nenneDauer, doc="Die Gesamtdauer der Datei in Millisekunden.")
 | 
			
		||||
    position = property(nennePosition, setzePosition, doc = "Die aktuelle "\
 | 
			
		||||
        "Position der Wiedergabe.")
 | 
			
		||||
    wiederholen = property(nenneWiederholen, setzeWiederholen, doc="Gibt an, "\
 | 
			
		||||
        "ob die Wiedergabe am Ende wieder von vorne beginnen soll.")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										96
									
								
								source/Android/multimedia/Recorder.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								source/Android/multimedia/Recorder.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,96 @@
 | 
			
		|||
# -*- 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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										53
									
								
								source/Android/multimedia/VideoRecorder.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								source/Android/multimedia/VideoRecorder.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import velamentum.dateien.Datei
 | 
			
		||||
from velamentum.multimedia.Recorder import Recorder
 | 
			
		||||
from velamentum.android import *
 | 
			
		||||
 | 
			
		||||
class VideoRecorder(Recorder):
 | 
			
		||||
    """Die Klasse VideoRecorder dient der Aufnahme von Videodaten in eine Datei.
 | 
			
		||||
    
 | 
			
		||||
    Attribute:
 | 
			
		||||
        --- von 'Recorder' geerbte ---
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, pDatei=velamentum.dateien.Datei.Datei("/sdcard/aufnahme.mp4")):
 | 
			
		||||
        """Konstruktor. Initialisiert den VideoRecorder.
 | 
			
		||||
        
 | 
			
		||||
        Parameter:
 | 
			
		||||
            [optional] pDatei (Datei): Datei, in der die Aufnahme gespeichert
 | 
			
		||||
                werden soll [Standardwert: Datei mit Pfad '/scard/aufnahme.m4a'].
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.__init__(self, pDatei)
 | 
			
		||||
 | 
			
		||||
    def aufnehmen(self):
 | 
			
		||||
        """Auftrag. Startet die Aufnahme der Multimediadaten. 
 | 
			
		||||
        
 | 
			
		||||
        HINWEIS: Die angegebene Datei wird überschrieben.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.aufnehmen(self)
 | 
			
		||||
        androide.recorderCaptureVideo(self.datei.nennePfad())
 | 
			
		||||
    
 | 
			
		||||
    def stoppen(self):
 | 
			
		||||
        """Auftrag. Stoppt die Aufnahme der Multimediadaten.
 | 
			
		||||
        
 | 
			
		||||
        Parameter 
 | 
			
		||||
            --- keine ---
 | 
			
		||||
        """
 | 
			
		||||
        Recorder.stoppen(self)
 | 
			
		||||
        androide.recorderStop()
 | 
			
		||||
        
 | 
			
		||||
    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 ---
 | 
			
		||||
        """
 | 
			
		||||
        androide.startInteractiveVideoRecording(self.datei.nennePfad())
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								source/Android/multimedia/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								source/Android/multimedia/__init__.py
									
										
									
									
									
										Normal file
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue