システム開発部のTです。アプリの機能として、効果音を出したいって思うときってありませんか?ありますよね!ということで、今回は効果音の実装について書いていきます! 概要 今回は簡単にボタン押したら指定の効果音を鳴らす機能を実装していきたいと思います。 ライブラリについて 今回は、SoundPoolというライブラリを利用します。Androidにも効果音を利用するときに同名のAPIがございますが、それと同じ感覚で利用できるものになります。 以下のライブラリをpubspec.yamlのdependenciesに設定してください。 soundpool また、効果音のリソースファイルをどこに置くかも合わせて定義しておきましょう。本件では、プロジェクト直下に「/assets/se/」フォルダを用意したところにファイルを置くので、pubspec.yamlの「flutter:」の「assets:」に「assets/se/」を定義しておきます。 これで準備はできました。 効果音のリソースファイルの準備 本件では、効果音素材としてMP3を利用します。OGGやAACなどがありますが、MP3は両OSでサポートしているので、こちらを利用します。 プロジェクトトップにて「assets」フォルダを作って、更にその下に「se」フォルダを作ったなかにMP3ファイルを入れていきます。 効果音クラスの実装 早速ですが、効果音クラスとしてSeSoundというクラスを作成していきます。 コンストラクタ内で効果音を読み込んで、事前にバッファに保持させることによって、効果音再生時の遅延を防ぐことができます。ただし、大きな容量のファイルだった場合、メモリを圧迫してしまうため、効果音の再生時間が極力短いものが望ましいです。だいたい多くても5秒くらいかと思います。 コード上のコメントにも記載していますが、iOSの場合は効果音再生中に、別の効果音再生には対応していません。そのため、OSがiOSに限り別の再生処理が来たら、再生中の効果音を強制的に停止する処理を入れております。 なお、AndroidとWebについても問題なく再生できます。 画面への実装 画面への実装になります。 上記まで実装したら、アプリを実行してみましょう。各ボタンを押下すると、対応する効果音を再生されたかと思います。もちろん、Android、iOSともにボタンを連打しても、連打に追従して音も鳴ると思います。 以上、効果音の実装について書いてみました。 まとめ 今回紹介した効果音の実装は、いかがだったでしょうか?SoundPoolのクセとか、OSごとの挙動の違いを把握しておけば、コードの内容自体は単純かと思います。業務用アプリだと音を鳴らす機会は少ないかと思いますが、ゲーム的な効果を狙うと面白いと思いますので、皆さんも使ってみてください。

Read more of this post