Skip to content

useDevicesList

类别
导出体积
1.34 kB
上次更改
3 months ago
相关

响应式 enumerateDevices 列出可用的输入/输出设备。

示例

相机 (0)
麦克风 (0)
扬声器 (0)

用法

ts
import { 
useDevicesList
} from '@vueuse/core'
const {
devices
,
videoInputs
:
cameras
,
audioInputs
:
microphones
,
audioOutputs
:
speakers
,
} =
useDevicesList
()

请求权限

要请求权限,请使用 ensurePermissions 方法。

ts
const {
  
ensurePermissions
,
permissionGranted
,
} =
useDevicesList
()
await
ensurePermissions
()
console
.
log
(permissionsGranted.value)

组件

vue
<template>
  <UseDevicesList v-slot="{ 
videoInputs
,
audioInputs
,
audioOutputs
}">
摄像头:{{
videoInputs
}}
麦克风:{{
audioInputs
}}
扬声器:{{
audioOutputs
}}
</UseDevicesList> </template>

类型声明

ts
export interface UseDevicesListOptions extends ConfigurableNavigator {
  
onUpdated
?: (
devices
: MediaDeviceInfo[]) => void
/** * 如果权限未授予,则立即请求权限,否则标签和设备 ID 可能为空 * * @default false */
requestPermissions
?: boolean
/** * 请求媒体权限类型 * * @default { audio: true, video: true } */
constraints
?: MediaStreamConstraints
} export interface UseDevicesListReturn { /** * 所有设备 */
devices
:
Ref
<MediaDeviceInfo[]>
videoInputs
:
ComputedRef
<MediaDeviceInfo[]>
audioInputs
:
ComputedRef
<MediaDeviceInfo[]>
audioOutputs
:
ComputedRef
<MediaDeviceInfo[]>
permissionGranted
:
ShallowRef
<boolean>
ensurePermissions
: () =>
Promise
<boolean>
isSupported
:
ComputedRef
<boolean>
} /** * 响应式 `enumerateDevices` 列出可用的输入/输出设备 * * @see https://vueuse.org/useDevicesList * @param options */ export declare function
useDevicesList
(
options
?: UseDevicesListOptions,
): UseDevicesListReturn

源码

源码演示文档

贡献者

Anthony Fu
一纸忘忧
IlyaL
wheat
SerKo
Nikitatopodin
IlyaL
Fernando Fernández
Alex Liu
Klein Petr
Espen Solli Grande
Anthony Fu
Félix Zapata
vaakian X
vaakian X
Jelf
Andras Serfozo
Alex Kozack

更新日志

8c521 - feat(components)!: refactor components and make them consistent (#4912)
c424f - fix: Check for device availability before requesting permissions (#4818)
f9685 - fix(useDeviceList): audioInputs doesn't update if camera permission is granted (#4559)
dd316 - feat: use passive event handlers everywhere is possible (#4477)
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
bf0f2 - fix: handle NotAllowedError on reject/close (#4246)