我需要在libGDX应用程序中使用Android的MediaPlayer类来使用其setNextMediaPlayer方法,以便我可以平滑地从一个轨道转换到另一个轨道。所以我想编写一个通用的MusicPlayer
接口,每个平台都需要实现。桌面版本没有平稳过渡,但Android版本会。问题是,我希望这个界面采用包含音乐资产的FileHandle,但MediaPlayer采用资源ID或URL。
我能做的唯一其他选择是,让每个平台读取自己的文件,并找到从资源文件夹中获取资源ID或URL的方法,而不是让接口占用FileHandle
。或将音乐文件放在res/raw
文件夹中。这个问题是我还需要将它们放在assets文件夹中,以便桌面版本(将使用libGDX的音乐播放器)可以读取它。除非有办法让libGDX从桌面文件夹中读取,否则音乐文件不会被编译到apk中两次。
知道如何解决这个问题吗?
答案 0 :(得分:0)
libGDX使用资产,而不是资源,因此无法使用资源ID。
以下问题回答了另一部分:
资产文件夹中存在的文件没有"绝对路径"。项目的assets/
文件夹的内容打包在APK文件中。使用AssetManager
对象获取资产上的InputStream
。
但是您可以尝试使用以下uri:
file:///android_asset/<asset_path>
,项目资产/目录中的相对路径在哪里。