调用系统相机

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 关键:新建相机的 IntentstartActivityForResult(intent, TAKE_PHOTOS_CODE); // 加载相机 Activity ,TAKE_PHOTOS_CODE 是自定义的 ing 型常量,用于在 onActivityResult 处理识别返回的数据

将系统相机返回的照片展示在 ImageView

重写 onActivityResult()

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == TAKE_PHOTOS_CODE && resultCode == RESULT_OK) {    Bitmap bm = (Bitmap) data.getExtras().get("data");imageView.setImageBitmap(bm);    }}

可以参考 ImageView 的显示方式的设置说明

将系统相机拍摄的照片保存在本地

上面通过直接在 onActivityResult 中处理返回的数据,会发现得到的只是一张的缩略图,想要得到原图,需要在调用系统相机前指定照片的保存位置,将照片保存在手机本地储存:

int currentapiVersion = android.os.Build.VERSION.SDK_INT; // 获取版本号Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 调用相机String fileName = System.currentTimeMillis() + ".jpg"; // 使用系统时间来对照片进行命名,保证唯一性tempFile = new File(Environment.getExternalStorageDirectory() + savePath, fileName); // 建立文件的保存路径if (currentapiVersion < 24) { // Android 7.0 以下版本的设置方式    Uri fileUri = Uri.fromFile(tempFile);    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // 配置了之后,在 onActivityResult 中返回的 data 为 null} else { // 兼容 Android 7.0 使用共享文件的形式    ContentValues contentValues = new ContentValues(1);    contentValues.put(MediaStore.Images.Media.DATA, tempFile.getAbsolutePath());    Uri fileUri = getApplication().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);}startActivityForResult(intent, TAKE_PHOTOS_CODE); // 加载相机 Activity

这里的路径必须是已有的,如何新建目录可以参考这篇文档

读取本地的储存的图片展示到 ImageView

imageView.setImageURI(Uri.fromFile(tempFile));

更多相关文章

  1. android系统提供的常用命令行工具
  2. android避免service被杀
  3. Android工具类ImgUtil选择相机和系统相册
  4. Android手机开发ubuntu系统中常用的搜索命令
  5. AndroidStudio在Ubuntu13.10的64位系统报错问题
  6. Android(安卓)5.0系统 style 默认窗口控件颜色值设置
  7. framework中自定义系统级权限
  8. Android(安卓)preview YUV转换 RenderScript 优化
  9. 获取设备上所有系统app信息

随机推荐

  1. Android学习-HelloWorldAndroid
  2. Android 系统设置 之 保持手机屏幕常亮的
  3. Android(安卓)首页轮播图实现
  4. Android 获取系统时间的三种方式
  5. Android 自定义View清除画布Canvas
  6. Android 判断屏幕滑动
  7. Android拖动控件
  8. Android之dialog实现底部出现对话框
  9. Android传感器学习总结
  10. android之线程访问网络并解析数据