You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何部分Android 10/11设备无法枚举到所有物理摄像头?

为什么部分Android设备在调用navigator.mediaDevices.enumerateDevices()时会返回所有物理摄像头,而另一些设备仅返回1个?我目前测试的设备均运行Android 10或Android 11系统。
根据官方文档说明,运行Android 9及以上版本的设备理应支持暴露所有摄像头。
我也尝试使用Camera 2 API进行调用,却依旧只获取到前后共2个摄像头,但我的设备实际配备了3个后置摄像头。
请问是什么原因导致我在Android 11系统下无法访问全部摄像头?有什么方法可以开启所有摄像头的暴露权限吗?

Android 10/11 无法枚举全部物理摄像头的原因与解决方案

问题原因

  • ROM厂商定制限制:多数定制Android系统默认不会给普通第三方应用开放所有物理摄像头的访问权限,超广角、长焦等副摄仅系统相机或厂商白名单内的应用可调用,即使设备系统版本满足Android 9+的要求也不会主动暴露全部摄像头。
  • 摄像头聚合逻辑:Android 9+的多摄像头公开能力为可选实现项,厂商可选择将多个物理摄像头聚合为单个逻辑摄像头对外提供服务,应用调用时系统会自动根据场景切换底层物理摄像头,不会将单个物理摄像头单独暴露给第三方应用。
  • Web环境适配限制:如果是在Web场景下调用navigator.mediaDevices.enumerateDevices()接口,返回结果受WebView/浏览器内核实现限制,部分厂商定制的浏览器内核默认只会返回1-2个主摄,不会枚举所有物理设备。

解决方法

  • 提升应用相机权限等级:在原生应用的AndroidManifest.xml中添加如下配置,申请全等级相机访问权限:
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" android:required="true"/>
    <uses-feature android:name="android.hardware.camera.level.full" android:required="true"/>
    
  • 开启开发者选项对应开关:部分设备在系统开发者选项中提供了“允许第三方应用访问全部摄像头”的调试开关,开启后可绕过厂商默认限制枚举所有物理摄像头。
  • 申请厂商白名单权限:部分厂商开放了独立的相机权限申请通道,提交应用资质申请通过后即可加入白名单,获得全摄像头访问权限。
  • Web场景适配优化:如果是Web应用,建议引导用户使用原生Chrome类浏览器访问,定制ROM自带的浏览器默认限制更多,原生Chrome内核对enumerateDevices()的适配更完善,枚举摄像头的覆盖度更高。

内容的提问来源于stack exchange,提问作者Alin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:00:00