getAvailableMicrophones method
Gets the list of available microphone / audio input devices.
Implementation
@override
Future<List<AudioInputDevice>> getAvailableMicrophones() async {
final List<AudioInputDevice> devices = [];
try {
final mediaDevices = web.window.navigator.mediaDevices;
final jsDevices = await mediaDevices.enumerateDevices().toDart;
final count = jsDevices.length;
for (var i = 0; i < count; i++) {
final device = jsDevices[i];
if (device.kind == 'audioinput') {
final id = device.deviceId;
final label = device.label.isNotEmpty
? device.label
: 'Microphone ${devices.length + 1}';
devices.add(
AudioInputDevice(
id: id,
name: label,
type: AudioInputType.builtInMic,
isSelected: devices.isEmpty,
),
);
}
}
} catch (_) {}
if (devices.isEmpty) {
devices.add(
const AudioInputDevice(
id: 'default',
name: 'Default Microphone',
type: AudioInputType.builtInMic,
isSelected: true,
),
);
}
return devices;
}