从libGDX资产获取android资源ID或URL

时间:2016-01-13 04:30:35

标签: android libgdx

我需要在libGDX应用程序中使用Android的MediaPlayer类来使用其setNextMediaPlayer方法,以便我可以平滑地从一个轨道转换到另一个轨道。所以我想编写一个通用的MusicPlayer接口,每个平台都需要实现。桌面版本没有平稳过渡,但Android版本会。问题是,我希望这个界面采用包含音乐资产的FileHandle,但MediaPlayer采用资源ID或URL。

我能做的唯一其他选择是,让每个平台读取自己的文件,并找到从资源文件夹中获取资源ID或URL的方法,而不是让接口占用FileHandle。或将音乐文件放在res/raw文件夹中。这个问题是我还需要将它们放在assets文件夹中,以便桌面版本(将使用libGDX的音乐播放器)可以读取它。除非有办法让libGDX从桌面文件夹中读取,否则音乐文件不会被编译到apk中两次。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

libGDX使用资产,而不是资源,因此无法使用资源ID。

以下问题回答了另一部分:

资产文件夹中存在的文件没有"绝对路径"。项目的assets/文件夹的内容打包在APK文件中。使用AssetManager对象获取资产上的InputStream

但是您可以尝试使用以下uri:

file:///android_asset/<asset_path>,项目资产/目录中的相对路径在哪里。

How to get URI from an asset File?