首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Android上的MediaStore将数据从Camera保存到磁盘?

要在Android上使用MediaStore将数据从Camera保存到磁盘,您需要遵循以下步骤:

  1. 首先,在AndroidManifest.xml文件中添加必要的权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" />
  2. 在您的Activity或Fragment中,检查并请求必要的权限:private static final int REQUEST_IMAGE_CAPTURE = 1; private static final int REQUEST_STORAGE_PERMISSION = 2; private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == REQUEST_STORAGE_PERMISSION) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { dispatchTakePictureIntent(); } } } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); // 使用imageBitmap进行后续操作 } }
  3. 在onActivityResult方法中,您可以获取到拍摄的照片的Bitmap。您可以使用这个Bitmap进行后续操作,例如保存到磁盘或显示在ImageView中。
  4. 如果您想将照片保存到磁盘,您可以使用以下代码:private void saveImageToDisk(Bitmap imageBitmap) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator + "MyApp"; File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } String fileName = "IMG_" + System.currentTimeMillis() + ".jpg"; File file = new File(dir, fileName); try { FileOutputStream fo = new FileOutputStream(file); fo.write(bytes.toByteArray()); fo.close(); } catch (IOException e) { e.printStackTrace(); } }

这样,您就可以使用MediaStore将数据从Camera保存到磁盘了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从相机or相册获取图片并显示

