[Android]アプリ開発で効果音出力を実装する方法

プログラミング Kotlin Android

はじめに

Androidアプリ開発で効果音を出す方法を備忘録のためにまとめておりますが、参考になれば幸いです。

この記事では、Androidアプリ開発の際に効果音出力機能を実装方法を記載しております。実装にはSoundPoolクラスを活用しております。

開発環境

  • Android Studio 4.1.1
  • Kotlin 1.4.10

使用する技術

  • SoundPoolクラス
  • playメソッド
  • loadメソッド
  • releaseメソッド

コード

class MainActivity : AppCompatActivity() {

    lateinit var soundPool: SoundPool
    var soundId: Int = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener { soundPool.play(soundId, 1.0f, 1.0f, 0, 0, 1.0f) }
    }

    override fun onResume() {
        super.onResume()

        soundPool = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
                            SoundPool.Builder().setAudioAttributes(AudioAttributes.Builder()
                            .setUsage(AudioAttributes.USAGE_MEDIA).build()).setMaxStreams(1).build()
                    } else {
                        SoundPool(1, AudioManager.STREAM_MUSIC, 0)
                    }
        soundId =  soundPool.load(this, R.raw.sound01, 1)
    }

    override fun onPause() {
        super.onPause()

        soundPool.release()
    }

}

コードの説明

  • 3行目
  • SoundPoolを使用するための準備。
  • SoundPoolはonCreateメソッド,onResumeメソッド,onPauseメソッドで使用するため、それぞれのメソッドの外で定義(準備)する。
  • 作成したsoundPoolの初期化はonResumeメソッド内で行うため、lateinit(後で初期化する)を記述をしておく。
  • 4行目
  • 3行目と同様に再生するための音ファイルのID番号を格納する変数を準備する。
  • 10行目
  • ボタンを押すと音が出るように設定。
  • 準備したSoundPoolをplayメソッドを使用して音を出力する。
  • 16行目
  • SoundPoolクラスの初期化。
  • 22行目
  • R.raw.sound01の部分は、準備した音ファイルのパスやファイル名を記述。
  • 28行目
  • SoundPoolクラスの後片付け。