2014-11-10 16 views
7

Esiste un modo per caricare campioni audio dalla memoria utilizzando il metodo SoundPool.load?Carica audio dalla memoria in Android

Purtroppo tutti gli methods forniti in SoundPool utilizzano argomenti per i file reali. Il problema è che voglio caricare suoni da file zip su SDcard, e l'estrazione di zip (come nella soluzione this) non è un'opzione.

Inoltre, c'è un solution per il caricamento da file zip non indossati, ma i miei file sono divisi (e saranno con password).

Quindi c'è un modo per avere java.io.FileDescriptor che rappresenta un file virtuale, quindi posso implementare alcune classi astratte posizionando i miei flussi?

Cordiali saluti.

risposta

2

Ho ottenuto la risposta finale a questa domanda. Questa funzione manca sulla piattaforma Android. Il framework di riproduzione multimediale Android non lo supporta da molto tempo. Google lo nota anche, così Android6.0 (API Level23) introduce android.media.MediaDataSource che potrebbe essere utilizzato come pura sorgente di dati di array di byte di memoria. Prima dell'API Level23, abbiamo ancora bisogno di copiare i dati della memoria in un file temporaneo nel file system.

il seguente URL fornire alcune ulteriori indizi su questo tema, la sua spiegazione è corretta sia per audio e video: how to play video from byte array in media player

1

Volevo suggerire di utilizzare MemoryFile, ma dopo averlo verificato, ho trovato che MemoryFile non ha il metodo getFileDescriptor(), significa che non è possibile utilizzarlo come parametro in SoundPool.load(). Ma ho trovato questo post: what is the use of MemoryFile in android

Un ragazzo implementato MemoryFileUtil.getFileDescriptor (memFile), ha i suoi messaggi codici lì. Se i suoi codici potrebbero davvero funzionare, significa che potremmo caricare un campione sonoro dalla memoria usando SoundPool.load(). L'unico problema è scrivere i nostri dati di memoria in quel file di memoria. Il sito segue mostra come scrivere i dati della memoria (da risultato della query SQLITE) in un file di memoria: http://www.programcreek.com/java-api-examples/index.php?api=android.os.MemoryFile

io ti do aggiornamenti dopo la mia prova.

+1

Sono riuscito a utilizzare FileDescriptor di MemoryFile come i parametri per MediaPlayer setDataSource e SoundPool.load() , segnala sempre i seguenti errori: java.io.IOException: setDataSourceFD non riuscito: stato = 0x80000000 –