这个技术应该算是十分稀松平常了,但是对于小白来说,还是要费一番功夫的。因此在这里贴上我的代码,也是为了以后用到的时候方便找。。。...; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore...data的原因是,这里返回的data是一个缩略图,十分不清晰 if (requestCode == CAMERA_REQUEST_CODE) {// 将保存在本地的图片取出并缩小后显示在界面上...bitmap.getHeight() / SCALE); // 由于Bitmap内存占用较大,这里需要回收内存,否则会报out of memory异常 bitmap.recycle(); // 将处理过的图片显示在界面上...,并保存到本地 ImageView imageView = (ImageView) findViewById(R.id.photo); imageView.setImageBitmap(newBitmap

1.8K70

android之实现打开相册、拍照录像、播放视频、保存图片到系统相册指定位置、图片压缩

自Android 7.0后系统禁止应用向外部公开file://URI , * 因此需要FileProvider来向外界传递URI,传递的形式是content : //Uri,使用时需要在清单文件中注册。...intent的extra部分包含一个编码过的Bitmap, // 拍完的图片是不会保存到本地的, 我们可以自己写代码把图片保存到我们的SD卡里,然后再显示,这样的图片会清晰很多....bitmap对象保存到系统图库中, 但是这种方法无法指定保存的路径和名称, 上述方法的title、description参数只是插入数据库中的字段, 真实的图片名称系统会自动分配。...video /** * 从相册中选择视频 */ private void choiceVideo() { Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

5.5K20
  • targetSdk27 FileProvider 摄像和照相

    = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); // MediaStore.EXTRA_VIDEO_QUALITY 表示录制视频的质量,从...而从 Android N 开始,将不允许在 App 间,使用 file:// 的方式,传递一个 File ,否者会抛出 FileUriExposedException的错误,会直接引发 Crash。...当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。...在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。...MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。

    95110

    Android7.0适配心得

    应对策略:这项权限的变更将意味着你无法通过File API访问手机存储上的数据了,基于File API的一些文件浏览器等也将受到很大的影响,看到这大家是不是惊呆了呢,不过迄今为止,这种限制尚不能完全执行...);//设置Action为拍照 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//将拍取的照片保存到指定URI startActivityForResult..., imageUri);//将拍取的照片保存到指定URI startActivityForResult(intent,1006); 上述代码中主要有两处改变: 将之前Uri的scheme类型为file的...另外,推荐大家使用开源工具库TakePhoto, TakePhoto是一款在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库。...TakePhoto, TakePhoto是一款在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库。

    1.4K50

    如何在Ubuntu 14.04上使用Transporter将转换后的数据从MongoDB同步到Elasticsearch

    介绍 Elasticsearch有助于对数据进行全文搜索,而MongoDB则擅长存储数据。使用MongoDB存储数据和使用Elasticsearch进行搜索是一种常见的体系结构。...本教程将向您展示如何使用开源实用程序Transporter通过自定义转换将数据从MongoDB快速复制到Elasticsearch。...目标 在本文中,我们将介绍如何使用Transporter实用程序将数据从MongoDB复制到Ubuntu 14.04上的Elasticsearch 。...如果你还记得,我们用firstName和lastName存储了MongoDB中的两条记录。在将数据从MongoDB同步到Elasticsearch时,您可以在这里看到转换数据的真正力量。...结论 现在我们知道如何使用Transporter将数据从MongoDB复制到Elasticsearch,以及如何在同步时将转换应用于我们的数据。您可以以相同的方式应用更复杂的转换。

    5.4K01

    Android平台相机接口的应用

    第一部分、前述: Android作为Google移动互联网战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。Google的目标是让移动通信不依赖于设备,甚至是平台。...出于这个目的,Android将完善而不是替代Google长期以来推行的移动发展战略:通过与全球各地的手机制造商和移动运营商成为合作伙伴,开发既实用又有吸引力的移动服务,并推广这些产品。...“开放手机联盟”表示,Android平台可以促使移动设备的创新,让用户体验到最优质的移动服务 第二部分、体系结构: 1、Android camera架构 Android Camera框架从整体上看一个cl...Camera做个简单的使用小结。...(intent); 备注:上面设置MediaStore.EXTRA_OUTPUT的方法,经过手机实测除了我们设定的路径下有照片外,在手机存储卡上也会保存一份照片,默认目录为sdcard/dcim/camera

    1.6K50

    一篇文章带你了解Google CameraX

    第二:使用Jetpack,方便我们在不同的android设备和不同的android版本上的适配,简单说,就是适配性强。...三、 CameraX基本框架介绍 从下图我们可以看到,CameraX是基于Camera2的API进行的封装。 Camera API1,Google已经声明在Android5.0之后的设备上废弃了。...它用于执行用户提供的 OnImageCapturedCallback()。 如果调用方选择将图片保存到文件位置,您可以指定执行程序以执行 IO。...如需查看有关如何将 Media.Image 对象从 YUV_420_888 格式转换为 RGB Bitmap对象的示例代码,请参阅 YuvToRgbConverter.kt。...4)CameraX 视频捕获架构 捕获系统通常会录制视频流和音频流,对其进行压缩,对这两个流进行多路复用,然后将生成的流写入磁盘。 图 1. 视频和音频捕获系统概念图。

    3.9K31

    009android初级篇之APP中使用系统相机相册等集成应用

    009android初级篇之APP中使用系统相机相册等集成应用 android应用中使用相机功能,大致有两种方式实现: 直接调用系统内部的相机程序,显示的也是系统预设的界面(简单,只有简单的拍照功能);...} } } 第二种方式:自定制camera 参考链接, 该功能我未实现 Android 自定义camera 同样的方法可以调用系统相册 private static final...Intent.ACTION_GET_CONTENT String: android.intent.action.GET_CONTENT 允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音...,eclipse运行是将报错,桌面也不会有图标。...action的操作有很多,需要的话,继续百度。 参考链接 Android 如何从系统图库中选择图片

    66440

    Android Q 适配 之 存储新特性

    而作为开发者,我们更关心的是如何解决在我们现有的 App 上,保证 Android Q 的兼容性问题。...问题分析:在 Android Q 上,卸载 APP 默认删除 App-specific 目录下的数据。 解决方案:APP 应该将想要保留的文件通过 MediaStore 接口保存到公共目录下。...2.2.6 无法访问图片文件中的地理位置数据 问题原因:直接从图片文件输入流中解析地理位置数据。 问题分析:由于图片的地理位置信息涉及用户隐私,Android Q 上默认不向 APP 提供该数据。...这些 APP 如果直接通过路径的方式将文件保存到了外部存储上,例如外部存储的根目录,那么 APP 被卸载后重新安装,新的 APP 获得 Filtered View 视图,无法直接通过路径访问到旧数据,导致数据丢失...解决方案:APP 应该修改保存文件的方式,不再使用路径的方式直接保存,而是采用 MediaStore 接口将文件保存到对应的公共目录下。

    1K30

    Android打开系统拍照&相册获取头像

    Android打开系统拍照&相册获取头像 现在许多应用都有上传头像的功能,再次奉上代开系统相册或打开系统相机拍照的实现,有的同学在测试小米手机上打开选择相册有奔溃,此代码已完美解决此问题… 楼主,做的头像需要经过裁剪之后和圆形处理...= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, CAMERA...= null) { // 拍照 Bundle bundle = data.getExtras(); // 获取相机返回的数据,并转换为图片格式...返回的是content://com.android.providers.media.documents/document/image:3951或者 //总结:uri的组成,eg:...各个不同的系统版本,对于获取外部存储上的资源,返回的Uri对象都可能各不一样,所以要保证无论是哪个系统版本都能正确获取到图片资源的话 //就需要针对各种情况进行一个处理了

    2.7K20

    Android11 (API30)适配

    背景 Android 11 进一步增强了平台功能,为外部存储设备上的应用和用户数据提供了更好的保护。作为这项工作的一部分,平台引入了进一步的改进,以简化向分区存储的转换。...私有目录,以更好地保护外部存储上的应用和用户数据。...2兼容性影响 1 targetSdkVersion为Android 11的应用在前台服务中访问camera或microphone相关的数据,不指定相应的foregroundServiceType,将无法正常访问到相关数据...从Android 11开始,应用无障碍服务在运行时不能申明与系统的无障碍按钮的关联。...具体调整如下: 1 非 SDK 测试 API 现在受到限制 从 Android 11 开始,默认情况下,非 SDK 测试 API(即 AOSP 中使用 @TestApi 注释的 API)现在受到限制。

    8K11

    Android从屏幕底部弹出popupWindow

    Android从屏幕底部弹出popupWindow 先看一下效果,看看是不是你想要的效果,免得浪费大家的时间,有一点说明,由于我录制的 gif 是用的模拟器,所以没有屏幕变暗的效果和加速的弹起的效果,实际效果以真机测试为准...> 2.代码部分 我此处用的是一个加速的平移动画,从屏幕底部弹出,然后将屏幕的亮度变暗,让popupwindow获取焦点,就可以实现了popupwindow从手机屏幕底部弹出的效果...= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, CAMERA...= null) { // 拍照 Bundle bundle = data.getExtras(); // 获取相机返回的数据,并转换为图片格式...各个不同的系统版本,对于获取外部存储上的资源,返回的Uri对象都可能各不一样,所以要保证无论是哪个系统版本都能正确获取到图片资源的话 //就需要针对各种情况进行一个处理了

    3.5K30

    让 Android 的 WebView 支持 type 为 file 的 input,同时支持拍照

    Android 的 WebView 组件默认是不启用 type 为 file 的 input 的,需要在代码中做一些类似 hack 的编码(因为解决问题的目标对象的方法都是加了@hide注解的)才能召唤神龙...目标对象:WebChromeClient 实例化一个目标对象,并重写它的几个隐藏方法(针对不同的Android系统版本,方法名和入参都不一样,所以方法有多个),然后将目标对象作为参数传递给 WebView... selPic 方法,这个方法会显示一个对话框,让用户选择是拍照选取照片还是直接从已保存的文件中选取图片。    ...Lollipop版本为届,低于该版本的系统与等于或高于该版本的系统处理方式不一样,表面上看主要是使用API获取uri数据的方法不同;     2、无论取没取到 uri 数据,只要 vCbFileChooser...3、addImageGallery 方法的作用是将拍照生成的图片(不是缩略图)添加到相册,保证后续还能从系统中索取到。

    1.6K20

    CameraX 1.1 有哪些新的特性发布?

    我们一直在探索并修复其背后复杂的兼容性问题,让每个新版本都得以在更多的设备上稳定运行。 何时使用 CameraX 或 Camera2,这取决于您期望更快的开发速度或是想要更高的自定义程度。...CameraX 发布新版本频繁,而 Camera2 则随着 Android 的版本而更新; CameraX 可以在您不熟悉相机的情况下也能够进行开发,而 Camera2 则需要您对相机的专业知识有更深层次的了解...修复单像素漂移 YUV 转换还修复了部分设备上存在的单像素漂移问题。在这些设备上,YUV 输出经过桶形移位一个像素,导致最右边的一列数据出现在图像的左边缘。...我们来看看如何使用 CameraX Extensions API: // 获取后置相机列表 val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA...如需详细了解,请参阅我们之前的推文《使用 CameraX Extensions API 将特效应用到照片上》。

    1.7K20
    领券