Android资产文件夹:它总是按字母顺序取第一个文件
我是Java/Android编程新手,请耐心等待 我试着播放一个mp3,它位于资产文件夹中。我知道/res/raw/文件夹还有另一种方法,但请使用assets文件夹,因为稍后我将尝试通过字符串访问该文件 此代码用于播放mp3文件:Android资产文件夹:它总是按字母顺序取第一个文件,android,assets,Android,Assets,我是Java/Android编程新手,请耐心等待 我试着播放一个mp3,它位于资产文件夹中。我知道/res/raw/文件夹还有另一种方法,但请使用assets文件夹,因为稍后我将尝试通过字符串访问该文件 此代码用于播放mp3文件: try { MediaPlayer mp = new MediaPlayer(); FileDescriptor sfd = getAssets().openFd("song.mp3").getFileDesc
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模拟器进行测试。但我认为,在真正的设备上,这种行为是相同的
有人知道这个问题吗?我不认为使用FileDescriptor是正确的方法。请尝试使用.create和Uri:
MediaPlayer mp = MediaPlayer.create(getBaseContext(), songUri);
mp.start();
我不认为使用FileDescriptor是正确的方法。请尝试使用.create和Uri:
MediaPlayer mp = MediaPlayer.create(getBaseContext(), songUri);
mp.start();
不知道为什么,但URI语法似乎不适用于资产。请尝试获取AssetFileDescriptor,如相关问题中所述:
不知道为什么,但URI语法似乎不适用于资产。请尝试获取AssetFileDescriptor,如相关问题中所述: