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);
プラットフォームによる挙動の違い
Soundpool は単発の効果音再生、と言う用途においては同じ挙動になりますが、細かな挙動はプラットフォームごとに異なります。
再生 | 音声のミックス | |
iOS | 再生が終わるまで次の再生をしない | 出来ない |
Android | 現在の再生を止めたうえで再生開始する | 出来ない |
Web | 現在の再生は止めずに重ねて再生する | 全てミックスされる |
iOSとAndroidは単発の効果音再生ですが、Webだけはどうやらミックスで再生ができます。Web用途だけであれば割と使い勝手が良いかもしれません。
コメント