android系统自带图片裁剪的注意事项(E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!)
来源:互联网 发布:js object to list 编辑:程序博客网 时间:2024/05/20 09:26
转载请注明出处:(http://blog.csdn.net/qq_35071078/article/details/72835876)
最近的项目中用到了图片裁剪的功能,所以用到了系统自带的裁剪功能代码如下:(现在的思路是这样的,首先传入需要裁剪的图片的Uri,给系统自带的图片裁剪activity,然后进入到这个activity,当裁剪完成后,返回,在我们自己的activity调用onActivityResult,通过intent获取返回的bitmap,这个思路一般的机型没有问题,但是少部分机型会出现问题,比如我的这个小米测试机。)
/** * 裁剪图片,进入系统自带的activity * * @param uri */ private void cropPhoto(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); Uri cropUri = Uri.fromFile(new File( Environment.getExternalStorageDirectory().getPath() + "/fc/crop/club.png")); intent.putExtra(MediaStore.EXTRA_OUTPUT, cropUri); intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, 3); }
然后通过通过系统自带的剪裁activity返回的intent(onActivityResult)来获取bitmap。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: break; case 2: break; case 3: if (data != null) { final File file = new File( Environment.getExternalStorageDirectory().getPath() + "xxx.png"); new Thread() { @Override public void run() { photo = HttpAssist.uploadFile(file); } }.start(); Bundle extras = data.getExtras(); head = extras.getParcelable("data"); if (head != null) { /** * * 上传服务器代码 * */ //setPicToView(head);//保存在SD卡中 mImg.setImageBitmap(head);//用ImageView显示出来 } } break; } super.onActivityResult(requestCode, resultCode, data); }
一般的机型不会出问题,但是在我的测试机mui8.2上出现了问题,报出的错误信息为:E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!出现问题的地方在返回的intent,intent无法返回图片数据,是一个空的intent,类似这样”data{ }”,这就是返回的data(intent类型的对象),是空的。目前还不知道哪些机型会出现同样的状况,所以代码改成如下:
/** * 裁剪图片 * * @param uri */ private void cropPhoto(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); Uri cropUri = Uri.fromFile(new File( Environment.getExternalStorageDirectory().getPath() + "xxx.png")); intent.putExtra(MediaStore.EXTRA_OUTPUT, cropUri); intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); /** * 此方法返回的图片只能是小图片(sumsang测试为高宽160px的图片) * 故将图片保存在Uri中,调用时将Uri转换为Bitmap,此方法还可解决miui系统不能return data的问题 * intent.putExtra("return-data", true); */ Uri uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "xxx.png"); intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile); //intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString()); startActivityForResult(intent, 3); }
原理就是通过系统自带的裁剪activity,直接将裁剪后的图片保存在SDCard中或者某个路径中,然后直接在其他地方通过这个路径来读取图片,而不是在返回的intent中去除bitmap,这样就ok了。
阅读全文
3 0
- android系统自带图片裁剪的注意事项(E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!)
- android JavaBinder - FAILED BINDER TRANSACTION
- javabinder failed binder transaction
- [Android开发-异常]javabinder !!! FAILED BINDER TRANSACTION !!!
- Android开发异常javabinder !!! FAILED BINDER TRANSACTION !!!
- Android JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 224)
- JavaBinder: !!! FAILED BINDER TRANSACTION !!! 异常的解决方案分析
- E/JavaBinder:FAILED BINDER TRANSACTION错误解决+RadioGroup调用check方法的时候,onCheckedChanged被调用多次的问题解决
- [Android] 调用系统裁切图片的 !!! FAILED BINDER TRANSACTION !!! 错误
- 上传图片裁剪处理-调用android系统自带的裁剪功能
- Android 自带图片裁剪
- android FAILED Binder Transaction 问题的原因
- android FAILED Binder Transaction 问题的原因
- android 调用系统自带的选择图片 然后进行自定义大小裁剪
- Android系统自带的一个图片剪裁页面裁剪后有黑边问题
- Android 调用系统相机进行拍照 使用自带的图片选择器和裁剪工具
- Android自带的裁剪图片功能操作方式
- intent 实现android自带的图片裁剪
- 《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_D Shell Sort
- 欢迎使用CSDN-markdown编辑器
- js 使用for...in...遍历对象时需要注意的一个问题:遍历时莫名其妙的多了属性
- elasticsearch 学习博客系列<二> ES 中 index 设置 Mapping(表结构)
- Lowest Bit
- android系统自带图片裁剪的注意事项(E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!)
- Discovery:在vs2013平台上应用VideoInput第三方库
- 虚拟机相关问题日志
- 【算法题】双向冒泡排序
- TouchSlop
- Android控件——多状态按钮ToggleButton
- 单例设计模式
- HDU-1233-还是畅通工程(prim)
- C语言函数strcmp