🔕
【Flutter】AudioPlayersでiPhoneサイレントモード時に音声停止
iosのサイレントモード時に音声が再生しないようにする方法
AudioPlayers パッケージ
インストール方法
$ flutter pub add audioplayers
音声ファイルをassetsに追加
実装
初期化
final AudioPlayer player = AudioPlayer();
iosのサイレントモード時に音声が再生されないようにAVAudioSessionCategory.ambientを設定。
初期化時にaudioContextをセット。
下記はhooks_riverpodを利用し、useEffect()を使用。
useEffectの使い方はこちら
const audioContext = AudioContext(
iOS: AudioContextIOS(
category: AVAudioSessionCategory.ambient,
),
android: AudioContextAndroid(),
);
void initializeAudioPlayer() async {
await AudioPlayer.global.setAudioContext(audioContext);
}
useEffect(
() {
initializeAudioPlayer();
return;
},
const [],
);
音声を再生
Future<void> playSound() async {
player.play(
AssetSource('sounds/done.mp3'),
);
}
Discussion