Domanda


Ho bisogno di scrivere un app Android che scaricare suoni da internet per un ulteriore uso.
Dove devo conservare questi suoni? SQLite è un'opzione? E qual è il modo migliore per caricare e riprodurre questi file?
Grazie in anticipo.

È stato utile?

Soluzione

mi sento di raccomandare di mettere i file sulla scheda SD, se ne esiste uno. Una cosa da notare, però, è che non bisogna mai codificare un percorso sulla scheda SD. Si sarebbe probabilmente vogliono fare qualcosa sulla falsariga di:

try {
        //Create handle to SD card drectory
        exportDirectory = new File(Environment.getExternalStorageDirectory() + "/MyDir");

        //Verify export path exists.  Create otherwise.
        if (exportDirectory.exists() == false) {
            if (exportDirectory.mkdirs() == false) {

                //Directory structure could not be created.
                //Message the user here
                return false;
            }
        }

        //Create handle to SD card file.
        exportFile = new File(exportDirectory.getAbsolutePath() + "/whatever.mp3");

        //Do whatever here

} catch(Exception e) {
        //Exception.  Message user and bail
        return false;
}

Da lì si tratta di una semplice questione di trasferire qualunque dati che si desidera nel file. Un database SQLite sarebbe probabilmente eccessivo per questa applicazione, a meno che non si ha intenzione di memorizzare una grande quantità di informazioni supplementari. V'è inoltre alcuna garanzia, a meno che non si memorizzano i file direttamente nel database come BLOB, che l'utente non pasticcio con il file system tra le esecuzioni di applicazioni. Anche se, nel caso di file MP3 e simili, informazioni sul brano / artista tipo possono essere memorizzati direttamente nel file tramite i tag ID3 invece di utilizzare un database.

Per quanto riguarda la riproduzione dei file di nuovo, consultare la documentazione Android sui loro API audio. C'è un sacco di grandi informazioni là fuori, sicuramente più di quanto io possa ripetere qui.

Altri suggerimenti

Direi che il posto migliore per conservare loro è come singoli file sul sdcard sotto la propria cartella cioè File("/sdcard/com.example.myapp/sound12345.mp3");


EDIT: si veda la risposta che è molto più completo del mio.

E 'meglio per salvarli direttamente sul file system. Perché si vuole memorizzare in un database? ci sono ulteriori informazioni è necessario memorizzare insieme con esso? (titoli come, descrizioni, ecc)? In caso contrario, mi piacerebbe scrivere direttamente nel file system.

In sostanza è possibile salvarlo nella cartella dei dati della vostra applicazione (in cui sono memorizzati anche le preferenze condivise e db SQLite). Tuttavia, io personalmente credo che questo dovrebbe essere scoraggiato, in quanto riduce il memonry disponibile sulla partizione / dati (che è già tooo piccolo sui telefoni Android maggior parte dei telefoni hanno meno di 50 MB di spazio libero su dati (ciò significa:. Meno di 50 MB per applicazioni, che non può essere parzialmente spostata sulla scheda SD).

Si dovrebbe sempre sicure tali ammende su scheda SD, se possibile, in modo da non abbassare spazio libero sulla partizione dati troppo. Anche con funzione di A2SD di Froyo, non tutti i dati di un app installata viene spostato sulla scheda SD. I file .dex * (che spesso oscilla tra il 10-50% della dimensione totale di un app) rimane ancora partizione su / dati. Così fa le impostazioni e database SQLite questo Apps utilizza. Quindi, anche con A2SD lo spazio diventerà sempre meno la più applicazioni le installazioni utente

scroll top