SoundPool播放多个文件,无法正常播放的问题
每个设备都有32个活动AudioTrack对象的硬限制,但是这些并不会使得一个应用程序使用,所以同时播放的数目过多久无法创建Track,就无法播放
11 604-1182/? E/AudioFlinger: getNextBuffer, track(0xf0c7f880) get null buffer, mState 6, mFillingUpStatus 2 1621324896.153 604-1188/? E/AudioFlinger: no more track names available 1621324896.153 604-1188/? E/AudioFlinger_Threads: createTrack_l() uid 10070 pid 13573 create track fail 1621324896.153 604-1188/? E/AudioFlinger_Threads: createTrack_l() initCheck failed -12; no control block? 1621324896.153 13573-13645/com.kangwang.word E/AudioTrack: AudioFlinger could not create track, status: -12 1621324896.154 13573-13645/com.kangwang.word E/SoundPool: Error creating AudioTrackx
修改方法:
1.去修改底层代码
2.soundpool的stop方法,会释放掉与本地相关的资源
AudioTrack大于限制就无法播放,那么久将不再使用的音效stop掉。
还有一个思路,没有试过,自己创建AndroidTrack,然后将sound文件里面的数据解码处理,让AudioTarck播放,就是比较麻烦(可以使用ffmpeg解码)。