2014-11-10 15 views
7

Gibt es eine Möglichkeit, einen Sound Proben aus dem Speicher mit Methode zu laden?Sound aus dem Speicher in Android laden

Leider methods bereitgestellt in SoundPool verwenden Argumente für echte Dateien. Das Problem ist, dass ich Sounds von Zip-Datei auf SD-Karte laden möchte, und extrahieren Zip (wie in this Lösung) ist keine Option.

Außerdem gibt es eine solution zum Laden von entpackten Zip-Dateien, aber meine Dateien werden komprimiert (und wird mit Passwort sein).

Also gibt es eine Möglichkeit, java.io.FileDescriptor zu haben, die eine virtuelle Datei darstellt, also kann ich einige abstrakte Klassen implementieren, indem ich meine eigenen Streams platziere?

Mit freundlichen Grüßen.

Antwort

2

Ich habe die endgültige Antwort auf diese Frage. Dies ist Feature-fehlt auf Android-Plattform. Android Media Playback Framework unterstützt es für eine sehr lange Zeit nicht. Google bemerkt es auch, so dass Android6.0 (API Level23) android.media.MediaDataSource einführt, das als eine reine Speicher-Byte-Array-Datenquelle verwendet werden könnte. Vor API Level23 müssen wir die Speicherdaten immer noch in eine temporäre Datei im Dateisystem kopieren.

die folgende URL ein paar weiteren Hinweise zu diesem Thema zur Verfügung stellt, ist seine Erklärung richtig sowohl für Audio und Video: how to play video from byte array in media player

1

ich dich nach verwenden MemoryFile, aber überprüft es, fand ich die MemoryFile keine getFileDescriptor hat() Methode vorschlagen wollte, es bedeutet, dass wir es nicht als Parameter in SoundPool.load() verwenden könnte. Aber ich fand diesen Beitrag: what is the use of MemoryFile in android

Ein Typ implementiert MemoryFileUtil.getFileDescriptor (memfile), er seine Codes dort postet. Wenn seine Codes wirklich funktionieren könnten, heißt das, dass wir mit SoundPool.load() ein Soundsample aus dem Speicher laden könnten. Das einzige Problem ist das Schreiben unserer Speicherdaten in diese Speicherdatei. Die folgende Website zeigt, wie Speicherdaten schreiben (aus SQLITE Abfrageergebnis) in eine Speicherdatei: http://www.programcreek.com/java-api-examples/index.php?api=android.os.MemoryFile

Ich gebe Ihnen Updates nach meinem Test.

+1

ich versagt hat MemoryFile des FileDescriptor als die Parameter für Mediaplayer setDataSource und SoundPool.load() zu verwenden, Es meldet immer die folgenden Fehler: java.io.IOException: setDataSourceFD fehlgeschlagen .: status = 0x80000000 –

Verwandte Themen