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

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

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

我查看了 Untiy3D 文档并找到了 Application.HasUserAuthorization 类,但如果我理解正确,这仅适用于 Unity 网络播放器吗?

如何检查用户是否允许在 Unity3D (c#) 中使用相机。

任何建议将不胜感激!蒂亚!

【问题讨论】:

    标签: c# permissions camera unity3d


    【解决方案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),用户也已授予网络摄像头授权
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多