【问题标题】:Android Assets-Folder: it takes always the first file by alphabetical orderAndroid Assets-Folder:它总是按字母顺序排列第一个文件
【发布时间】:2011-04-26 16:08:42
【问题描述】:

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

我尝试播放位于 assets 文件夹下的 mp3。我知道 /res/raw/ 文件夹还有另一种方式,但使用 assets-folder 因为稍后我将尝试通过字符串访问该文件。

此代码可用于播放 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 模拟器进行测试。但我认为在真实设备上的行为是相同的。

有人知道这个问题吗?

【问题讨论】:

    标签: android assets


    【解决方案1】:

    我不认为使用 FileDescriptor 是正确的方法。尝试改用 .create() 和 Uri:

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

    【讨论】:

      【解决方案2】:

      不知道为什么,但 URI 语法似乎不适用于资产。尝试获取 AssetFileDescriptor,如相关问题中所回答:

      Play audio file from the assets directory

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-23
        • 1970-01-01
        • 2020-01-16
        • 2015-04-09
        • 2020-05-21
        • 1970-01-01
        相关资源
        最近更新 更多