弹出信息提示框代码
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("选择图片"); builder.setMessage("可以通过相册和照相来修改默认图片!"); builder.setPositiveButton("图库", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { tempFile = new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME); gallery(); } }); builder.setNegativeButton("拍照", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { tempFile = new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME); camera(); } }); builder.create();//创建 builder.show();//显示
从相册中选择照片代码:
/** * 从相册获取 */ public void gallery() { Intent intent=new Intent(Intent.ACTION_GET_CONTENT);//ACTION_OPEN_DOCUMENT intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/jpeg"); if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.KITKAT){ startActivityForResult(intent, PHOTO_REQUEST_GALLERY); }else{ startActivityForResult(intent, PHOTO_REQUEST_GALLERY2); } }
从相机中获取
/** * 从相机获取 */ public void camera() { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); // 判断存储卡是否可以用,可用进行存储 if (hasSdcard()) { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME))); } startActivityForResult(intent, PHOTO_REQUEST_CAMERA); }
//判断存储卡是否可用
/** * 判断SD卡是否可用 * * @return */ private boolean hasSdcard() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return true; } else { return false; } }
//通过返回值来设置照片
/** * 通过返回的值来设置图片 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PHOTO_REQUEST_GALLERY2) { if (data != null) { // 得到图片的全路径 String path = GetPictureFromLocation.selectImage(getApplicationContext(),data); crop(Uri.parse("file://"+path));//调用剪贴图片代码 } } else if (requestCode == PHOTO_REQUEST_GALLERY) { if (data != null) { // 得到图片的全路径 String path = GetPictureFromLocation.getPath(getApplicationContext(), data.getData()); crop(Uri.parse("file://"+path));//调用剪贴图片代码 } }else if (requestCode == PHOTO_REQUEST_CAMERA) { crop(Uri.fromFile(tempFile)); //调用剪贴图片代码 }else if (requestCode == PHOTO_REQUEST_CUT) { try { Bitmap bitmap = BitmapFactory.decodeFile(tempFile.getPath()); Log.e("uri", Uri.fromFile(tempFile).toString()); head_image.setImageBitmap(bitmap); } catch (Exception e) { e.printStackTrace(); } } }
//剪贴图片源码:
/** * 剪切图片 * * @function: * @author:Jerry * @date:2013-12-30 * @param uri */ private void crop(Uri uri) { Log.e("URI", uri.getPath()); Log.e("URI", uri.toString()); // 裁剪图片意图 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); // 裁剪框的比例,1:1 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 裁剪后输出图片的尺寸大小 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); intent.putExtra("scale", true);//黑边 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile)); // 图片格式 intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true);// 取消人脸识别 intent.putExtra("return-data", true);// true:不返回uri,false:返回uri startActivityForResult(intent, PHOTO_REQUEST_CUT); }