获取相册图片或拍照

1 篇文章 0 订阅
1 篇文章 0 订阅

请注明出处:http://blog.csdn.net/daogepiqian/article/details/50483611

获取相册图片:

public void selectPhoto() {
  if (!Environment.MEDIA_MOUNTED.equals(Environment
    .getExternalStorageState())) {
   
  }
 
  Intent intent = null;
  intent = new Intent(Intent.ACTION_PICK, null);
  intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    "image/*");
  startActivityForResult(intent, REQUEST_CODE_FILE_CHOOSER);
 }

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch (requestCode) {
  
  case REQUEST_CODE_FILE_CHOOSER:
   
   if (resultCode != RESULT_OK) {
    
    return;
   }
   Uri uri = data.getData();

   if (uri == null) {
    
    return;
   }
   
   String mFilePath = getPath(getApplicationContext(), uri);
   if (!isEmpty(mFilePath)) {
    // gotoClipPicture(mFilePath); //鍘昏鍓�
    View view = this.getWindow().getDecorView();
    view.setDrawingCacheEnabled(true);
    view.buildDrawingCache();
    setImage(mFilePath);

   }
   break;

}

注意:getpatch():android4.4以后的区别  4.4之前是getDataColumn(context, uri, null, null);

@SuppressLint("NewApi")
 public String getPath(final Context context, final Uri uri) {
  final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
  Log.d(TAG, "CommMethod.getPath. isKitKat=" + isKitKat);
  if (isKitKat) {// android 4.4 及以后版本
   if (DocumentsContract.isDocumentUri(context, uri)) {
    if (isExternalStorageDocument(uri)) {
     final String docId = DocumentsContract.getDocumentId(uri);
     final String[] split = docId.split(":");
     final String type = split[0];
     if ("primary".equalsIgnoreCase(type)) {
      return Environment.getExternalStorageDirectory() + "/"
        + split[1];
     }
    }
    // DownloadsProvider
    else if (isDownloadsDocument(uri)) {
     final String id = DocumentsContract.getDocumentId(uri);
     final Uri contentUri = ContentUris.withAppendedId(
       Uri.parse("content://downloads/public_downloads"),
       Long.valueOf(id));
     return getDataColumn(context, contentUri, null, null);
    }
    // MediaProvider
    else if (isMediaDocument(uri)) {
     final String docId = DocumentsContract.getDocumentId(uri);
     final String[] split = docId.split(":");
     final String type = split[0];
     Uri contentUri = null;
     if ("image".equals(type)) {
      contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
     } else if ("video".equals(type)) {
      contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
     } else if ("audio".equals(type)) {
      contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
     }
     final String selection = BaseColumns._ID + "=?";
     final String[] selectionArgs = new String[] { split[1] };
     return getDataColumn(context, contentUri, selection,
       selectionArgs);
    }
   } else if ("content".equalsIgnoreCase(uri.getScheme())) {
    // Return the remote address
    if (isGooglePhotosUri(uri)) {
     return uri.getLastPathSegment();
    }
    return getDataColumn(context, uri, null, null);
   } else {
    return uri.getPath();
   }
  } else {// android 4.4以前版本
   return getDataColumn(context, uri, null, null);
  }
  return null;
 }

private String getDataColumn(Context context, Uri uri, String selection,
   String[] selectionArgs) {
  Cursor cursor = null;
  final String column = MediaColumns.DATA;
  final String[] projection = { column };
  try {
   cursor = context.getContentResolver().query(uri, projection,
     selection, selectionArgs, null);
   if (cursor != null && cursor.moveToFirst()) {
    final int index = cursor.getColumnIndexOrThrow(column);
    return cursor.getString(index);
   }
  } finally {
   if (cursor != null) {
    cursor.close();
   }
  }
  return null;
 }

拍照获取图片:

 public void takePhoto() {
  if (!Environment.MEDIA_MOUNTED.equals(Environment
    .getExternalStorageState())) {
   
  }
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  strTakePicturePath = getCapturePictureFilesPath(getApplicationContext());
  String fileName = new SimpleDateFormat("yyyyMMddHHmmss")
    .format(new Date()) + ".jpg";// 照片命名
  File out = new File(strTakePicturePath, fileName);
  try {
   if (out.exists()) {
    out.delete();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  strTakePicturePath = strTakePicturePath + fileName;
  Uri uri = Uri.fromFile(out);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
  intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
  startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE);
 }

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch (requestCode) {
  case REQUEST_CODE_TAKE_PICTURE:
     if (resultCode != RESULT_OK) {
       return;
   }
   File file = null;
   try {
    file = new File(strTakePicturePath);
   } catch (Exception e) {
    e.printStackTrace();
   }
   if (file != null && file.isFile() && file.exists()) {
    // gotoClipPicture(strTakePicturePath); //鍘昏鍓�
    setImage(strTakePicturePath);
   } else {
    Log.i(TAG, "msg_take_picture_failed1");
   }
   break;

请注明出处:http://blog.csdn.net/daogepiqian/article/details/50483611




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值