Unity3d检查用户是不是拥有授权设备相机
Posted
技术标签:
【中文标题】Unity3d检查用户是不是拥有授权设备相机【英文标题】:Unity3d check if user has authorized device cameraUnity3d检查用户是否拥有授权设备相机 【发布时间】:2014-09-30 22:05:00 【问题描述】:我用 Vuforia 开发了一个适用于 ios 和 android 的应用,当应用第一次运行时,会提示用户授权使用设备的相机。
如果用户未授权摄像头,当用户导航到“抓拍”场景时,摄像头视图为黑色。
我查看了 Untiy3D 文档并找到了 Application.HasUserAuthorization 类,但如果我理解正确,这仅适用于 Unity 网络播放器吗?
如何检查用户是否允许在 Unity3D (c#) 中使用相机。
任何建议将不胜感激!蒂亚!
【问题讨论】:
【参考方案1】:作为 Android 用户,我在安装将使用相机的 apk 时收到提示,一旦我接受就是这样。作为开发人员,我不需要检查。
这就是我使用 Vuforia API 启动相机的方式。
CameraDevice.Instance.Stop();
CameraDevice.Instance.Init(CameraDevice.CameraDirection.CAMERA_FRONT);
CameraDevice.Instance.Start();
CameraDevice 是一个可以调用的单例。
【讨论】:
感谢@FunctionR 的回复,但是安装APK 时如果不接受怎么办?如果我在用户没有允许摄像头的情况下调用 Singleton,是否会再次提示? 安装apk时如果不接受则不安装。 我还没有在 Android 上检查过,但在 iOS 中,即使用户不允许摄像头,它仍然会安装应用程序。我正在寻找一些在运行时检查相机权限的方法 非常有趣。我必须拿一个 iOS 设备才能看到。【参考方案2】:Application.RequestUserAuthorization
显然适用于任何 PC 或移动设备相机。我在 iPhone 上使用它和 Unity3D 的 NatCam 插件,并使用以下脚本检查/提示用户相机权限。 while()
循环是为了让他们花时间给予许可。
int cameraPermission = 0;
// Use this for initialization
public override void Start ()
if (!Application.HasUserAuthorization (UserAuthorization.WebCam))
// request camera use
Application.RequestUserAuthorization (UserAuthorization.WebCam);
else
cameraPermission = 1;
// if we don't have permission, wait until we do
while (cameraPermission != 1)
// wait a sec
System.Threading.Thread.Sleep(1000);
// if user enables preference
if (Application.HasUserAuthorization (UserAuthorization.WebCam))
// proceed to start app
cameraPermission = 1;
// Start base
base.Start ();
【讨论】:
Application.RequestUserAuthorization
不适用于设备
@Daniel 感谢您的反对票,但您应该检查您的代码。我上面分享的代码正在应用程序商店/谷歌播放当前发布的应用程序中运行。
昨天在 Android 上使用 Unity 2017.4.3f1 进行了尝试,但没有成功,如果您查看 here,您会注意到人们说它不是为这项工作而设计的。
它在 2017 年 7 月对我有用,比那些 cmets 晚了几个月。当您记录这些结果时会发生什么?
它表示即使我拒绝使用摄像头(Android 和 iOS),用户也已授予网络摄像头授权以上是关于Unity3d检查用户是不是拥有授权设备相机的主要内容,如果未能解决你的问题,请参考以下文章