Android根据Action实现一下功能:

packagecom.uwo.tools.aibum.local.utils;importandroid.app.Activity;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Environment;importandroid.provider.MediaStore;importandroid.util.Log;importjava.io.File;/***CreatedbySRainon2015/12/11.*<p/>*根据Action实现功能*1.拍照*2.获取本地相册*3.剪切图片*/publicclassActionUtils{publicstaticfinalintGET_IMAGE_FROM_PHONE=5002;//获取相册返回标识码publicstaticfinalintCROP_IMAGE=5003;//剪切返回标识码publicstaticfinalintOPEN_CAMERA_IMAGE_URI=5100;//拍照直接返回uripublicstaticfinalintOPEN_CAMERA_IMAGE_PATH=5101;//拍照传入返回文件路径publicstaticfinalintOPEN_CAMERA_IMAGE_THUMB=5102;//拍照返回缩略图publicstaticfinalintOPEN_CAMERA_IMAGE_NO_RESULT=5103;//拍照无返回值/***使用系统相机拍照*设置输出参数,返回Uri**@paramactivity*/publicstaticvoidopenCameraImage(finalActivityactivity){ImageUriUtils.imageUriFromCamera=ImageUriUtils.createImagePathUri(activity);Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT,ImageUriUtils.imageUriFromCamera);activity.startActivityForResult(intent,OPEN_CAMERA_IMAGE_URI);}/***使用系统相机拍照*设置输出参数,返回指定的文件路径中**@paramactivity*@parampath拍照后文件保存的路径*/publicstaticvoidopenCameraImage(finalActivityactivity,Stringpath){Filefile=newFile(path);if(!file.exists()){file=newFile(Environment.getExternalStorageDirectory(),path);}Uriuri=Uri.fromFile(file);ImageUriUtils.imageUriFromCamera=ImageUriUtils.createImagePathUri(activity);Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);activity.startActivityForResult(intent,OPEN_CAMERA_IMAGE_PATH);}/***使用系统相机拍照*不设置输出参数,系统会自动生成一个uri,但是只会返回一个缩略图*<p/>**@paramactivity*@return返回图片在onActivityResult中通过以下代码获取Bitmapbitmap=(Bitmap)data.getExtras().get("data");*/publicstaticvoidopenCameraImageThumb(finalActivityactivity){ImageUriUtils.imageUriFromCamera=ImageUriUtils.createImagePathUri(activity);Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);activity.startActivityForResult(intent,OPEN_CAMERA_IMAGE_THUMB);}/***不关心返回结果直接拍照*/publicstaticvoidopenCameraImageNoResult(finalActivityactivity){Intentintent=newIntent();//调用照相机intent.setAction("android.media.action.STILL_IMAGE_CAMERA");activity.startActivity(intent);}/***打开本地相册**@paramactivity*/publicstaticvoidopenLocalImage(finalActivityactivity){Intentintent=newIntent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);activity.startActivityForResult(intent,GET_IMAGE_FROM_PHONE);}/***图片剪裁**@paramactivity*@paramsrcUri*/publicstaticvoidcropUriImage(Activityactivity,UrisrcUri){ImageUriUtils.cropImageUri=ImageUriUtils.createImagePathUri(activity);Intentintent=newIntent("com.android.camera.action.CROP");intent.setDataAndType(srcUri,"image/*");intent.putExtra("crop","true");//////////////////////////////////////////////////////////////////1.宽高和比例都不设置时,裁剪框可以自行调整(比例和大小都可以随意调整)//////////////////////////////////////////////////////////////////2.只设置裁剪框宽高比(aspect)后,裁剪框比例固定不可调整,只能调整大小//////////////////////////////////////////////////////////////////3.裁剪后生成图片宽高(output)的设置和裁剪框无关,只决定最终生成图片大小//////////////////////////////////////////////////////////////////4.裁剪框宽高比例(aspect)可以和裁剪后生成图片比例(output)不同,此时,//会以裁剪框的宽为准,按照裁剪宽高比例生成一个图片,该图和框选部分可能不同,//不同的情况可能是截取框选的一部分,也可能超出框选部分,向下延伸补足//////////////////////////////////////////////////////////////////aspectXaspectY是裁剪框宽高的比例//intent.putExtra("aspectX",1);//intent.putExtra("aspectY",1);//outputXoutputY是裁剪后生成图片的宽高//intent.putExtra("outputX",300);//intent.putExtra("outputY",100);//return-data为true时,会直接返回bitmap数据,但是大图裁剪时会出现问题,推荐下面为false时的方式//return-data为false时,不会返回bitmap,但需要指定一个MediaStore.EXTRA_OUTPUT保存图片uriLog.e("srcUri",srcUri.toString());intent.putExtra(MediaStore.EXTRA_OUTPUT,ImageUriUtils.cropImageUri);Log.e("cropImageUri",ImageUriUtils.cropImageUri.toString());intent.putExtra("return-data",true);activity.startActivityForResult(intent,CROP_IMAGE);}}


更多相关文章

  1. Androd之在图片右上角显示红色圆圈里面数字提醒
  2. tabcontent中scaleType的使用 图片Drawable和bitmap显示问题
  3. android图片浏览器 PhotoStore
  4. Android 图片裁剪之三剑式(二)
  5. android 选择本地图片并截剪图片保存到,sdcard指定目录中
  6. Android之adt 23找不到NDK路径设置解决方案

随机推荐

  1. WebView的使用,android与JS混编
  2. 修改checkbox框颜色
  3. android 在源码中编译工程的方法
  4. Android(安卓)JNI 编程
  5. Android(安卓)跳转到百度、高德、腾讯地
  6. Android+NDK+OpenGLES开发环境配置
  7. android studio 自用快捷键方案
  8. Android自定义view绘制顺序及相关原理
  9. Activity的架构设计
  10. android 制造假数据