これってSoundPoolのバグ?(Android Kotlin)




SoundPoolを鳴らしていると、そのうち鳴らなくなったりするバグ。その時コンソールには次のようなエラーが。

E/AudioTrack: AudioFlinger could not create track, status: -12
E/SoundPool: Error creating AudioTrack


ググってみるとこちらの記事が該当した。

https://stackoverflow.com/questions/9599059/soundpool-error-creating-audiotrack/9724138#9724138


記事とは違ってシングルトンの場合だと、どうしたら良いのやら。一定時間または一定回数鳴らしたら強制的にインスタンスを再生成するとか?

AudioTrackはシングルトンにした方が安定することがわかった。

また、wavからoggファイルへ変換したところSoundPoolの不安定さがなくなった。


10個ほどサウンドファイルの容量を比較。なんとoggはwavの1/10程度まで圧縮されている。効果音なので音質も問題ない感じだ。これは良い!
212K    ./ogg
2.3M    ./wav


ちなみにwavからoggへ変換するにはffmpegで可能である。