2016-01-13 126 views
0

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

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

任何想法如何解决这个问题?

+0

您是否曾使用此工作?我现在正在尝试做同样的事情(出于我期望的完全相同的原因,音频/音乐循环的跳跃) –

回答

0

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

下面的问题回答了另一部分:

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

但是你可以尝试使用以下URI:

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

How to get URI from an asset File?