我在平板电脑的SD卡上有一个名为“/Android/data/com.example.android.app/files”的目录。我手动创建了它,因为我不知道如何测试我应用程序的这个方面。我在SQLite数据库中存储了文件名,如“/folder1/audio1.mp3”,“/folder2/audio1.mp3”等。这些文件具有相同的名称,但位于不同的文件夹中,因为它们是不同语言的相同内容。我将这些文件夹(folder1和folder2)以及所有mp3文件放在SD卡上的“/Android/data/com.example.android.app/files”目录中。
因此,我从数据库获取文件名,并尝试使用以下方式访问SD卡上的文件夹:
现在,随着文件存储在SD卡上,情况发生了变化:
并且基本上像这样玩它们:
然而,这种方法现在似乎都不起作用了。
您能从SD卡上的mp3文件中获取resourceid吗?现在这样做是否合适?我应该以不同的方式播放它们,以便无论源是内部还是外部存储器都可以工作吗?
非常困惑。
编辑: 我找到了这个可能会有所帮助...但它可能只是方程式的一半。
编辑2: 我在这里看。它使用mediastore,我认为那不是我想要的。
因此,我从数据库获取文件名,并尝试使用以下方式访问SD卡上的文件夹:
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/com.example.android.app/files";
这将最终使得路径为“storage/Android/data/com.example.android.app/files”。
现在,在早期开发阶段,我的raw文件夹中确实有一些mp3文件,但最终将有太多文件无法保存在该文件夹中,因此我开始研究如何从SD卡获取它们。当它们在raw文件夹中时,我是这样获取它们的:
rid = getResources().getIdentifier(filname, "raw", "com.example.android.app");
现在,随着文件存储在SD卡上,情况发生了变化:
filename = "/folder1/audio.mp3"
我手头的不是“raw”,而是:
"storage/Android/data/com.example.android.app/files"
并且基本上像这样玩它们:
AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(rid);
mMP.reset();
mMP.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
mMP.prepare();
mMP.start();
afd.close();
然而,这种方法现在似乎都不起作用了。
您能从SD卡上的mp3文件中获取resourceid吗?现在这样做是否合适?我应该以不同的方式播放它们,以便无论源是内部还是外部存储器都可以工作吗?
非常困惑。
编辑: 我找到了这个可能会有所帮助...但它可能只是方程式的一半。
编辑2: 我在这里看。它使用mediastore,我认为那不是我想要的。