2013-02-17 171 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 
    } 
}