Вопрос


Мне нужно написать приложение для Android, которое загружало бы звуки из Интернета для дальнейшего использования.
Где я должен хранить эти звуки?Является ли Sqlite опцией?И каков наилучший способ загрузить и воспроизвести эти файлы?
Заранее благодарю.

Это было полезно?

Решение

Я бы порекомендовал поместить файлы на SD-карту, если кто-то существует. Однако одно следует отметить, что вы никогда не должны сложно код на траектории к SD-карте. Вы, скорее всего, захотите что-то сделать в соответствии с линиями:

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;
}

Оттуда это простое дело передачи любых данных, которые вы хотите в файл. База данных SQLite, вероятно, будет переполнена для этого приложения, если вы не планируете хранить много дополнительной информации. Также нет никакой гарантии, если вы не храните файлы непосредственно в базу данных как BLOBS, чтобы пользователь не связывался с файловой системой между приложениями. Хотя в случае MP3S и тому подобное, информация о треке / артистке можно сохранить непосредственно в файл через теги ID3 вместо использования базы данных.

Что касается воспроизведения файлов, обратитесь к документации Android на их аудио API. Там есть тонна отличной информации, определенно больше, чем я могу повторить здесь.

Другие советы

Я бы сказал лучшее место для хранения их как отдельные файлы на SDCard под собственной папкой, т. Е. File("/sdcard/com.example.myapp/sound12345.mp3");


Редактировать: пожалуйста, смотрите Ответ Phobos51594 который гораздо более полный, чем мой.

Лучше всего сохранять их непосредственно в файловой системе.Почему вы хотите сохранить его в базе данных?есть ли дополнительная информация, которую вам необходимо сохранить вместе с ним?(Например, названия, описания и т.д.)?Если нет, я бы записал это непосредственно в файловую систему.

В принципе, вы могли бы сохранить его в папке данных вашего приложения (где также хранятся общие настройки и база данных sqlite).Тем не менее, я лично считаю, что этому следует препятствовать, поскольку это уменьшает доступную память в разделе /data (который и так слишком мал на телефонах Android.На большинстве телефонов имеется менее 50 МБ свободного места для передачи данных (это означает:менее 50 МБ для приложений, которые нельзя частично перенести на SD-карту).

Вы всегда должны сохранять такие штрафы на SD-карте, если это возможно, чтобы не слишком сильно сокращать свободное место на разделе данных.Даже с помощью функции A2SD Froyo не все данные установленного приложения перемещаются на SD-карту.Файлы * .dex (которые часто составляют 10-50% от общего размера приложения) по-прежнему остаются в разделе /data.То же самое касается настроек и баз данных sqlite, используемых этими приложениями.Таким образом, даже с A2SD места будет становиться все меньше и меньше по мере установки пользователем большего количества приложений

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top