Unity Android通过拍照和相册上传头像(图片)
Unity点击按钮调用AS中显示对话框选择是从相册中上传还是拍照上传,如果是相册直接获得路径传给Unity使用,如果是拍照,先拍照保存在本地,再将路径传递给Unity使用
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
Intent对象可以封装传递下面6种信息:
- 组件名称(ComponentName)
- 动作(Action)
- 种类(Category)
- 数据(Data)
- 附件信息(Extra)
- 标志(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通过拍照和相册上传头像(图片)相关推荐
- ASP.NET MVC3 上传头像图片并截图
关于上传头像并且截图网上应该有很多资料,大多都是JQuery插件,用起来不是很方便 本文所介绍的方法将快速完成一个"上传头像图片并截图",只需要修改少量的代码 我们先来看看完成后的 ...
- axios获取图片显示_vue中使用axios post上传头像/图片并实时显示到页面的方法
在前端开发中,为了更好的用户体验,在头像上传时会先将图片显示到页面然后点击保存按钮 完成图片的上传成功 代码部分有参考他人的写法. html代码: 请上传图片 js代码: //实时显示该图片在页面 g ...
- 小程序上传头像图片裁剪
原文链接:https://blog.csdn.net/qq_41049816/article/details/90604607* 给网上收到的 不知道好不好用 先收藏着: 小程序涉及到了用户上传头像的 ...
- Django搭建个人博客:上传头像图片
到目前为止我们的博客处理的都是文字.现代互联网早就进入了"读图"时代,图片的维护.展示也就相当重要. 上一章中预留了avatar字段,用来保存用户上传的头像,现在我们来实现这个功能 ...
- JEECG 上传头像,图片并切割
Jcrop + commons-fieldupload 上传组件上传图片并切割 图片上传并完成切割,图片的切割必须在服务器端完成,在客户端是无法进行切割的,至少在目前阶段. 1 母页面 regist ...
- jQuery点击头像上传头像图片并预览图片
HTML代码 <div class="img_show img_show1"> <img src="img2/img06.jpg&quo ...
- html实现选择头像,HTML5实现上传头像图片大小选择(简单实现)
HTML5仿微博图片上传后大小选择,请使用chrom或者FireFox运行.如果报SECURITY_ERR需要把文件放在服务器端.比如nginx里. 1.[代码][HTML]代码 New Docume ...
- vue中使用axios post上传头像/图片并实时显示到页面
前端开发中,为了更好的用户体验,在头像上传时会先将图片显示到页面然后点击保存按钮 完成图片的上传成功 代码部分有参考他人的写法. html代码: <div id="myPhoto&qu ...
- Android 读取拍照或相册uri 转换成图片的绝对路径
一个android文件的Uri地址一般如下: content://media/external/images/media/62026 这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中 ...
最新文章
- 超融合架构的优缺点_超融合服务器与传统架构服务器的区别哪?定制服务器厂家简要分析...
- 中国芯片将靠此超车!RISC-V架构神在哪全解构
- Codeup 墓地——问题 B: A+B
- 如何用Java创建ZIP文档?
- ckeditor_3.6.6.2+CKFinder2.0.2配置
- 视频营销:影响视频排名的五个重要因素
- linux下ssh/scp无密钥登陆方法
- 荷花用计算机怎么画,怎样画荷花荷叶简笔画
- C# 笔记1 - 操作目录
- 如何让网页字体文件大瘦身?前端字体优化知多D
- 计算机专业英语词汇总结
- react引入html2canvas和jspdf生成PDF打印及下载
- python 函数 与 open打开文件的三种模式:r读、w写、a追加、
- 求助:ACM剑气算法
- MFC技术内幕系列之(二)---MFC文档视图结构内幕
- 编程实战赛来啦!B站周边、高级会员等好礼送你啦!
- WMS系统关于退料的几种方式
- 软件测试Selenium-API 操作(上机练习文档)分享
- 图像处理-最常见面试题(必问)
- linux网络被限制网速,linux iptables限速及限制每IP连接数
热门文章
- 单片机实现跑马灯c语言程序,用单片机编写几种跑马灯程序
- python简笔画绘制 数据驱动绘图恐龙_python:绘制枫叶简笔画
- 游戏编程中的人工智能技术--神经网络
- ionic 打 android 出现 Current working directory is not a Cordova-based project.
- 计算机专业难不难,计算机专业考研难不难
- 7. Laravel5学习笔记:如何定义自己的视图组件
- boost install
- DBA_DATAPUMP_JOBS
- getchar和putchar函数详解
- 懂得选择,学会放弃..