2013-02-17 173 views
0

我創建了一個應用程序,涉及從原始播放約500個ogg文件(每個文件約20到30kb),在需要時會觸發聲音。我正在使用聲音池。如果我將超過475個ogg文件的聲音添加到原始文件夾中。將聲音加載到聲音池加載器時,該應用程序會死亡給堆錯誤。是否有其他服務其他媒體播放器或聲音池?有沒有在聲音加載器的聲音加載到Android的限制?

聲音池是否有加載聲音的限制?

讓我知道!

謝謝!

+0

我認爲極限是在RAM的數量,你必須提供給您不一定只是一個硬上可裝入樣品#帽。 – FoamyGuy 2013-02-17 17:16:35

+0

你能解釋'硬帽'嗎? – TheAndroDev 2013-02-18 05:28:10

+0

當然,我的意思是沒有太多樣本的「幻數」。即你沒有遇到麻煩,因爲你已經有了超過475辛普加斯。您遇到問題是因爲樣本的總大小(內存中)大於您正在分配的堆空間。如果讓我們說你的樣品只有一半的樣子,那麼在遇到我認爲的問題之前,你可以容納更多的樣品。 – FoamyGuy 2013-02-18 14:16:36

回答

0

爲了進一步人們尋找這個問題,

嘗試使用asynctask加載的聲音。

上加載一個例子聽起來與的Soundpool:

private class LoadSound extends AsyncTask<Void, Integer, String> { 

    protected void onPreExecute() { 
     // something before starting to load sounds 
    } 

    protected String doInBackground(Void... arg0) { 
     // actually loading sounds 
     for (int i = 0; i < sounds.length; i++) { 
      soundPoolId[i] = soundPool.load(context, soundResId, 1); 
     } 

     return "You are at PostExecute"; 
    } 

    protected void onProgressUpdate(Integer... a) { 
     // update ui like loaded # sounds 
    } 

    protected void onPostExecute(String result) { 
     // something after loading all sounds 
    } 
}