我的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();
}
我找不到文件的错误。为什么呢?
答案 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();
}