簡體   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