getDeviceList method

dynamic getDeviceList()

Implementation

getDeviceList() async {
  int audioInputIdx = 0;
  int audioOutputIdx = 0;
  int videoInputIdx = 0;
  Map<int, dynamic> audioInput = {};
  Map<int, dynamic> audioOutput = {};
  Map<int, dynamic> videoInput = {};
  List<MediaDeviceInfo> deviceInfos =
      await navigator.mediaDevices.enumerateDevices();

  for (final deviceInfo in deviceInfos) {
    if (deviceInfo.kind == 'audioinput') {
      audioInput[audioInputIdx] = <String, String>{
        'deviceId': deviceInfo.deviceId,
        'label': deviceInfo.label,
      };

      audioInputIdx++;
    } else if (deviceInfo.kind == 'audiooutput') {
      audioOutput[audioOutputIdx] = <String, String>{
        'deviceId': deviceInfo.deviceId,
        'label': deviceInfo.label,
      };
      audioOutputIdx++;
    } else if (deviceInfo.kind == 'videoinput') {
      videoInput[videoInputIdx] = <String, String>{
        'deviceId': deviceInfo.deviceId,
        'label': deviceInfo.label,
      };
      videoInputIdx++;
    }
  }
  Map<dynamic, dynamic> deviceList = {};
  deviceList["audioinput"] = audioInput;
  deviceList["audiooutput"] = audioOutput;
  deviceList["videoinput"] = videoInput;
  return deviceList;
}