我正在制作一个带有三个相当大的音频文件的应用程序,我希望以正确的方式播放它们。据我了解,最好的方法是以某种方式将它们放在Sdcard上并在那里播放,但是如何做到这一点的唯一例子是已经在设备上的歌曲,例如音乐库。
此代码适用于res / raw(raw是我创建的文件夹,按照基本的Android说明),但这只适用于我使用两个小样本音频文件,而不是我想要使用的三个较大的音频文件“内存不足”警告(至少在模拟器上)
MediaPlayer mp;
@JavascriptInterface
public void playSong() {
// Play song
if(mp == null) {
mp = MediaPlayer.create(mContext,R.raw.rz);
}
mp.start();
}
我尝试将数据源设置为我命名为sdcard的文件夹,但这不起作用。
建议,示例代码,想法?
答案 0 :(得分:1)
在应用程序中放置媒体文件的最佳方法是在项目的/ assets文件夹中。
但是你有一些文件大小的限制,这取决于Android的实现,但应该大约1MB,至少对我来说这是有用的。
所以我的建议是将媒体文件分成少量块文件,每块1MB,然后将它们放在assets文件夹中。
然后,当您启动应用程序时,检查媒体文件是否位于SD卡上,可以位于应用程序的外部数据目录中,如果不是,则将其复制到那里,从块文件重新创建原始媒体文件。
这应该可以解决你的问题。
修改强>
我更详细地讨论了这一点,发现1MB(资产或res / raw)的限制仅适用于Android打包程序需要压缩的文件。如果Android打包程序发现文件已经被压缩,比如mp3或png,它将不会压缩,而且没有限制。
但是请注意,由于许多设备的容量有限,拥有大型apk文件也会限制可以安装它的设备。
对于大文件,如果可能,最好是在首次运行时从Web服务器获取它们。