从sdcard Android Mediaplayer播放音频

时间:2013-08-28 16:03:20

标签: android audio media-player android-mediaplayer

我正在制作一个带有三个相当大的音频文件的应用程序,我希望以正确的方式播放它们。据我了解,最好的方法是以某种方式将它们放在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的文件夹,但这不起作用。

建议,示例代码,想法?

1 个答案:

答案 0 :(得分:1)

在应用程序中放置媒体文件的最佳方法是在项目的/ assets文件夹中。

但是你有一些文件大小的限制,这取决于Android的实现,但应该大约1MB,至少对我来说这是有用的。

所以我的建议是将媒体文件分成少量块文件,每块1MB,然后将它们放在assets文件夹中。

然后,当您启动应用程序时,检查媒体文件是否位于SD卡上,可以位于应用程序的外部数据目录中,如果不是,则将其复制到那里,从块文件重新创建原始媒体文件。

这应该可以解决你的问题。

修改

我更详细地讨论了这一点,发现1MB(资产或res / raw)的限制仅适用于Android打包程序需要压缩的文件。如果Android打包程序发现文件已经被压缩,比如mp3或png,它将不会压缩,而且没有限制。

但是请注意,由于许多设备的容量有限,拥有大型apk文件也会限制可以安装它的设备。

对于大文件,如果可能,最好是在首次运行时从Web服务器获取它们。