DocumentFile - 直接访问底层文件
DocumentFile - direct access to underlying file
是否可以通过某种方式从 DocumentFile
中获取 File
对象?通过一些小技巧,我可以获得文件的真实路径,但是 File
class 不允许 read/write 那里...
我需要从 USB OTG 或辅助存储访问媒体文件,我需要以下功能:
- 从图像中获取 exif 数据 => 我真的需要它
- 获取图像的位置
- 获取图像的真实创建日期
- 实际上,为了显示目的,我需要所有 exif 数据
- 能够旋转图像(这可以通过创建临时图像、删除旧图像并重命名临时图像来实现)
知道如何实现吗?
Is it somehow possible to get a File object from an DocumentFile?
没有
With some small trick I can get the real path of the file
不可靠。毕竟,存储访问框架不需要有一个实际的文件。各种 DocumentProvider
实现基于云服务,数据在需要时才存储在本地设备上。除此之外,您使用的任何方法都取决于可能因设备而异的内部实现,更不用说 Android OS 版本了。而且,最重要的是,即使您派生了路径,您仍然不一定能访问数据,因为您可能无法访问该位置的文件系统(例如,DocumentProvider
保存在内部存储中的文件)。
get exif data from images
使用流,以及可以处理流的 EXIF 代码,例如 this one or this one,通过在互联网上搜索 android exif stream
.
找到
ability to rotate images (this would be possible by creating a temp image, delete the old one and rename the temp image)
您无法选择创建本地副本、旋转图像,然后使用 OutputStream
将图像写回原始 DocumentFile
。 "local copy" 是仅在 RAM 中,还是需要成为磁盘上的实际文件,这在一定程度上取决于您计划如何旋转它。
是否可以通过某种方式从 DocumentFile
中获取 File
对象?通过一些小技巧,我可以获得文件的真实路径,但是 File
class 不允许 read/write 那里...
我需要从 USB OTG 或辅助存储访问媒体文件,我需要以下功能:
- 从图像中获取 exif 数据 => 我真的需要它
- 获取图像的位置
- 获取图像的真实创建日期
- 实际上,为了显示目的,我需要所有 exif 数据
- 能够旋转图像(这可以通过创建临时图像、删除旧图像并重命名临时图像来实现)
知道如何实现吗?
Is it somehow possible to get a File object from an DocumentFile?
没有
With some small trick I can get the real path of the file
不可靠。毕竟,存储访问框架不需要有一个实际的文件。各种 DocumentProvider
实现基于云服务,数据在需要时才存储在本地设备上。除此之外,您使用的任何方法都取决于可能因设备而异的内部实现,更不用说 Android OS 版本了。而且,最重要的是,即使您派生了路径,您仍然不一定能访问数据,因为您可能无法访问该位置的文件系统(例如,DocumentProvider
保存在内部存储中的文件)。
get exif data from images
使用流,以及可以处理流的 EXIF 代码,例如 this one or this one,通过在互联网上搜索 android exif stream
.
ability to rotate images (this would be possible by creating a temp image, delete the old one and rename the temp image)
您无法选择创建本地副本、旋转图像,然后使用 OutputStream
将图像写回原始 DocumentFile
。 "local copy" 是仅在 RAM 中,还是需要成为磁盘上的实际文件,这在一定程度上取决于您计划如何旋转它。