2015-11-06 73 views
-1

我試圖製作一個應用程序,使用聲音庫的聲音很多(超過20個)。 但是當我加載的聲音,它需要3-10秒來加載它。 如何提高加載速度? 這裏是裝載安卓中的聲音池

private int loadSound(String filename) { 
    AssetFileDescriptor assetFileDescriptor; 
    try { 
     assetFileDescriptor = assetManager.openFd(filename); 
    } 
    catch (IOException e){ 
     e.printStackTrace(); 
     return -1; 
    } 
    return soundPool.load(assetFileDescriptor,1); 
} 
以最低的採樣率可以容忍,就像96KB/s的
+0

如果它們是普通的聲音(也許是一種將它們作爲事件播放的遊戲),然後將它們加載到內存中並繼續播放。 – Bonatti

回答

1
  • 使用.OGG文件的功能。這將創建最小的文件,以便加載速度更快。使用.WAV文件加載/播放聲音時遇到了很多問題,當我將它們轉換爲.OGG文件時,它們都會消失。

  • 從主UI線程中加載聲音。如果你需要知道什麼時候加載聲音,使用OnLoadCompleteListener

    mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
        @Override 
        public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { 
         Log.d(TAG, "soundpool onLoadComplete, sampleId = " + sampleId + ", status = " + status); 
    
         // ... sound is ready to play    
        } 
    }); 
    
    // sound load should happen off the UI thread 
    new Thread() { 
        @Override 
        public void run() { 
         mSoundId = mSoundPool.load(getActivity(), R.raw.sound1, 1); 
         // ... load other sounds here 
        } 
    }.start(); 
    

    我嵌入式音頻文件,所以我可以使用原始的資源ID。如果您必須從文件加載,請抓住所有文件名並將它們發送到非UI線程內的加載方法。

+0

tnx男人,多數民衆贊成工作正常) –