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

Android 10适配要点,作用域存储

这个功能使用得极其广泛,几乎所有的App都喜欢在SD卡的根目录下建立一个自己专属的目录,用来存放各类文件和数据。 那么这么做有什么好处吗?我想了一下,大概有两点吧。...因为这会将用户的SD卡空间搞得乱糟糟的,而且即使我卸载了一个完全不再使用的程序,它所产生的垃圾文件却可能会一直保留在我的手机上。...Glide或其他图片加载框架,想在不借助第三方库的情况下直接将一个Uri对象解析成图片,可以使用如下代码: val fd = contentResolver.openFileDescriptor(uri...使用文件选择器 如果我们要读取SD卡上非图片、音频、视频类的文件,比如说打开一个PDF文件,这个时候就不能再使用MediaStore API了,而是要使用文件选择器。...这个情况确实是存在的,比如我之前使用的七牛云SDK,它的文件上传功能要求你传入的就是一个文件的绝对路径,而不支持传入Uri对象,大家应该也会碰到类似的问题。

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    调用系统相机拍照,并且保存到系统相册的一般套路

    最近遇到也一个需求:调用系统相机拍照,并且照片可以在系统相册显示。...关于照片显示在系统相册这个问题,因为安卓机型太多了,各大厂商都对原生系统进行了不同程度的定制,所以在一般情况下,有的手机会把图片直接显示在相册最前方,但是有的手机却只能在二级文件夹内找到我们拍的照片,两张情况如下图所示...这个问题我和朋友们讨论之后觉得最有可能的原因就是手机系统对这些App进行了特殊处理,为了验证这个想法,我做了一个实验。...为了验证微信的图片路径是否被“特殊处理”了做的实验: 首先找到微信图片在本机的存储路径,我的手机是小米5,所以它的路径是:sd卡根目录+/Tencent/MicroMsg/WeiXin/; 在自己的...拍照成功后在onActivityResult通知图库刷新 try { MediaStore.Images.Media.insertImage(getContentResolver(), imagePath.getAbsolutePath

    1.2K50

    相册适配 Android 11 绕的那些弯路

    为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被授予了对外部存储空间的分区访问权限(即分区存储)。...的库时,无法使用 File Api,造成了很多困难。...,确实找到了一小段不起眼的文字 使用直接文件路径和原生库访问文件 为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 通过直接文件路径访问共享存储空间中的媒体文件...(枉我开始我还鄙视它 2、Android 11 的时候也不需要适配啥了,虽然 requestLegacyExternalStorage 属性失效,但相册里通过 File Api 访问的只是媒体库文件,不会有任何问题...欢迎关注我,分享Android干货,交流Android技术。 对文章有何见解,或者有何技术问题,欢迎在评论区一起留言讨论! image.png

    1.7K30

    常用控件之ImageView的使用(一)

    ZoomButton ImageView(图像视图),直接继承自View类,它的主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用 ImageView来显示。...简单使用 下面我们简单的介绍 ImageView的使用(再此示例中,需要使用到一个ic_luffy.png的图片,需要放到res文件夹下drawable文件夹中): ?...这就不得不要说一下 android:src属性和 android:background的区别了: 在API文档中我们发现 ImageView有两个可以设置图片的属性(任意继承自 View的控件都包含 background...打开相册加载图片 看了上述的一个demo展示,可能有的小伙伴表示太麻烦了,难道我得找到每张图片的路径才可以去加载图片嘛?...):使用 Bitmap 位图设置该 ImageView 显示的图片。

    1.7K20

    Android平台相机接口的应用

    ient/service的架构,有两个进程:一个是client进程,可以看成是AP端,主要包括java代码与一些native c/c++代码;另一个是Service进程,属于服务端,是native c...File(imgPath)));} 假设不传参数MediaStore.EXTRA_OUTPUT的情况下,onActivityResult函数在resultCode为RESULT_OK的情况下,data...的方法,经过手机实测除了我们设定的路径下有照片外,在手机存储卡上也会保存一份照片,默认目录为sdcard/dcim/camera下面,我曾经尝试着想如果每次返回可以取得sdcard/dcim/camera...下面的路径就好了,但是目前看来没办法直接获得,可以借助MediaStroe每次去查询最后一条照片记录,应该也是可行的。...例2、 实现摄像 在摄像功能时,尝试着设置MediaStore.EXTRA_OUTPUT以传入类似拍照时的文件路径,结果在我的测试真机上,那个视频文件居然是一个0k的空文件,最后通过类似如下代码实现 Intent

    1.6K50

    Android开发中,怎样调用摄像机拍照以及怎样从本地图库中选取照片

    大家好,又见面了,我是你们的朋友全栈君。 这是属于我的第一篇博文,首先说明一下,文章属性为原创,其实不能说是原创,我是在学习的过程中根据自己的理解整理的。...现在,我就根据自己学习的过程,将这部分只是进行整理,如下: public class MainActivity extends AppCompatActivity { private Button..., //比较好的做法是声明一个全局常量比较好,我在这里没有这么做。...,就是要获取图片的真实路径imagepath,然后我们会再提供一个方法将imagepath作为参数来显示图片 String imagepath = null; //android4.4...,则使用普通方法处理 imagepath = getImagepath(uri, null); } displayImage

    69130

    Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

    我对Glide 4进行了一个大概的研究之后,发现Glide 4并不能算是有什么突破性的升级,而更多是一些API工整方面的优化。...下面我们就来学习一下Glide占位图功能的使用方法,首先我事先准备好了一张loading.jpg图片,用来作为占位图显示。...而DiskCacheStrategy.AUTOMATIC是Glide 4中新增的一种缓存策略,并且在不指定diskCacheStrategy的情况下默认使用就是的这种缓存策略。...有了这个对象之后你可以使用它进行任意的逻辑操作,这里我只是简单地把它显示到了ImageView上。...使用Generated API Generated API是Glide 4中全新引入的一个功能,它的工作原理是使用注解处理器 (Annotation Processor) 来生成出一个API,在Application

    2.7K70

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

    大家好,又见面了,我是你们的朋友全栈君。...//定义一个保存图片的File变量 private File currentImageFile = null; private Uri currentImageUri=null; /** * * 自己定义一个保存路径...img_show.setImageURI(currentImageUri); 方式二:直接使用图片,不存储,img_show是Imageview Bundle bundle = data.getExtras...MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bitmap, “title”, “description...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    5.5K20

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

    这个技术应该算是十分稀松平常了,但是对于小白来说,还是要费一番功夫的。因此在这里贴上我的代码,也是为了以后用到的时候方便找。。。...(SD卡),test.png为一个临时文件,每次拍照后这个图片都会被替换 openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)...(SD卡),test.png为一个临时文件,每次拍照后这个图片都会被替换 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult...@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //另外,使用保存文件之后再读取而不是直接用...data的原因是,这里返回的data是一个缩略图,十分不清晰 if (requestCode == CAMERA_REQUEST_CODE) {// 将保存在本地的图片取出并缩小后显示在界面上

    1.8K70

    Android 天气APP(二十九)壁纸设置、图片查看、图片保存

    之前我是奔着功能实现去做的,所以很多的细节并没有想的太多,思虑再三之后打算重新做一个更换背景的功能。...中的dependencies闭包下新增一个依赖库 api 'com.google.android.material:material:1.2.0'//更强 我之前的是1.1.0,那么你可以改成1.2.0...因为普通的ImageView没有圆角啊,说道圆角图片我相信你不会陌生,你可能想到自定义ImageView来实现、或者使用第三方库来实现,但是ShapeableImageView里面就自带了圆角的样式给你...因为我要使用瀑布流,哪种错落感,会给用户不一样的体验,因为不设置高度,是因为需要动态设置ImageView的高度,来实现这个错落感。OK,下面该写这个Adapter了。...其他优化 我记得我之前说过有空就要优化那个搜索城市页面的弹窗,之前用的原生的比较的丑。所以现在自己创建了一个布局,在app中的layout下创建一个dialog_tip.xml <?

    1.5K50

    10.多媒体

    ,可以使用它的有参构造函数来进行创建。...= 图片的总像素 * 每个像素占用的大小 单色位图:只能表示2种颜色 使用两个数字:0和1 使用一个长度为1的二进制数字就可以表示了 每个像素占用1/8个字节 16色位图:能表示16...0000 - 1111 1111 使用一个长度为8的二进制数字 每个像素占用1个字节 24位位图: 每个像素占用24位,也就是3个字节,所在叫24位位图 R:0-255,需要一个长度为8的二进制数字...保存图片 SD每次准备的时候,系统其实是遍历sd卡所有文件,系统会把所有的多媒体文件,都在MediaStore数据库中生成一个索引,数据库中保存了文件的文件名、路径、大小、长度和艺术家 图库、音乐、视频程序每次启动时...,把遍历到的所有多媒体文件都在MediaStore数据库保存一个索引,这个索引包含多媒体文件的文件名、路径、大小 图库每次打开时,并不会去遍历sd卡获取图片,而是通过内容提供者从MediaStore数据库中获取图片的信息

    1.3K80

    Android训练课程(Android Training) - 高效的显示图片

    高效的加载大尺寸位图 图片有各种形状和大小. 在很多情况下,它们有更大的需要超过一个典型的应用程序的界面。...既然你正在使用有限的内存,理想情况下,你只应该在内存中加载一个低分辨率的版本的图片。低分辨率版本的图片应该匹配你要显示的UI组件的尺寸。...这个技术允许你读取位图数据的尺寸和类型而不构造位图对象(分配内存)。...另外 在 Android 3.0 (API 级别 11)之前,一个位图的后台数据被存放在原始内存中,它不能以可预见的方式被释放,它潜在性的导致一个应用临时的超出它的内存限制而崩溃。...在activity被重新创建后,这个重新创建的(保留的)的 Fragment 被重新附加,这样你重新通过它获得到缓存对象,允许图像被快速提取和重新填充到 ImageView 对象。

    2.9K00
    领券