Android资源文件

时间:2013-02-26 03:50:04

标签: java android

我的cheerapp.mp3文件夹

中有/res/raw

所以我的代码是

String filepath="/res/raw/cheerapp";   //or cheerapp.mp3
file = new File(filePath); 
FileInputStream in = null;
try {
    in = new FileInputStream( file );  
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

我找不到文件的错误。为什么呢?

3 个答案:

答案 0 :(得分:3)

使用assets文件夹和...

InputStream sound = getAssets().open("filename.mp3");

...或raw文件夹和...

InputStream sound = getResources().openRawResource(R.raw.filename);

如果对您没有帮助,请检查this

答案 1 :(得分:1)

您永远不能按路径访问资源文件!

因为它们是在安装在Android中的APK文件中编译的。您只能通过从任何活动(上下文)访问其生成的资源ID来访问应用程序中的资源:

InputStream cheerSound = this.getResources().openRawResource(R.raw.cheerapp);

或从视图:

InputStream cheerSound = this.getContext().getResources().openRawResource(R.raw.cheerapp);

在您的情况下,您应该将声音文件存储在外部SD卡中,然后可以通过路径访问它们。例如,您将文件存储在SD卡上的 sounds 文件夹中:

FileInputStream inFile = new FileInputStream("/mnt/sdcard/sounds/cheerapp.mp3");

注意:以'/'开头的路径是绝对路径,因为'/'代表类Unix操作系统中的root(Unix,Linux,Android,...)

答案 2 :(得分:0)

也许您可以使用AssetManager来管理资源。例如:

AssetManager manager = this.getContext().getAssets();
InputStream open;
try {
    open = manager.open(fileName);
    BitmapFactory.Options options = new BitmapFactory.Options();
    ...
} catch (IOException e) {
    e.printStackTrace();
}