我已经使用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文件而苦苦挣扎。