如何在Android中存储大量音频文件

如何在Android中存储大量音频文件,android,audio,storage,Android,Audio,Storage,我需要在我的应用程序中存储大量音频文件(大约350/400个文件)。每个文件的平均大小为2MB。我真的不知道把它们放在哪里。我应该使用SQLite数据库吗?外部存储?还有别的吗 这些文件将不会更新,我只想存储它们,然后播放它们。目前我在res/raw文件夹中有15个文件,启动速度非常慢 我的问题与此类似:但我没有得到答案 谢谢您需要将其存储在另一个地方,如SD卡。Google Play目前要求您的APK文件不超过50MB。我的数学需要800MB 检查此链接: 对于必须使用sqlite DB的用户

我需要在我的应用程序中存储大量音频文件(大约350/400个文件)。每个文件的平均大小为2MB。我真的不知道把它们放在哪里。我应该使用SQLite数据库吗?外部存储?还有别的吗

这些文件将不会更新,我只想存储它们,然后播放它们。目前我在res/raw文件夹中有15个文件,启动速度非常慢

我的问题与此类似:但我没有得到答案


谢谢

您需要将其存储在另一个地方,如SD卡。Google Play目前要求您的APK文件不超过50MB。我的数学需要800MB

检查此链接:

对于必须使用sqlite DB的用户,没有太多其他选项。。也许你可以考虑云存储和流媒体播放。但这将使事情复杂化。尝试SQLLite解决方案,在这里[]您可以在几分钟内实现它。干杯

您应该将它们存储在外部存储目录中,除非此应用程序是为您的个人手机而设计的,并且您知道您有足够的空间

原因是过去几年生产的许多手机几乎没有内部存储空间(例如,我的nexus S有1g的内部存储空间,15g的外部存储空间)

正如其他人所说,您必须使用一个通过GooglePlay分发的文件,默认情况下,该文件下载到一个外部目录。不能移动、删除或重命名这些文件。因此,我认为不可能在内部存储它们(除非您制作一个冗余副本)

如果文件是zip文件,您可以直接访问这些扩展文件中的媒体(这是Android推荐的方法)

如果您确实解压缩并复制了介质,您可能应该将数据存储为单独的文件。如果在SQlite中存储大型blob数据(例如千兆字节),则需要考虑许多数据库问题。通过将数据库与文件名/位置关联,可以使用数据库存储音乐的任何元数据。但是如果你只想储存音乐,文件系统就足够了

如果您希望其他应用程序可以访问您的音乐,请使用内置的Android音乐目录(下面的代码),并将其存储在Android/data/com.name.package下

public File getMusicStorageDir(String albumName) {
    // Get the directory for the user's public pictures directory.


    File file = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_MUSIC), albumName);
    if (!file.mkdirs()) {
        Log.e(TAG, "Directory not created");
    }
    return file;
}

答案正如这里所解释的-您可以使用扩展机制,也可以使用类似的定制解决方案&服务器。这是太多的数据在您的apk本身分发。大概这些已经存储在压缩音频格式;如果不是的话,他们应该是。即使是这样,您也可以考虑使用较低的比特率编码以获得更紧凑的结果,尽管它仍然足够大,如果没有优雅的解决方案,这将是一个问题。好的,我来看看扩展机制,您是对的,我应该从压缩它们开始,谢谢。感谢您的所有澄清,是的,我听说由于空间问题,内部存储不是一个解决方案。至于SQLite,它没有任何用处,因为我所做的只是存储和获取音乐,没有其他动作,对吗?因此,从你所说的,我应该使用扩展文件。除非你决定存储元数据,否则数据库将变得有用,例如用户收藏夹、收藏,例如流派、阿里斯特等。但你只需将元数据存储在那里,以及与实际文件(或扩展文件中的偏移量)相关的一些id。