| |
| |
| |
| |
| |
| |
|
|
| import React, { useEffect, useState } from 'react'; |
| import './style.css'; |
|
|
| const MediaDevices = ({ selectedDevice, setSelectedDevice }) => { |
| const [devices, setDevices] = useState([]); |
|
|
| |
| useEffect(() => { |
| navigator.mediaDevices.enumerateDevices() |
| .then(devices => { |
| const audioInputDevices = devices.filter(device => device.kind === 'audioinput'); |
| |
| if (audioInputDevices.length === 0) { |
| console.log('No audio input devices found'); |
| } else { |
| setDevices(audioInputDevices); |
| } |
| }) |
| .catch(err => console.log('An error occurred: ' + err)); |
| }, []); |
|
|
| const handleDeviceChange = (event) => { |
| setSelectedDevice(event.target.value); |
| }; |
|
|
| return ( |
| <div className="devices-container"> |
| <label className="audio-device-label" htmlFor="audio-device-selection">Select an audio input device:</label> |
| <div className="select-dropdown"> |
| <select |
| id="audio-device-selection" |
| value={selectedDevice} |
| onChange={handleDeviceChange} |
| > |
| {devices.map((device, index) => ( |
| <option key={device.deviceId} value={device.deviceId}> |
| {device.label || `Microphone ${index + 1}`} |
| </option> |
| ))} |
| </select> |
| </div> |
| </div> |
| ); |
| } |
|
|
| export default MediaDevices; |
|
|