Android Assets-Folder:它始终按字母顺序排列第一个文件

时间:2010-10-17 19:21:09

标签: android assets

我是Java / Android编程的新手,所以请耐心等待我。

我尝试播放一个位于资源文件夹中的mp3。我知道/ res / raw /文件夹有另一种方法,但是使用assets-folder,因为稍后我会尝试通过String访问该文件。

此代码可播放mp3文件:

        try
    {
        MediaPlayer mp = new MediaPlayer(); 
        FileDescriptor sfd = getAssets().openFd("song.mp3").getFileDescriptor(); 


        mp.setDataSource(sfd); 
        mp.prepare(); 
        mp.start();
    }
    catch(Exception e) {}

现在问题:在同一资产文件夹中存储了另一个mp3文件。虽然我指定了要使用的mp3的名称,但请先使用字母表中的第一个。例如。另一个文件名为“music.mp3”,它播放了这个。将其重命名为“worldmusic.mp3”,它将播放“song.mp3”。将“worldmusic.mp3”重新命名为“music.mp3”,它将再次使用此mp3。另一个测试:将“song.mp3”重命名为其他内容,以便应用程序可以找到上面代码指定的内容,这样就不会播放任何歌曲。因此,这意味着歌曲名称必须存在,尽管它首先用字母表随意播放歌曲。

我正在使用eclipse的AVD模拟器进行测试。但我认为在真实设备上的行为是一样的。

有人知道这个问题吗?

2 个答案:

答案 0 :(得分:0)

我不相信使用FileDescriptor是正确的方法。请尝试使用.create()和Uri:

MediaPlayer mp = MediaPlayer.create(getBaseContext(), songUri);
mp.start();

答案 1 :(得分:0)

不确定原因,但URI语法似乎不适用于资产。尝试获取AssetFileDescriptor,如相关问题中所述:

Play audio file from the assets directory