文件管理器交接文档
2018-09-06 本文已影响0人
jinjindanding
文件管理器交接文档
文件管理器基本原理:
通过两种方式读取文件信息:
- 通过
MediaStore
读取文件,此数据库是安卓内部的数据库,分为- MediaStore.Files 此数据库保存所有文件信息;
- MediaStore.Audio.Media 保存音频文件信息
- MediaStore.Video.Media 保存视频文件信息
- MediaStore.Images.Media 保存图片文件信息
各文件分类选项即是通过此方式读取文件信息;
通过getContentResolver().qury 的方式即可读取此ContentProvider中的数据;
- 通过File.listFile来读取文件,此方式可以读取所有文件,包括OTG状态下,以及能够查看某些不被安卓媒体库
MediaStore
收录的文件,全部文件分类即是通过此方式。
基本的文件属性:
MediaStore
数据库中的行列是根据文件信息生产的,关键的几个Columns:
-
MediaStore.Files.FileColumns._ID
:即 "_id" 此项是数据库的id.属性唯一; -
MediaStore.Files.FileColumns.DATA
:即"_data" 即文件的完整地址,可以根据此地址生成File,属性唯一; -
MediaStore.Files.FileColumns.DATE_MODIFIED
:最后修改时间 -
MediaStore.Files.FileColumns.SIZE
:文件大小
以下是某些库才存在的且有用的Columns: -
MediaStore.Video.Media.BUCKET_ID
媒体文件所在文件夹的id;
更多存在的Columns可以在data/目录中拉出此数据库或查看源码了解:
通过File
方式读取的文件,通过文件方法来获取相关信息:
即File.getName(),length(),lastModified()
等方法来获取文件信息,
可以通过阅读File
类了解方法,此处不再赘述;
GreeFileExplorer文件管理及基本构成:
活动 | 简述 | 功能 |
---|---|---|
BaseActivity | 基类 | 实现各界面基础功能,导航栏颜色,OTG监听,权限获取,打开关闭输入法等 |
MainActivity | 主界面 | 文件夹主界面,各分类入口界面 |
RemoteActivity | 远程连接 | 实现Ftp远程连接功能,一些界面设置 |
RemoteSeniorActivity | 远程设置 | Ftp功能设置界面 |
MemoryActivity | 容量显示 | 通过不断读取数据库并分析类型实现动画来显示手机文件类型 |
StoragePathChooseActivity | 区域选择 | 当OTG连接时,进入全部文件时的二级目录 |
FileActivity | 文件界面 | 虚拟类,实现了文件显示,功能设定,方法回调等方法,所有有关于文件的界面都是继承此类的子类,只需要实现不同的文件加载方式。 |
文件类型子类 | 简述 | 功能 |
---|---|---|
LatelyFileExplorerActivity | 最近文件 | 通过判断时间从mediaStore中读取文件显示,重写了更多对话框 |
PictureVideoActivity | 视频和图片 | 视频和图片的二级目录,主要是通过BUCKET_ID实现分类 |
FileCategoryActivity | 全部文件 | 依靠读取SD卡获取文件,和其余方式实现不同。可以得到所有文件 |
FavoriteExplorerActivity | 收藏文件 | 通过读取sp中的收藏夹来得到文件,加载方式类似全部文件 |
FileGatherActivity | 收藏和音频 | 收藏和音频的二级目录,用于集合同种类型文件 |
FileExplorerActivity | 基本文件 | 各种子类等分类下的显示,主要通过meidastore数据库读取,然后根据路径或类型来初始化qury条件获取对应的文件 |
SearchActivity | 搜索类 | 实现了搜索方法,从所有文件中根据名称来得到文件,重写了一些对话框的跳转 |
接口 | 简述 | 功能 |
---|---|---|
OnOtgStatusChange | OTG | 判断OTG是否连接的借口,实现在UsbBroadCastReceiver中 |
FileOperationHelper.FileOperationProgress | 回调 | 文件操作进度的回调,包括onStart,OnProgress,onFinish,onError |
IFileOperation | 实现 | 对文件的操作,包括open,move,copy,rename,favorite,share等等,具体实现在 FileOperationHelper中 |
IMemoryView | 回调 | 环状图界面的回调,各种类型的size大小 |
适配器 | 简述 | 功能 |
---|---|---|
FileBaseAdapter | 基类 | 基类,实现一些公用方法以及向上转型,包括IFileAdapter,与BaeItem配合 |
MyFileCategoryAdapter | 文件Item | 主文件类型的适配器,显示文件的基本信息,与FileInfo配合 |
GridViewAdapter | 图片集 | 视频和图片的二级目录适配器与ImageFolder配合 |
ImageShowAdapter | 图片 | 图片及视频的适配器,利用Glide加载图片 |
FileGatherAdapter | 文件集 | 收藏和音频的二级目录适配器 |
工具类 | 简述 | 功能 |
---|---|---|
SPInfo | SharedPreferences | 保存一些基本的状态信息 |
FTPServerService | FTP | 实现Ftp功能的服务 |
UsbBroadCastReceiver | OTG | OTG状态的监听广播,负责通各个界面Otg连接状态 |
FileIconLoader | 加载器 | 负责异步加载图片的复杂信息,如图片,视频,音频,文件数量等 |
ApkPathParseName | 文件名转换 | 根据文件路径来判断常用应用,数据库在raw中,拉取自小米 |
FileUtils | 文件工具 | 处理文件大小,文件夹大小,文件隐藏等相关操作 |
MediaScannerHelper | 媒体扫描 | 媒体扫描类,因为每次文件扫描得手动更新数据库 |
MimeUtils | MIME类型 | 判断文件的MIME类型,当打开或分享文件的时候提供 |
Common | 基础信息 | 此类中根据文件的后缀名来判断文件的基本类型,用于显示对应图标 |
Utils | 工具集合 | 此类中包含大量工具,难以细分,但使用很多很重要 |
FileActivity加载流程图:
FileActivity.png
一些使用到的第三方库介绍及其链接:
小米文件管理器:MIUI文件管理器社区开源版(Community edition of MIUI File Explorer),主要参考对象;
Glide:An image loading and caching library for Android focused on smooth scrolling https://bumptech.github.io/glide/
XDeCompressor:一个通用的解压缩程序,目前支持12种压缩格式的解压;
pinyin4j:A copy of http://sourceforge.net/projects/pinyin4j, then deploy it to maven central repository.
leakcanary:A memory leak detection library for Android and Java.
swiftp:FTP server for your android device. http://ppareit.github.com/swiftp/
GreeGui:格力公共控件包