getAvailableInputDevices method
Gets a list of all available input devices (microphones).
Returns a list of InputDevice containing device information:
id: String - unique device IDname: String - device nametype: InputDeviceType - device type (builtIn, bluetooth, external)channelCount: int - number of audio channelsisDefault: bool - whether the device is the default device
Example:
final devices = await micCapture.getAvailableInputDevices();
for (final device in devices) {
print('Device: ${device.name}');
print(' Type: ${device.type}');
print(' Channels: ${device.channelCount}');
print(' Default: ${device.isDefault}');
}
// Find default device
final defaultDevice = devices.firstWhere(
(device) => device.isDefault,
orElse: () => devices.first,
);
print('Using device: ${defaultDevice.name}');
Implementation
Future<List<InputDevice>> getAvailableInputDevices() async {
try {
final devices = await _channel.invokeMethod<List<dynamic>>(
_MicAudioMethod.getAvailableInputDevices.name,
);
if (devices == null) {
return [];
}
return devices
.whereType<Map>()
.map((device) => InputDevice.fromMap(
Map<String, dynamic>.from(device),
))
.toList();
} catch (e) {
rethrow;
}
}