audio_router 1.1.1
audio_router: ^1.1.1 copied to clipboard
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 #
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.
1.1.0 #
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
1.0.2 #
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.1 #
Bug Fixes #
- Fix pub.dev publish requirements
- Remove unnecessary
@protectedannotations from platform interface - Remove unnecessary imports
1.0.0 #
🎉 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)
0.0.1 #
- Initial release
- Implemented audio output routing control for iOS and Android
- Implemented external audio device connection status detection
- Provided audio state change streams