🔕

【Flutter】AudioPlayersでiPhoneサイレントモード時に音声停止

2023/11/10に公開

iosのサイレントモード時に音声が再生しないようにする方法

AudioPlayers パッケージ

https://pub.dev/packages/audioplayers

インストール方法

$ flutter pub add audioplayers

音声ファイルをassetsに追加

実装

初期化

    final AudioPlayer player = AudioPlayer();

iosのサイレントモード時に音声が再生されないようにAVAudioSessionCategory.ambientを設定。
初期化時にaudioContextをセット。
下記はhooks_riverpodを利用し、useEffect()を使用。
useEffectの使い方はこちら
https://qiita.com/mkosuke/items/f88419d0f4d41ed6d858#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