能否直接访问MIUI手机的深度相机?若可行该如何操作?
MIUI设备实时读取深度相机数据的可行方案
核心问题说明
- 直接用Unity的
WebCamTexture.depthCameraName在MIUI上基本行不通,小米的MIUI系统确实会把深度相机的底层访问权限优先留给自带相机,第三方 app 默认没法直接调用深度相机的原始数据流。 - 你之前能从人像模式照片里提取深度信息,是因为自带相机拍的时候会把深度数据嵌在照片的EXIF或者单独图层里,这和实时获取原始深度流不是一回事。
可尝试的研究方向
Unity优先方案
- 用Unity的AR Foundation框架:
- AR Foundation本身支持深度数据采集,它会适配Android的Camera2 API或者系统提供的深度传感器服务。在MIUI上,要确保你的app申请了
CAMERA权限,同时在Project Settings里开启AR Core支持(小米多数机型都支持AR Core)。 - 具体可以通过
ARCameraManager获取ARCameraFrame,从中提取DepthTexture,这种方式绕开了直接指定深度相机名称的限制,靠系统AR服务间接拿深度数据,成功率更高。
- AR Foundation本身支持深度数据采集,它会适配Android的Camera2 API或者系统提供的深度传感器服务。在MIUI上,要确保你的app申请了
- 封装Android原生接口成Unity插件:
- 基于Android的Camera2 API写原生模块,通过
CameraManager的getCameraIdList()筛选后置且支持REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT的相机设备。 - 注意:MIUI可能会限制Camera2 API的深度输出,有些机型哪怕硬件支持,第三方app也只能拿到低分辨率的深度数据,甚至拿不到。
- 基于Android的Camera2 API写原生模块,通过
其他Android XR方案
- 直接用Google AR Core开发:AR Core提供了稳定的深度数据获取接口,MIUI对它的兼容性不错,只要机型在AR Core支持列表里,就能实时获取环境深度,还能满足你需要的位置信息需求。
- MediaProjection API(局限性大):如果只是想拿自带相机的深度预览画面,可以试试录屏,但这种方式没法分离原始深度数据,只能拿到合成后的人像画面,用处不大。
额外提醒
- 测试的时候一定要在MIUI的应用权限管理里给你的app开「相机」和「存储」权限,部分机型还得开「悬浮窗」权限(涉及相机预览的话)。
- 不同MIUI版本的管控力度不一样,比如MIUI 13及以上对第三方相机权限管得更严,建议多测几款小米/红米机型。
内容的提问来源于stack exchange,提问作者Skye Sprung
相关产品推荐
相关产品推荐

