androidflutterjust-audioaudiosession

Can I use audio ducking with just_audio/audio_session?


I use just_audio to play sound effects in my Flutter app targeting mainly Android.

I want to allow users to listen to music on Spotify (or similar app) while using my app.

Currently every time my app plays a sound effect the Spotify playback is paused.

Can I use audio ducking with just_audio so that instead of pausing Spotify playback, music would just be briefly silenced?

I implemented audio_session but it still pauses Spotify instead of ducking or mixing:

 await session.configure(
    AudioSessionConfiguration(
      avAudioSessionCategory: AVAudioSessionCategory.ambient,
      avAudioSessionCategoryOptions:
          AVAudioSessionCategoryOptions.duckOthers,
      avAudioSessionMode: AVAudioSessionMode.defaultMode,
      androidAudioAttributes: const AndroidAudioAttributes(
        contentType: AndroidAudioContentType.sonification,
        usage: AndroidAudioUsage.notification,
        flags: AndroidAudioFlags.none,
      ),
      androidWillPauseWhenDucked: false, // Do not pause other apps
    ),
  );

Solution

  • I managed to achieve this using below settings by setting handleAudioSessionActivation to false for the sound (effects) player. This makes it just play sounds without affecting other apps like Spotify. For music player I use true so that it does stop others audio apps.

     final AudioPlayer soundPlayer = AudioPlayer(
        handleAudioSessionActivation: false,
      );
    
    final AudioPlayer musicPlayer = AudioPlayer(
        handleAudioSessionActivation: true,
      );