J2ME Aufnehmen und Abspielen von Audiodaten


Aufnehmen und Abspielen von Audiodaten

Audioaufnahmen sind mit dem S65 nur im AMR – Format möglich, die Aufzeichnung von Daten im WAV – Format wird mit dem Hinweis auf ein unbekanntes Audioformat abgebrochen. Auch hier besteht die Möglichkeit von eventuellen Inkompatibiliäten zu Endgeräten anderer Hersteller, da SUN das WAV – Format als Grundlage für die Audioaufzeichnung vorsieht. Jedoch ist das AMR – Format aufgrund der hohen Kompression wesentlich besser für die Übertragung via Bluetooth geeignet, die Audiodatenübertragung zwischen zwei Siemens S65 funktioniert einwandfrei, da die Geräte auch AMR – Daten abspielen können.

Jedoch hat die Implementierung der MMAPI auf dem S 65 einen schweren Fehler bei der Aufnahme von Audiodaten, diese ist über eine Ausweichlösung aber dennoch möglich.

Normalerweise werden die Daten in einen ByteArrayOutputStream aufgezeichnet und danach in ein byte[] gespeichert, anschliessend übertragen. Die Firmware der Generation 65 – Endgeräte von Siemens hat hier einen Bug und zeichnet korrupte Daten auf, wenn diese über RecordControl.setRecordStream() in einen Stream aufgezeichnet werden. Versucht man die Daten aus dem byte[] abzuspielen, wird eine Exception wegen des unbekannten Datenformats geworfen. Bei weiteren Untersuchungen wurde keine Möglichkeit gefunden, die Daten korrekt in einen Stream aufzunehmen.

Jedoch stellte sich bei Versuchen heraus, das die für MIDP 1.0 vorgesehenen Klassen der Siemens File API, welche in den Dokumentationen nur für Geräte der Generation 45 und 55 vorgesehen sind, auch bei den aktuellen Geräten der Generation 65 noch auf den Endgeräten vorhanden sind und einwandfrei funktionieren. Die Dokumentation der Klassen findet sich in der MIDP 1.0 JavaDoc des Core Pack 2.1 SDK für Generation 45 und 55 Endgeräte.

Die benötigten Klassen finden sich z. B. im Emulatorpack für das S55 Endgerät, diese müssen in den Classpath des Projekts kopiert werden, um von der IDE erkannt zu werden.

Über die proprietäre File-API von Siemens ist es möglich auch mit dem S65 lesend und schreibend auf das Filesystem zuzugreifen, obwohl das S65 die FileConnection API nicht unterstützt. Natürlich ist diese Lösung nur als Workaround zu betrachten, da nicht garantiert werden kann, dass zukünftige Endgeräte diese Klassen noch implementieren.

Mit Hilfe der File-Klasse ist es möglich, die Audiodaten nicht in einen OutputStream, sondern direkt ins Filesystem aufzuzeichnen, seltsamerweise werden die Daten in ein File vollkommen korrekt aufgezeichnet und können problemlos wieder abgespielt werden.

Die Methoden zur Audioaufzeichnung der Klasse MMUtil wurden entsprechend angepasst und fragen nun zunächst das Property

System.getProperty(“com.siemens.mp.osversion”);

ab, welches nur auf Siemens-Telefonen existiert. Wenn die Methode auf einem anderen Telefon ausgeführt wird, nimmt sie die Daten als WAV in einen OutputStream auf, auf Siemens-Endgeräten schreibt sie die Daten ins Filesystem.

Mittels RecordControl.setRecordLocation(„file:///0:/voice.amr“) werden die Daten in ein File geschrieben, „0:“ gibt dabei den Systemroot an. Zuvor wird geprüft ob das File bereits von einer früheren Aufnahme besteht und gegebenenfalls gelöscht.

Der Methode sendAudio() des CoreMidlet wird der Datentyp als String sowie das byte[] übergeben, falls dieses null ist, wird das File vom Dateisystem mittels

com.siemens.mp.io.File readFile = new com.siemens.mp.io.File();

int fd = readFile.open(“a:/voice.amr”);

int arraySize = readFile.length(fd);

byte[] b = new byte[arraySize];

readFile.read(fd,b,0,arraySize);

readFile.close(fd);

eingelesen und in ein byte[] geschrieben, welches an den Kommunikationspartner verschickt und dort abgespielt werden kann. Zu beachten ist dabei, dass die Pfadangabe für den System-Root beim Einlesen der Datei nicht „0:“, sondern „a:“ lautet.

Somit ist der VoiceChat via Bluetooth mit dem Siemens S65, wenn auch über den Umweg über das Filesystem, voll funktionsfähig.

 



Ähnliche Artikel zu "J2ME Aufnehmen und Abspielen von Audiodaten":


Wenn Du noch Fragen zum Thema J2ME Aufnehmen und Abspielen von Audiodaten hast, dann schreib einfach einen Kommentar - oder schau dir meine Buchtipps an:

Wie ist DEINE Meinung zum Thema J2ME Aufnehmen und Abspielen von Audiodaten?

Schreib sie einfach als Kommentar:

You must be logged in to post a comment.




karbacher.org © J2ME Aufnehmen und Abspielen von Audiodaten