Unity在移动设备获取相机权限

问题描述

  • 我们团队在做unity-android工程的时候遇到了相机权限的问题,unity可以有两种模式导出,直接导出apk和导出android工程,后者可以直接用如下的编译后处理,直接在AndroidManifest.xml里面添加相机权限,但是这种方式对于前者——直接导出apk还是获取不到权限。
public static void OnPostprocessBuild(BuildTarget buildTarget, string pathToBuiltProject)
    {
        // BuildTarget需为Android
        if (buildTarget != BuildTarget.Android)
            return;

        //读取AndroidManifest.xml文件
        XClass UnityAppController = new XClass(pathToBuiltProject + "/HelloAR U3D/src/main/AndroidManifest.xml");

        //在指定代码后面增加一行代码
        UnityAppController.WriteBelow("</application>", "<uses-permission android:name=\"android.permission.CAMERA\" />");
    }

问题解决

  • 经过查找资料,发现unity导出android工程的权限机制是根据代码里面需要哪些权限然后自动生成的,不管是直接导出apk还是导出android工程。
  • 于是这个问题就可以通过直接在代码里添加一些不必要的调用相机的代码即可,我添加了如下代码:
        private IEnumerator OpenCamera()
        {
            yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
            if (!Application.HasUserAuthorization(UserAuthorization.WebCam)) yield break;
            WebCamDevice[] devices = WebCamTexture.devices;
        }
  • 如此即可不需要之前的编译后处理代码也可以得到相机权限,完美解决问题。
    参考链接:调用相机的参考链接
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值