我已经使用SoundPool将大约100个.mp3加载到应用程序中。但是,这会将应用程序的负载从3秒增加到12秒。

我感谢SoundPool需要将声音加载并解码到内存中,但是这个持续时间是否正常?有什么方法可以在不影响应用程序加载时间的情况下在后台加载声音?

public void initSounds()
{
    soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
    soundPoolMap = new HashMap<Integer, Integer>();
    Log.i("Initialising Sounds ------ > ",""+soundPool.toString() );


    Class raw = R.raw.class;
    Field[] fields = raw.getFields();

    Context con  = GlobalVars.ACTIVITY_1.getApplicationContext();

    for (int i = 1; i < 91; i++)
    {
        try
        {
            int id = fields[i].getInt(null);
            soundPoolMap.put(i, soundPool.load(con, id, 1));
        }
        catch (IllegalAccessException e)
        {
            Log.e("REFLECTION", String.format("%s threw IllegalAccessException.", fields[i].getName()));
        }
    }
}

最佳答案

您真的很幸运能获得100个MP3文件的12秒,而不是事件OGG。我的答案现在不再像现在这么重要了,因为在2020年,我正在为50个加载时间在声池中加载32个OGG文件而苦苦挣扎。

关于android - SoundPool应用程序加载时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5980613/

10-10 10:36