audio_router
Flutter plugin for audio output routing. Switch between speaker, receiver, Bluetooth, and other devices with native UI. Supports both VoIP and media playback apps.
1.1.1
vagabondms/audio_router
What this package is like to depend on
Last release 8 months ago
22 Dec 2025
Ships on a steady schedule
a new release about every 5 weeks
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
10 months old
5 releases · first in 2025
5 releases in the last 12 months
see the full history below
Release timeline
5 releases · Oct 2025 to Dec 2025
2026
Releases
latest 5-
1.1.122 Dec 2025Release notes
Open source →Bug Fixes
- Android Compatibility: Fixed
NoSuchMethodErrorcrash on Android 10 (API 29) when accessingcommunicationDevice.- Added API level checks for Android 12+ (API 31) methods.
- Implemented legacy fallbacks (
setSpeakerphoneOn,startBluetoothSco) for older Android versions.
- Android Compatibility: Fixed
-
1.1.018 Nov 2025Release notes
Open source →New Features
- API Refactoring: Separated audio route picker functionality into three distinct methods:
showAudioRoutePicker(): Shows picker UI only (no automatic toggle)tryChangeAudioRoute(): Shows picker or toggles based on available devices (smart behavior)toggleSpeakerMode(): Toggles between built-in speaker and receiver only
- Customizable Device Names: Added
deviceNamesparameter toshowAudioRoutePicker()andtryChangeAudioRoute()for custom device display names on Android - Customizable Dialog Title: Added
dialogTitleparameter toshowAudioRoutePicker()andtryChangeAudioRoute()for custom dialog title on Android - Default Localization: Added default English and Korean device name maps (
defaultEnglishNames,defaultKoreanNames)
Improvements
- More flexible API: customize device names and dialog title per function call
- Better separation of concerns: picker display vs. smart routing vs. toggle
- Refactored
AudioDevicePickerStringsto use Map-based structure for better maintainability
Notes
showAudioRoutePicker()behavior changed: now only shows picker UI without toggle logic- Use
tryChangeAudioRoute()for the previousshowAudioRoutePicker()behavior (picker or toggle) - iOS uses native picker, so
deviceNamesanddialogTitleparameters are ignored on iOS
- API Refactoring: Separated audio route picker functionality into three distinct methods:
-
1.0.220 Oct 2025Release notes
Open source →Documentation
- Improved README with beginner-friendly language and better structure
- Added Quick Start section for immediate usage
- Added Troubleshooting section with common issues
- Clarified that media apps can use
.media()option for full device support - Added personal project disclaimer
- Reduced verbosity while maintaining technical accuracy (19% shorter)
-
1.0.117 Oct 2025Release notes
Open source →Bug Fixes
- Fix pub.dev publish requirements
- Remove unnecessary
@protectedannotations from platform interface - Remove unnecessary imports
-
1.0.017 Oct 2025Release notes
Open source →🎉 Major Release: Package Rename & Architecture Refinement
Breaking Changes:
- Package renamed:
speaker_mode→audio_router- More accurate naming that reflects the plugin's purpose
- Class rename:
SpeakerMode→AudioRouter - Method channels renamed:
speaker_mode→audio_router - Android package:
com.joel.speaker_mode→com.joel.audio_router
Architecture Changes:
- Audio session management removed: Plugin no longer manages audio session setup
- Host app is now responsible for setting up audio session (AudioManager mode on Android, AVAudioSession on iOS)
- This provides better separation of concerns and more flexibility
- See README for audio session setup instructions
New Features:
- AndroidAudioOptions: Platform-specific options for device filtering
communicationmode: VoIP devices only (SCO Bluetooth, USB Headset)mediamode: All output devices (A2DP Bluetooth, all USB devices)allmode: Same as media (reserved for future expansion)
Improvements:
- Clearer documentation and API naming
- Better separation between routing control and session management
- More flexible device filtering on Android
- Comprehensive README with setup examples
Migration Guide:
- Update package name in
pubspec.yaml:speaker_mode→audio_router - Update imports:
package:speaker_mode/speaker_mode.dart→package:audio_router/audio_router.dart - Rename class:
SpeakerMode()→AudioRouter() - Set up audio session in your app before using the plugin (see README)
- Package renamed: