101010

プログラミング備忘録とともに、ポエムってます。

これってSoundPoolのバグ? | Android Kotlin

f:id:araemonz:20190419133700j:plain
プールで競争、かきふりゃとえびふりゃ

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

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

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

stackoverflow.com

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

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

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

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

212K    ./ogg
2.3M    ./wav

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

play.google.com