代码之家  ›  专栏  ›  技术社区  ›  marcosbeirigo

Android文件存储指南

  •  2
  • marcosbeirigo  · 技术社区  · 14 年前


    我需要编写一个Android应用程序,从互联网下载声音以供进一步使用。
    我应该把这些声音放在哪里?Sqlite是一个选项吗?加载和播放这些文件的最佳方式是什么?
    提前谢谢。

    3 回复  |  直到 14 年前
        1
  •  4
  •   MysteryMoose    14 年前

    如果有,我建议把文件放在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数据库可能会对这个应用程序造成过度破坏。也不能保证,除非您将文件作为blob直接存储到数据库中,否则用户不会在应用程序运行之间干扰文件系统。不过,在mp3等情况下,曲目/艺术家类型信息可以通过ID3标记直接存储到文件中,而不是使用数据库。

    至于播放这些文件,请参考他们的音频api上的Android文档。这里有很多很棒的信息,绝对比我在这里重复的要多。

        2
  •  2
  •   Community CDub    8 年前

    我认为最好的存储方式是将它们作为单独的文件存储在sdcard上您自己的文件夹下,也就是说。 File("/sdcard/com.example.myapp/sound12345.mp3");


    编辑:请参见 phobos51594's answer 比我的要完整得多。

        3
  •  1
  •   Tseng    14 年前

    基本上,您可以将其保存到应用程序的数据文件夹中(共享首选项和sqlite db也存储在其中)。不过,我个人认为这应该是不可取的,因为它减少了/data分区上可用的内存(在Android手机上已经很小了)。大多数手机的数据可用空间小于50MB(这意味着:应用程序的可用空间小于50MB,不能部分移动到SD卡)。

    推荐文章