Android手机拍照或选取图库图片作为头像
packagezhangpgil.photo; importjava.io.File; importandroid.support.v7.app.ActionBarActivity; importandroid.view.View; importandroid.widget.Button; importandroid.widget.ImageView; importandroid.widget.Toast; importandroid.content.Intent; importandroid.graphics.Bitmap; importandroid.net.Uri; importandroid.os.Bundle; importandroid.os.Environment; importandroid.provider.MediaStore; publicclassMainActivityextendsActionBarActivity{ /*头像文件*/ privatestaticfinalStringIMAGE_FILE_NAME="temp_head_image.jpg"; /*请求识别码*/ privatestaticfinalintCODE_GALLERY_REQUEST=0xa0; privatestaticfinalintCODE_CAMERA_REQUEST=0xa1; privatestaticfinalintCODE_RESULT_REQUEST=0xa2; //裁剪后图片的宽(X)和高(Y),480X480的正方形。(生成bitmap貌似有时要报错?可试下把大小弄小点) privatestaticintoutput_X=480; privatestaticintoutput_Y=480; privateImageViewheadImage=null; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); headImage=(ImageView)findViewById(R.id.imageView); ButtonbuttonLocal=(Button)findViewById(R.id.buttonLocal); buttonLocal.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ choseHeadImageFromGallery(); } }); ButtonbuttonCamera=(Button)findViewById(R.id.buttonCamera); buttonCamera.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ choseHeadImageFromCameraCapture(); } }); } //从本地相册选取图片作为头像 privatevoidchoseHeadImageFromGallery(){ IntentintentFromGallery=newIntent(); //设置文件类型 intentFromGallery.setType("image/*"); intentFromGallery.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intentFromGallery,CODE_GALLERY_REQUEST); } //启动手机相机拍摄照片作为头像 privatevoidchoseHeadImageFromCameraCapture(){ IntentintentFromCapture=newIntent(MediaStore.ACTION_IMAGE_CAPTURE); //判断存储卡是否可用,存储照片文件 if(hasSdcard()){ intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT,Uri .fromFile(newFile(Environment .getExternalStorageDirectory(),IMAGE_FILE_NAME))); } startActivityForResult(intentFromCapture,CODE_CAMERA_REQUEST); } @Override protectedvoidonActivityResult(intrequestCode,intresultCode, Intentintent){ //用户没有进行有效的设置操作,返回 if(resultCode==RESULT_CANCELED){ Toast.makeText(getApplication(),"取消",Toast.LENGTH_LONG).show(); return; } switch(requestCode){ caseCODE_GALLERY_REQUEST: cropRawPhoto(intent.getData()); break; caseCODE_CAMERA_REQUEST: if(hasSdcard()){ FiletempFile=newFile( Environment.getExternalStorageDirectory(), IMAGE_FILE_NAME); cropRawPhoto(Uri.fromFile(tempFile)); }else{ Toast.makeText(getApplication(),"没有SDCard!",Toast.LENGTH_LONG) .show(); } break; caseCODE_RESULT_REQUEST: if(intent!=null){ setImageToHeadView(intent); } break; } super.onActivityResult(requestCode,resultCode,intent); } /** *裁剪原始的图片 */ publicvoidcropRawPhoto(Uriuri){ Intentintent=newIntent("com.android.camera.action.CROP"); intent.setDataAndType(uri,"image/*"); //设置裁剪 intent.putExtra("crop","true"); //aspectX,aspectY:宽高的比例 intent.putExtra("aspectX",1); intent.putExtra("aspectY",1); //outputX,outputY:裁剪图片宽高 intent.putExtra("outputX",output_X); intent.putExtra("outputY",output_Y); intent.putExtra("return-data",true); startActivityForResult(intent,CODE_RESULT_REQUEST); } /** *提取保存裁剪之后的图片数据,并设置头像部分的View */ privatevoidsetImageToHeadView(Intentintent){ Bundleextras=intent.getExtras(); if(extras!=null){ Bitmapphoto=extras.getParcelable("data"); headImage.setImageBitmap(photo); } } /** *检查设备是否存在SDCard的工具方法 */ publicstaticbooleanhasSdcard(){ Stringstate=Environment.getExternalStorageState(); if(state.equals(Environment.MEDIA_MOUNTED)){ //有存储的SDCard returntrue; }else{ returnfalse; } } }
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher"/> <Button android:id="@+id/buttonLocal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="本地相册选取头像"/> <Button android:id="@+id/buttonCamera" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手机拍照选取头像"/> </LinearLayout>
以上所述就是本文的全部内容了,希望大家能够喜欢。