【Flutter】効果音を鳴らす【Soundpool】

Flutter

Flutter で効果音を鳴らせる Soundpool パッケージの解説です。単音だけの再生なのでBGMや複数音のミックスには使用できませんが、iOS/Android/Webに対応しているので簡単な効果音を鳴らしたい場合には便利だと思います。

※こちらの記事もおすすめ

スポンサーリンク

Soundpool パッケージの使い方

Soundpool パッケージは、効果音を鳴らすためのシンプルなパッケージで、iOS/Android/Webに対応しています。

パッケージとアセットの追加

pubspec.yaml にパッケージを追加します。

dependencies:
  flutter:
    sdk: flutter

  # ↓これを追加
  soundpool: ^1.0.1

同じく pubspec.yaml に効果音のファイルを追加します。

  # ↓これを追加
  assets:
     - sounds/carstop.wav

ファイルの読み込み

// 以下をインポート
import 'package:soundpool/soundpool.dart';
import 'package:flutter/services.dart'; // use rootBundle

// Soundpoolインスタンスの初期化(1度だけ)
Soundpool _pool = Soundpool(streamType: StreamType.notification);

// ファイルの読み込み
int soundId = await rootBundle.load("sounds/carstop.wav").then((ByteData soundData) {
  return _pool.load(soundData);
});

再生/停止/繰り返し

// 再生
int streamId = await _pool.play(soundId);

// 再生(繰り返し)
int streamId = await _pool.play(soundId,repeat: 3); // repeat を -1 にすると無限ループ

// 停止
_pool.stop(streamId);

soundId が音素材の識別子で、streamId は現在再生されている音をコントロールするためのID、と言う構造になっています。

プラットフォームによる挙動の違い

Soundpool は単発の効果音再生、と言う用途においては同じ挙動になりますが、細かな挙動はプラットフォームごとに異なります。

再生音声のミックス
iOS再生が終わるまで次の再生をしない出来ない
Android現在の再生を止めたうえで再生開始する出来ない
Web現在の再生は止めずに重ねて再生する全てミックスされる

iOSとAndroidは単発の効果音再生ですが、Webだけはどうやらミックスで再生ができます。Web用途だけであれば割と使い勝手が良いかもしれません。

コメント

タイトルとURLをコピーしました