解决小米miui系统调用系统裁剪图片功能崩溃失败的问题
项目中选择图片作为头像,都要经过剪裁的过程。一般我们都调用系统剪裁的方法。不过该方法在其它系统上都显示正常,但是在miui系统上就出错了。经测试发现其他系统
cropBitmap = data.getParcelableExtra("data");
方法都是有值的,而miui系统却没有。查资料发现miui系统默认的裁剪图片可能裁剪得过大,或对return-data分配的资源不足,造成return-data失败。
失败的剪裁方法如下:
Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString()); intent.putExtra("noFaceDetection", true); intent.putExtra("return-data", true); startActivityForResult(intent, REQUE_CODE_CROP);
解决方案:
剪裁后保存资源路径uri,在onActivityResult()方法中再提取uri图片转化成bitmap即可。
修改后的方法如下:
Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString()); intent.putExtra("noFaceDetection", true); /** * 此方法返回的图片只能是小图片(sumsang测试为高宽160px的图片) * 故只保存图片Uri,调用时将Uri转换为Bitmap,此方法还可解决miui系统不能return data的问题 */ // intent.putExtra("return-data", true); uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + "small.jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile); startActivityForResult(intent, REQUE_CODE_CROP);
try {cropBitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(uritempFile)); } catch (FileNotFoundException e) {e.printStackTrace(); }
好了,这样就解决了,如果有更好的方法欢迎留言!
解决小米miui系统调用系统裁剪图片功能崩溃失败的问题相关推荐
- 解决小米miui系统调用系统裁剪图片功能camera.action.CROP后崩溃或重新打开app的问题
选择相册图片(或调用MediaStore.ACTION_IMAGE_CAPTURE拍照),然后裁剪.在其他系统上都测试正常,但是在小米上出现了问题.小米2s上,裁剪后点击确定直接卡死系统:小米3上,裁 ...
- 彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题
彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题 参考文章: (1)彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题 (2)https://www.cnblog ...
- 安卓图片操作(调用系统相机,预览本地照片,调用系统裁剪图片,压缩图片,中心裁剪方形图片,bitmap转byte[])
先创建照片存储uri public static Uri createImagePathUri(Context context) {Uri imageFilePath = null;String st ...
- 小米笔记本重装系统没有wifi功能和扬声器没有声音解决的过程(红米G游戏本)
要看解决方法的直接看文章最后 经过: 1.因为自己已经用pe系统给很多同学包括我自己重装过很多次系统了,所以最开始打算用pe给小米笔记本装系统.pe盘里面装的镜像是MSDN上面下载的最新1909的wi ...
- 小米MIUI双系统原理及刷机
很多人都会关注小米手机的双系统吧,其实小米现在还不能真正的实现双系统,但确实能用上双系统.# M9 B# m% q! Z- c 说到MIUI系统的刷机,我们首先想到的是观音哥介绍的6种刷机的方式.具体 ...
- 小米手机系统服务组件是干什么的_小米MIUI 12系统,电信卡无法使用通话服务提醒何时休?...
小米MIUI12系统,可以说是国产智能手机系统中,功能最完整,动画效果最好的系统之一,其中的地震预警功能更是成为其他品牌争相模仿的实用功能,不过在小米MIUI12系统强大的背后,也有一些影响使用的bu ...
- android调用系统裁剪图片 返回模糊 不清晰的问题
基本这个功能都是在头像设置的时候会用到 Android 从相机拍完照片 然后跳去系统自带的裁剪 或者从相册选取图片裁剪 然后把裁剪好的图片设置成头像 这里直接贴上跳到裁剪部分的代码 private ...
- android裁剪图片功能,Android实现图片区域裁剪功能
今天做的就是关于实现图片的区域裁剪功能.由于项目功能的需要笔者需要实现PDF文档的阅读,并且就某个页面实现"图片"裁剪(一个页面理解为一张图片).笔者对着方面是一点儿也不熟悉,因此 ...
- [经验技巧] 小米 MIUI V4 系统精简列表
MIUI V4 系统程序功能说明和精简建议 之前需要:进授权管理------开启权限监控-------关闭...OK. 相信这里一定会有一些精简控,精简后刷机,完整包不需要的东西又会出现,只有OTA升 ...
最新文章
- CV算法复现(分类算法6/6):MobileNet(2017年V1,2018年V2,2019年V3,谷歌)
- 汽车票销售系统mysql,jsp683客运汽车票网上售票系统mysql
- when to book didi?
- 苹果手机透明桌面_打开手机这个设置,桌面变全透明!
- C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件),附源码
- 华为怎么用手机看时间到读秒_华为手机灭屏也可以看时间?其实设置方法很简单,不会有些可惜了...
- [转载]IIS 6.0配置HTTP压缩的步骤
- 网路游侠:铱迅软件版WEB应用防火墙试用
- linux tomcat/bin/shutdown.sh 关闭不了
- 关于Romoting又一例
- STL 中的容器们(三)
- 如何在 Mac 上修复丢失的鼠标光标?
- java Monitor对象监视器、对象头、mark word
- TCP的粘包问题以及数据的无边界性
- 计算机图标ps教程,Photoshop基础教程:路径组合工具打造中国银行标志
- android系统同时使用wifi和4g上网
- 物联网工程专业属于计算机类吗,物联网工程属于计算机类吗
- Android3dtouch xposed,你不应错过的 8 款优秀 Xposed 模块 2015 年度盘点
- css里dotted,CSS中dashed和dotted的区别有哪些
- 中华大地第二次大变革 看印度反思自我之六 印度模式更有吸引力