J2ME – Verarbeitung von Multimediadaten MMAPI


3.3.2.3 Verarbeitung von Multimediadaten:

Für die Verarbeitung und Aufnahme von Multimediadaten ist die Klasse MMUtil zuständig. Für die Wiedergabe von Audiodaten dienen die Methoden playMidi(), playTone(), playVoice(), für die Aufnahme recordAudio() und recordAudioUntilEternity().

playMidi() dient zum Abspielen von MIDI – Musikstücken welche in der .jar- Datei abgelegt sind und erwartet einen String als Bezeichner für das entsprechende Musikstück. Sie startet einen Player, welcher über die Methode Manager.createPlayer() erzeugt wird. Der createPlayer() – Methode wird der Inputstream mit dem Klingelton sowie die Typangabe als String „audio/midi“ übergeben.

playTone() erwartet true oder false als Übergabeparameter, um entweder einen hohen Bestätigungston ( true ) oder einen tieferen Fehlerton auszugeben. Tonhöhe, Spieldauer und Lautstärke werden in dieser Methode festgelegt und mittels Manager.playtone() wiedergegeben.

playVoice() spielt Audiodaten aus einem byte[] ab und erwartet zusätzlich zum byte[] als Übergabeparameter einen String der das Format der Audiodaten angibt (z. B. wav, amr ). Wie beim Abspielen von MIDI-Tönen wird auch mittels der Methode Manager.createPlayer() ein Player erzeugt, welcher nach Aufruf der start() – Methode die Audiodaten wiedergibt.

Zur Aufnahme von Audiodaten über das interne Mikrofon des Mobiltelefons für eine definierte Zeitdauer dient die Methode recordAudio(), welche einen anonymen Thread erzeugt, falls das Endgerät die Aufnahme von Audiodaten unterstützt. Dies lässt sich durch die Abfrage des System-Propertys „supports.audio.capture“ ermitteln.

Zum Aufnehmen der Audiodaten wird zunächst eine Player-Instanz mit der URI „capture://audio“ erzeugt, mittels RecordControl.setRecordStream() wird der Stream, in den geschrieben werden soll, festgelegt. Nach dem Start des Players und des dem Aufruf von startRecord() des RecordControl schläft der Thread solange, wie die übergebene Zeitdauer vorgibt. Nach Ablauf der Zeit wird die Aufnahme durch stopRecord() angehalten, commit() schliesst den Vorgang ab.

Audioaufnahme:
[sourcecode language=’java’]byte[] voice = null;
Player p = Manager.createPlayer(“capture://audio”);
p.prefetch();
RecordControl rc = (RecordControl)p.getControl(“RecordControl”);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String type = rc.getContentType();

rc.setRecordStream(baos);
p.start();
rc.startRecord();
CoreMidlet.getInstance().setRecording(true);

try{
sleep(capturelength);
}
catch (InterruptedException e){
log (“interrupedException”);
}
p.stop();
rc.stopRecord();
rc.commit();
p.close();

baos.close();
voice = baos.toByteArray();

[/sourcecode]

Nach der Aufnahme werden die Audiodaten durch den Aufruf von CoreMidlet.sendAudio() an den anderen Benutzer verschickt. Die Aufzeichnung von Streaming-Audio ist derzeit leider nicht möglich, deshalb muss zuerst die Aufnahme abgeschlossen werden, bevor die Daten verschickt werden können.

Weiter zu Teil 2 – Audio aufnehmen / Sprachaufnahme

 



Ähnliche Artikel zu "J2ME – Verarbeitung von Multimediadaten MMAPI":


Wenn Du noch Fragen zum Thema J2ME – Verarbeitung von Multimediadaten MMAPI hast, dann schreib einfach einen Kommentar - oder schau dir meine Buchtipps an:

Wie ist DEINE Meinung zum Thema J2ME – Verarbeitung von Multimediadaten MMAPI?

Schreib sie einfach als Kommentar:

You must be logged in to post a comment.




karbacher.org © J2ME – Verarbeitung von Multimediadaten MMAPI