本文实例讲述了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 nullAndroid编程实现调用相册,相机及拍照后直接裁剪的方法