Unity3d检查用户是不是拥有授权设备相机

Posted

技术标签:

【中文标题】Unity3d检查用户是不是拥有授权设备相机【英文标题】:Unity3d check if user has authorized device cameraUnity3d检查用户是否拥有授权设备相机 【发布时间】:2014-09-30 22:05:00 【问题描述】:

我用 Vuforia 开发了一个适用于 iosandroid 的应用,当应用第一次运行时,会提示用户授权使用设备的相机。

如果用户未授权摄像头,当用户导航到“抓拍”场景时,摄像头视图为黑色。

我查看了 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检查用户是不是拥有授权设备相机的主要内容,如果未能解决你的问题,请参考以下文章

如何获取IP地址打开球形相机设备并检查是不是连接?

如何优雅地使用iOS系统相机相册

如何优雅地使用iOS系统相机相册

如何检查用户是不是允许使用相机?

如何检查设备中是不是安装了摄像头?

如何检查用户是不是已在 React Native Android 中授予相机权限?