【发布时间】:2015-03-20 17:38:53
【问题描述】:
我一直在尝试找到一种加载大量音频文件的好方法。 下面的代码工作正常,但我需要加载更多文件,这就是我遇到问题的时候。
这是一个测验,当用户选择正确答案时,应该播放新的声音。我必须加载 50 多种声音。
我目前加载文件的方式:
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
spool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
Context myActivity = getApplicationContext();
primSounds.add(spool.load(myActivity, R.raw.int_prim_c_mel, 1));
primSounds.add(spool.load(myActivity, R.raw.int_prim_d_mel, 1));
primSounds.add(spool.load(myActivity, R.raw.int_prim_e_mel, 1));
kvintSounds.add(spool.load(myActivity, R.raw.int_kvint_c_mel, 1));
kvintSounds.add(spool.load(myActivity, R.raw.int_kvint_d_mel, 1));
kvintSounds.add(spool.load(myActivity, R.raw.int_kvint_e_mel, 1));
oktSounds.add(spool.load(myActivity, R.raw.int_okt_c_mel, 1));
oktSounds.add(spool.load(myActivity, R.raw.int_okt_d_mel, 1));
oktSounds.add(spool.load(myActivity, R.raw.int_okt_e_mel, 1));
...
问题是这种方式会使 onCreate “太重”
【问题讨论】:
-
您需要同时加载所有 50 个吗?你不能加载一些然后在使用后重新加载另一组吗?
-
也许,测验问题是随机的,所以加载速度必须很快
-
在展示之前,您能知道每次测验需要哪些音频吗?在这种情况下,您可以为每个测验加载音频。因此,在显示测验 a 之前:加载所有“a”音频当显示测验“a”时:加载测验 b 音频等等
-
测验使用最高难度的每个音频
标签: android performance audio soundpool