Android编程实现调用相册,相机及拍照后直接裁剪的方法

  

本文实例讲述了Android编程实现调用相册,相机及拍照后直接裁剪的方法。分享给大家供大家参考,具体如下:

        包com.cvte.health.phone;   进口java.io.File;   进口java.text.SimpleDateFormat;   进口java.util.Date;   进口android.app.Activity;   进口android.content.ContentResolver;   进口android.content.ContentUris;   进口android.content.Intent;   进口android.database.Cursor;   进口android.graphics.Bitmap;   进口android.graphics.drawable.Drawable;   进口android.net.Uri;   进口android.os.Bundle;   进口android.os.Environment;   进口android.provider.MediaStore;   进口android.view.View;   进口android.view.View.OnClickListener;   进口android.widget.Button;   进口android.widget.ImageView;   进口com.cvte.health.AccountManager;   进口com.cvte.health.HealthApplication;   进口com.cvte.health.R;   进口com.cvte.health.api.ImageUpdater;   进口com.cvte.health.database.User;   公开课ChangePortraitActivity延伸活动{   私人ImageView mImageView;   私人按钮mButtonCamera;   私人按钮mButtonPhoto;   私人按钮mButtonBack;   私人按钮mButtonSave;   私人用户沉思者=零;   私人文件mCurrentPhotoFile;   @Override   公共空间onCreate(包savedInstanceState) {   super.onCreate (savedInstanceState);   setContentView (R.layout.activity_change_portrait);   .addActivity HealthApplication.getInstance () ();   沉思者=AccountManager.getInstance () .getCurrentUser ();   mImageView=(ImageView) this.findViewById (R.id.imageview_preview);   mButtonCamera=(按钮)this.findViewById (R.id.button_cameraButton);   mButtonPhoto=(按钮)this.findViewById (R.id.button_photoButton);   mButtonBack=(按钮)findViewById (R.id.button_back);   mButtonSave=(按钮)findViewById (R.id.button_save);   ImageUpdater.getInstance(这个)。updateUserPhoto(沉思者,mImageView);   mButtonCamera。setOnClickListener OnClickListener(新(){   @Override   公共空间onClick(查看v) {   目的意图=new意图(“android.media.action.IMAGE_CAPTURE”);   mCurrentPhotoFile=新文件(“mnt/sdcard/DCIM/相机/?   getPhotoFileName ());   intent.putExtra (MediaStore.EXTRA_OUTPUT   Uri.fromFile (mCurrentPhotoFile));   startActivityForResult(意图,Activity.DEFAULT_KEYS_DIALER);/*   *=new目的意图   *意图(“android.media.action.IMAGE_CAPTURE”);   * intent.putExtra (MediaStore。EXTRA_OUTPUT Uri.fromFile(新   *文件(环境.getExternalStorageDirectory (),   *“camera.jpg”)));   * intent.putExtra (MediaStore。EXTRA_VIDEO_QUALITY, 0);   * startActivityForResult(意图,10);   */}   });   mButtonPhoto。setOnClickListener OnClickListener(新(){   @Override   公共空间onClick(查看v) {   目的意图=new意图(Intent.ACTION_GET_CONTENT);   intent.addCategory (Intent.CATEGORY_OPENABLE);   intent.setType(“图像/*”);   意图。putExtra(“作物”,“真正的”);   意图。putExtra (" aspectX ", 1);   意图。putExtra (" aspectY ", 1);   意图。putExtra (“outputX ", 300);   意图。putExtra (“outputY ", 300);   意图。putExtra(“返回数据”,真正的);   startActivityForResult(意图,11);   }   });   mButtonBack。setOnClickListener OnClickListener(新(){   @Override   公共空间onClick(查看v) {   完成();   }   });   mButtonSave。setOnClickListener OnClickListener(新(){   @Override   公共空间onClick(查看v) {   目的意图=new意图(ChangePortraitActivity.this   UserProfileActivity.class);   mImageView.setDrawingCacheEnabled (Boolean.TRUE);   意图。putExtra(“位图”,mImageView.getDrawingCache ());//这里可以放一个位图   startActivity(意图);   完成();   overridePendingTransition (R.anim.activity_in_from_left   R.anim.activity_out_from_right);   }   });   }   @Override   保护无效onActivityResult (int, int requestCode resultCode,意图数据){   如果(requestCode==10,,resultCode==Activity.RESULT_OK) {   mImageView.setImageDrawable(可拉的。createFromPath(新文件(   Environment.getExternalStorageDirectory (),“camera.jpg”)   .getAbsolutePath ()));   }else if (requestCode==11,,resultCode==Activity.RESULT_OK) {   位图cameraBitmap=(位图)data.getExtras () . get("数据");   mImageView.setImageBitmap (cameraBitmap);   }else if (requestCode==1,,resultCode==Activity.RESULT_OK) {   Uri imgUri=MediaStore.Images.Media.EXTERNAL_CONTENT_URI;   ContentResolver cr=ChangePortraitActivity.this   .getContentResolver ();   Uri fileUri=Uri.fromFile (mCurrentPhotoFile);   sendBroadcast(新意图(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE   fileUri));   尝试{   thread . sleep (3000);   }捕捉(InterruptedException e) {   e.printStackTrace ();   }   鼠标光标=cr.query (imgUri、零   MediaStore.Images.Media。DISPLAY_NAME +“=?   + mCurrentPhotoFile.getName () + " ", null, null);   Uri Uri=零;   如果光标!=零,,cursor.getCount()比;0){   cursor.moveToLast ();   长id=cursor.getLong (0);   uri=ContentUris。withAppendedId (imgUri、身份证);   }   最终目的意图=new意图(“com.android.camera.action.CROP”);   意图。setDataAndType (uri,“图像/*”);   意图。putExtra(“作物”,“真正的”);   意图。putExtra (" aspectX ", 1);   意图。putExtra (" aspectY ", 1);   意图。putExtra (“outputX ", 300);   意图。putExtra (“outputY ", 300);   意图。putExtra(“返回数据”,真正的);   ChangePortraitActivity.this。startActivityForResult(意图,3);   }else if (requestCode==3,,resultCode==Activity.RESULT_OK) {   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android编程实现调用相册,相机及拍照后直接裁剪的方法