MediaDeviceInfo: groupId 屬性
groupId 是 MediaDeviceInfo 介面的一個只讀屬性,它返回一個字串,該字串是一個組識別符號。
如果兩個裝置屬於同一個物理裝置,則它們具有相同的組識別符號;例如,一個同時帶有內建攝像頭和麥克風的顯示器。
值
一個字串,唯一標識了該裝置所屬的相關裝置組。
示例
在此示例中,我們組合了一個列表,其中包含與給定裝置屬於同一組的裝置。這可能用於生成一個使用者介面,將相關裝置聚集在一起以便展示,或者方便使用者同時選擇使用同一顯示器上的內建攝像頭和麥克風。
js
const getDeviceGroup = (mainDevInfo) => {
let devList = [];
navigator.mediaDevices.enumerateDevices().then((devices) => {
devices.forEach((device) => {
if (device.groupId === mainDevInfo.groupId) {
devList.push(device);
}
});
});
return devList;
};
getDeviceGroup() 函式以描述要為其構建組列表的裝置的 MediaDeviceInfo 物件作為輸入。函式首先將結果陣列 devList 初始化為空陣列。
然後呼叫 navigator.mediaDevices.enumerateDevices() 來獲取所有媒體裝置的列表。一旦 promise 解析,我們使用 forEach() 遍歷列表。對於每個裝置,如果其 groupId 與主裝置的 groupId 匹配,我們就將 MediaDeviceInfo 物件推送到列表中。
最後,這個現在包含同一組中每個裝置的 MediaDeviceInfo 物件的列表被返回給呼叫者。
可以透過比較兩個物件的 deviceId 值,僅當裝置 ID 不匹配時才將裝置推送到結果列表中,從而輕鬆修改此設定,以便將傳入的裝置排除在返回的列表中,或者將其放在列表的頂部。
此示例版本將傳入的裝置放在結果列表的頂部,然後新增找到的其他組成員。
js
const getDeviceGroup = (mainDevInfo) => {
let devList = [mainDevInfo];
navigator.mediaDevices.enumerateDevices().then((devices) => {
devices.forEach((device) => {
if (
device.groupId === mainDevInfo.groupId &&
device.deviceId !== mainDevInfo.deviceId
) {
devList.push(device);
}
});
});
return devList;
};
規範
| 規範 |
|---|
| 媒體捕獲和流 # dom-mediadeviceinfo-groupid |
瀏覽器相容性
載入中…