[Android & Kotlin] SoundPool で効果音を鳴らす

音を扱うクラスとしてSoundPoolがあり、比較的短いものを遅延が少なく再生できるのでゲームの効果音の再生などに向いています。
 
下はAnimationとsound再生を同時に行った例です。
 
soundpool 01b - [Android & Kotlin] SoundPool で効果音を鳴らす

Android Studio 3.1.4
API 28
Kotlin 1.2.61

 



SoundPool

 
Audioの再生にはこのSoundPool以外にもMediaPlayerやAudioTrackがあります。

  • SoundPool
    • 再生可能なフォーマット:mp3, ogg, wav(非圧縮), etc.
    • Audio Mixerのように複数の音源を重ねて再生できる
    • 事前にデコードしてメモリに展開するので低レイテンシー
    • 再生できるのは5秒程度
    • 繰り返し再生
    • 再生スピードを可変できる
    • それぞれの音源に優先度をつけられる
    • ゲームの効果音再生に適している
  • MediaPlayer
    • Supported media formatsおそらくこれらをサポート
    • BGMとしてあるいは楽曲の再生用途で使う
  • AudioTrack
    • メモリに直接展開して再生するので低レイテンシー
    • 細かい操作ができる(してあげないといけない)

 

 

SoundPool

 
SoundPoolはLollipop以降使い方が変わりました。

  1. val audioAttributes = AudioAttributes.Builder()…
  2. val soundPool = SoundPool.Builder()…
  3. soundPool.load(…)
  4. soundPool.play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
    • soundID: load()で決めたID
    • leftVolume, rightVolume: 左音量, 右音量(range = 0.0 to 1.0)
    • priority: (0 = lowest priority) default 0
    • loop: (0 = no loop, -1 = loop forever)
    • rate: (1.0 = normal playback, range 0.5 to 2.0)

SoundPoolは、事前に音源をロードしておく必要があります。いきなりロード再生ではうまくいきません。そのためアプリとして音源を抱えたままになりかねないため、release, unload等を使ってOut Of memoryに陥らない対策が必要です。
SoundPoolAudioAttributes
 
wavファイルを res/raw/ 以下に置きます。多くの音声ファイルをフォルダ階層で管理したい場合はassetsに置きます。ただし、assetsからのデータ取得はAssetManagerを使う作業が必要です。

 

サンプルコード

 
MainActivity.kt

 
activity_main.xml

 
strings.xml

 
ついでに、ボタンを押してSoundPoolで音を再生し、ボタンを回転させてみました。

References:
SoundPool
AudioAttributes

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう、時間の制約がないところが一番の魅力です。

以下の3つはAndroidが学習できるオンラインスクールです。


TECH ACADEMY
Androidアプリコース



侍エンジニア塾
侍エンジニア塾 無料体験レッスン



CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp





正直ネットや本では限界があります。直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。

尚、スクールがダメだと言う人がいますが、やる気があれば問題ありません。与えられるのを待っていてはいけないですね
欲しいものは取りに行くのです。


Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影


Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

  • このエントリーをはてなブックマークに追加

フォローする