文件管理器交接文档

文件管理器交接文档


文件管理器基本原理:

通过两种方式读取文件信息:
  1. 通过MediaStore读取文件,此数据库是安卓内部的数据库,分为
    • MediaStore.Files 此数据库保存所有文件信息;
    • MediaStore.Audio.Media 保存音频文件信息
    • MediaStore.Video.Media 保存视频文件信息
    • MediaStore.Images.Media 保存图片文件信息
      各文件分类选项即是通过此方式读取文件信息;

通过getContentResolver().qury 的方式即可读取此ContentProvider中的数据;

  1. 通过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:格力公共控件包

你可能感兴趣的:(文件管理器交接文档)