首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 拍照 与 相册选择图片

Android 拍照 与 相册选择图片

作者头像
码客说
发布2019-10-22 14:35:03
1.6K0
发布2019-10-22 14:35:03
举报
文章被收录于专栏:码客码客码客

拍照

private static final int TAKE_PICTURE = 0;

void takePhotoClick() {
   if (Build.VERSION.SDK_INT >= 23) {
       requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_CODE_ASK_PERMISSIONS);
   } else {
       startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE"), TAKE_PICTURE);
   }
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
   switch (requestCode) {
       case REQUEST_CODE_ASK_PERMISSIONS:
           if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
               startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE"), TAKE_PICTURE);
           } else {
               // 没有打开相机的权限
               Toast.makeText(TakePhotoActivity.this, "没有打开照相机权限", Toast.LENGTH_SHORT).show();
           }
           break;
       default:
           super.onRequestPermissionsResult(requestCode, permissions, grantResults);
   }
}

回调

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode == TAKE_PICTURE && resultCode == RESULT_OK && null != data) {
       String sdState = Environment.getExternalStorageState();
       if (!sdState.equals(Environment.MEDIA_MOUNTED)) {
           return;
       }
       String name = DateFormat.format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg";
       Bundle bundle = data.getExtras();
       //获取相机返回的数据,并转换为图片格式
       Bitmap bitmap = (Bitmap) bundle.get("data");
       FileOutputStream fout = null;
       File file = new File("/sdcard/pics/");
       file.mkdirs();
       String filename = file.getPath() + name;
       try {
           fout = new FileOutputStream(filename);
           bitmap.compress(Bitmap.CompressFormat.JPEG, 80, fout);
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       } finally {
           try {
               fout.flush();
               fout.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
       //显示图片
   }
}

选取相册图片

private static final int IMAGE = 1;
void choose_photo_layout_click() {
   //调用相册
   Intent intent = new Intent(Intent.ACTION_PICK,
           android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
   startActivityForResult(intent, IMAGE);
}

回调

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   //获取图片路径
   if (requestCode == IMAGE && resultCode == Activity.RESULT_OK && data != null) {
       Uri selectedImage = data.getData();
       String[] filePathColumns = {MediaStore.Images.Media.DATA};
       Cursor c = getContentResolver().query(selectedImage, filePathColumns, null, null, null);
       c.moveToFirst();
       int columnIndex = c.getColumnIndex(filePathColumns[0]);
       String imagePath = c.getString(columnIndex);
       showImage(imagePath);
       c.close();
   }
}

//加载图片
private void showImage(String imaePath){
   Bitmap bm = BitmapFactory.decodeFile(imaePath);

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 拍照
  • 选取相册图片
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档