SoundPoolクラスを利用する
本記事ではSoundPoolクラスを利用して効果音を鳴らす。
SoundPool
クラスはあらかじめ音声ファイルをデコードしてメモリに持っておく仕組みになっていてレイテンシが小さい。
速いフィードバックが求められる効果音の再生に向いている。
一方メモリに持っておく仕組みであるためにメモリを圧迫するため長い音声ファイルの再生には向かない。
BGMなど長めの音声ファイルの再生にはMediaPlayerクラスを利用する。
実装
音声ファイルをリソースとして保存する
音声ファイルをres/raw/
ディレクトリに保存しておく。
再生可能な形式はmp3, ogg, wavなど。
音声を鳴らす
val audioAttributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
val soundPool = SoundPool.Builder()
.setMaxStreams(1)
.setAudioAttributes(audioAttributes)
.build()
// sound.ogg であれば音声のresouce id は R.raw.sound となる
val soundId = soundPool.load(context, R.raw.sound, 1)
soundPool.play(soundId, 1.0f, 1.0f, 0, 0, 1.0f)
\確かな知識を身に着けたい、Androidアプリ開発を学びたい人にオススメ!/