audio_output_device_check
Flutter plugin to detect current audio output device and listen for output changes.
Supported Platforms
- Android: supported
- iOS: supported
- macOS: supported
- Windows: supported (snapshot + name detection)
- Linux: supported (snapshot + name detection via
pactlwhen available)
Installation
Add dependency in your app pubspec.yaml:
dependencies:
audio_output_device_check: ^0.1.1
Usage
import 'package:audio_output_device_check/audio_output_device_check.dart';
final plugin = AudioOutputDeviceCheck();
plugin.audioDeviceStreamWithPermission(
autoRequestAndroidBluetoothPermission: true,
).listen((device) {
print('Audio output changed: ${device.type} - ${device.name}');
});
Android Bluetooth Permission API
Plugin provides optional Android BLUETOOTH_CONNECT permission helpers:
final status = await plugin.getBluetoothConnectPermissionStatus();
final requested = await plugin.requestBluetoothConnectPermission();
Behavior:
- On Android: permission can be requested automatically when stream starts.
- On non-Android platforms: permission APIs return
BluetoothPermissionStatus.notApplicable. - On permission/API failures: plugin returns safe fallback device info instead of throwing.
Device Type Values
AudioDeviceInfo.type can be:
bluetoothwiredspeakerunknown
Notes
- Linux device name detection uses
pactlcommand output. If unavailable, fallback value is returned. - Stream emits current snapshot on listen; additional real-time update behavior depends on platform capabilities.