繁体   English   中英

从sdcard Android Mediaplayer播放音频

[英]Play Audio from sdcard Android Mediaplayer

我正在制作一个内置三个相当大的音频文件的应用程序,我想以正确的方式播放它们。 据我了解,最好的方法是将它们以某种方式放在Sdcard上并在其中播放,但是唯一的示例是设备上已经存在的歌曲,例如音乐库。

此代码可在res / raw上运行(按照基本的Android指令,raw是我创建的文件夹),但是仅当我使用两个较小的示例音频文件而不是我要使用的三个较大的音频文件时才起作用,这会导致“内存”警告(至少在模拟器上)

MediaPlayer mp;

    @JavascriptInterface
    public void  playSong() {
        // Play song
        if(mp == null) {
            mp = MediaPlayer.create(mContext,R.raw.rz);
        }
        mp.start();
    }

我尝试将数据源设置为一个名为sdcard的文件夹,但这没有用。

建议,示例代码,想法?

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

但是这里也有一些文件大小的限制,这取决于Android的实现,但应该在1MB左右,至少对我来说这可行。

因此,我的建议是将媒体文件分成几个块文件,每个块文件1MB,然后将它们放在资产文件夹中。

然后,当您启动应用程序时,请检查媒体文件是否位于sdcard上,是否可以位于应用程序的外部数据目录中,如果没有,则将其复制到该目录中,从而从阻止文件中重新创建原始媒体文件。

那应该可以解决您的问题。

编辑:

我对此进行了更详细的介绍,发现1MB的限制(资产或res / raw)仅适用于Android打包程序需要压缩的文件。 如果Android打包程序发现该文件已被压缩(例如mp3或png),则不会压缩,并且没有限制。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM