【Unity】调用安卓相机及相册

其实网上的文章都很详细比如文章1http://www.voidcn.com/article/p-ehdfbrsl-nh.html文章2http://www.voidcn.com/article/p-ehdfbrsl-nh.html )。 其实实现过程都大同小异,我们主要来看我遇到得的问题,当然这些问题都是在6.0以上的版本出现的问题,之前的都没有。

安卓6.0以上获取摄像机权限

在最开始我们在AndroidManifest.xml文件中添加获取相机权限,如下

<uses-permission android:name="android.permission.CAMERA"/>

然后运行程序第一次并没有提示我获得相机权限,然后再点击打开相机闪退,妈耶。然后就查资料说,相机这类权限属于危险级,需要动态请求。所以这里就开始编写动态请求,网上蛮多文章说这个的,大多都需要使用其他什么插件得的。官方给出的代码:

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // Show an expanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.

    } else {

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}

更多详细的可以看看官网文档https://developer.android.com/training/permissions/requesting)。 这里用的

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity调用Android相册可以通过编写本地插件来实现。以下是一种方法: 首先,创建一个Java类作为我们的本地插件。在Android Studio,创建一个新的Java类文件,并添加以下代码: ```java import android.content.Intent; import android.net.Uri; import android.provider.MediaStore; public class GalleryPlugin { public static void OpenGallery() { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/jpeg", "image/png"}); UnityPlayer.currentActivity.startActivityForResult(intent, 1); } } ``` 然后,在Unity创建一个C#脚本来调用这个本地插件。在脚本,我们将使用`DllImport`来导入Android库,并定义一个静态方法来调用Java类的方法: ```csharp using System.Runtime.InteropServices; public class AndroidGallery : MonoBehaviour { [DllImport("gallery_plugin")] private static extern void OpenGallery(); public void OpenAndroidGallery() { OpenGallery(); } } ``` 在Unity创建一个UI按钮,并将其连接到`OpenAndroidGallery`方法。这样,当我们点击按钮时,将调用本地插件的方法。 最后,将生成的Java类文件和C#脚本文件分别放在对应的目录,并导出到Android项目。 通过这种方式,我们可以在Unity调用Android相册,并允许用户选择图片。一旦用户选择了图片,可以使用Unity的处理方法进行后续操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值