Unity点击按钮调用AS中显示对话框选择是从相册中上传还是拍照上传,如果是相册直接获得路径传给Unity使用,如果是拍照,先拍照保存在本地,再将路径传递给Unity使用

Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
Intent对象可以封装传递下面6种信息:

  1. 组件名称(ComponentName)
  2. 动作(Action)
  3. 种类(Category)
  4. 数据(Data)
  5. 附件信息(Extra)
  6. 标志(Flag)

创建选择框

AlertDialog.Builder choiceBuilder = new AlertDialog.Builder(this);
choiceBuilder.setCancelable(false);
choiceBuilder.setTitle("选择图片").setSingleChoiceItems(new String[]{"从相册选择", "拍照上传"}, -1,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Intent intent = null;switch (which) {case 0://相册//调用打开相册的方法break;case 1:// 拍照//调用打开拍照的方法,注意要提前获取相机的权限break;default:break;}dialog.dismiss();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});
choiceBuilder.create();
choiceBuilder.show();

打开相册

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 2);

打开拍照

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,1);

获得返回得信息,

重写onActivityResult方法获得传递得另外一个Activity传递的内容

获得相册的选中的图片URL

if(resultCode==-1)//判断是否选中OK
Uri uri = data.getData();

将这个url转成路径即可

android版本>19以上的采用

public String URLToString(){
String imagePath = null;
if (DocumentsContract.isDocumentUri(this, uri)) {// 如果是document类型的Uri,则通过document id处理String docId = DocumentsContract.getDocumentId(uri);if ("com.android.providers.media.documents".equals(uri.getAuthority())) {String id = docId.split(": ")[1]; // 解析出数字格式的idString selection = MediaStore.Images.Media._ID + "=" + id;imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);} else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));imagePath = getImagePath(contentUri, null);}
} else if ("content".equalsIgnoreCase(uri.getScheme())) {// 如果是content类型的Uri,则使用普通方式处理imagePath = getImagePath(uri, null);
} else if ("file".equalsIgnoreCase(uri.getScheme())) {// 如果是file类型的Uri,直接获取图片路径即可imagePath = uri.getPath();
}
return imagePath;
}

android版本<19以上的采用
getImagePath(uri, null);

@SuppressLint("Range")
public String getImagePath(Uri uri, String selection) {String path = null;// 通过Uri和selection来获取真实的图片路径Cursor cursor = getContentResolver().query(uri, null, selection, null, null);if (cursor != null) {if (cursor.moveToFirst()) {path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));}cursor.close();}return path;
}

获取拍照的内容

Bitmap bit = (Bitmap)data.getExtras().get("data");
File f = new File(getExternalCacheDir(),"head.png");
if (f.exists()) {f.delete();
}
try {FileOutputStream outputStream = new FileOutputStream(f);bit.compress(CompressFormat.PNG, 100, outputStream);outputStream.flush();outputStream.close();
//向Unity传递路径this.SendUnityPath(f.getPath());
} catch (FileNotFoundException var8) {var8.printStackTrace();
} catch (IOException var9) {var9.printStackTrace();
}

最后得到这个路径在调用Unity中的接收方法
通过文件流读取的方式获取字节流,再通过字节流转成Texture2D,或者根据需求转成Sprite可以了

Unity Android通过拍照和相册上传头像(图片)相关推荐

  1. ASP.NET MVC3 上传头像图片并截图

    关于上传头像并且截图网上应该有很多资料,大多都是JQuery插件,用起来不是很方便 本文所介绍的方法将快速完成一个"上传头像图片并截图",只需要修改少量的代码 我们先来看看完成后的 ...

  2. axios获取图片显示_vue中使用axios post上传头像/图片并实时显示到页面的方法

    在前端开发中,为了更好的用户体验,在头像上传时会先将图片显示到页面然后点击保存按钮 完成图片的上传成功 代码部分有参考他人的写法. html代码: 请上传图片 js代码: //实时显示该图片在页面 g ...

  3. 小程序上传头像图片裁剪

    原文链接:https://blog.csdn.net/qq_41049816/article/details/90604607* 给网上收到的 不知道好不好用 先收藏着: 小程序涉及到了用户上传头像的 ...

  4. Django搭建个人博客:上传头像图片

    到目前为止我们的博客处理的都是文字.现代互联网早就进入了"读图"时代,图片的维护.展示也就相当重要. 上一章中预留了avatar字段,用来保存用户上传的头像,现在我们来实现这个功能 ...

  5. JEECG 上传头像,图片并切割

    Jcrop  + commons-fieldupload 上传组件上传图片并切割 图片上传并完成切割,图片的切割必须在服务器端完成,在客户端是无法进行切割的,至少在目前阶段. 1 母页面 regist ...

  6. jQuery点击头像上传头像图片并预览图片

    HTML代码 <div class="img_show img_show1">         <img src="img2/img06.jpg&quo ...

  7. html实现选择头像,HTML5实现上传头像图片大小选择(简单实现)

    HTML5仿微博图片上传后大小选择,请使用chrom或者FireFox运行.如果报SECURITY_ERR需要把文件放在服务器端.比如nginx里. 1.[代码][HTML]代码 New Docume ...

  8. vue中使用axios post上传头像/图片并实时显示到页面

    前端开发中,为了更好的用户体验,在头像上传时会先将图片显示到页面然后点击保存按钮 完成图片的上传成功 代码部分有参考他人的写法. html代码: <div id="myPhoto&qu ...

  9. Android 读取拍照或相册uri 转换成图片的绝对路径

    一个android文件的Uri地址一般如下: content://media/external/images/media/62026 这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中 ...

最新文章

  1. 超融合架构的优缺点_超融合服务器与传统架构服务器的区别哪?定制服务器厂家简要分析...
  2. 中国芯片将靠此超车!RISC-V架构神在哪全解构
  3. Codeup 墓地——问题 B: A+B
  4. 如何用Java创建ZIP文档?
  5. ckeditor_3.6.6.2+CKFinder2.0.2配置
  6. 视频营销:影响视频排名的五个重要因素
  7. linux下ssh/scp无密钥登陆方法
  8. 荷花用计算机怎么画,怎样画荷花荷叶简笔画
  9. C# 笔记1 - 操作目录
  10. 如何让网页字体文件大瘦身?前端字体优化知多D
  11. 计算机专业英语词汇总结
  12. react引入html2canvas和jspdf生成PDF打印及下载
  13. python 函数 与 open打开文件的三种模式:r读、w写、a追加、
  14. 求助:ACM剑气算法
  15. MFC技术内幕系列之(二)---MFC文档视图结构内幕
  16. 编程实战赛来啦!B站周边、高级会员等好礼送你啦!
  17. WMS系统关于退料的几种方式
  18. 软件测试Selenium-API 操作(上机练习文档)分享
  19. 图像处理-最常见面试题(必问)
  20. linux网络被限制网速,linux iptables限速及限制每IP连接数

热门文章

  1. 单片机实现跑马灯c语言程序,用单片机编写几种跑马灯程序
  2. python简笔画绘制 数据驱动绘图恐龙_python:绘制枫叶简笔画
  3. 游戏编程中的人工智能技术--神经网络
  4. ionic 打 android 出现 Current working directory is not a Cordova-based project.
  5. 计算机专业难不难,计算机专业考研难不难
  6. 7. Laravel5学习笔记:如何定义自己的视图组件
  7. boost install
  8. DBA_DATAPUMP_JOBS
  9. getchar和putchar函数详解
  10. 懂得选择,学会放弃..