getAvailableInputDevices method

Future<List<InputDevice>> getAvailableInputDevices()

Gets a list of all available input devices (microphones).

Returns a list of InputDevice containing device information:

  • id: String - unique device ID
  • name: String - device name
  • type: InputDeviceType - device type (builtIn, bluetooth, external)
  • channelCount: int - number of audio channels
  • isDefault: 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;
  }
}