一种扩展手机存储的方法及终端与流程

文档序号:12177049阅读:194来源:国知局
一种扩展手机存储的方法及终端与流程

本发明涉及终端技术领域,特别涉及一种扩展手机存储的方法及终端。



背景技术:

Android是一种基于Linux的自由及开放源代码的操作系统,由Google公司和开放手机联盟领导及开发,主要使用于移动设备,如智能手机和平板电脑。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android已经是全球市场份额最大的智能手机操作系统。

数据对于用户来讲,对应的就是不同的图片,视频,应用程序等等;但对于计算机来说,这些都是0和1的序列,这些序列根据其代表的内容,在其存储的介质上被划分成了不同的组,这样的一组数据,就是计算机的一个文件。如果数据只能组织为文件,而不能分类的话,文件会杂乱无章。每次我们搜索某一个文件,就要一个文件又一个文件地检查,太过麻烦。文件系统是文件在逻辑上的组织形式,它以一种更加清晰的方式来存放各个文件。

Linux的文件系统通过类似“/mnt/sdcard/userfile”这样的路径名来定位文件在文件系统中的位置。Linux的文件系统是一个树状(tree)结构。Linux的根目录就是“/”,也就是树状结构的最顶端,而这个树的分叉以“/”来表示,不同的分叉以目录(directory,相当于我们在windows界面中看到的文件夹)来划分。这个树的分叉的最末端就代表的是一个文件。Linux将系统中的一切都作为文件来管理。在Windows中我们常见的硬件设备、磁盘分区等,在Linux中都被视作文件,对设备、分区的访问就是读写对应的文件。

挂载点实际上就是Linux中的磁盘文件系统的入口目录,类似于Windows中的用来访问不同分区的C:、D:、E:等盘符;选择挂载点是手机应用程序安装必不可少的步骤。为了满足系统必须的数据存储,Android设备都拥有一个内置存储卡,该内置存储卡的默认挂载点为/mnt/sdcard。出于差异化竞争以及成本的 考虑,内置存储卡的存储空间有大有小。当内置存储空间较小时,为了满足用户的大文件存储的需求,有的Android设备还提供了扩展存储卡插槽。插到扩展存储卡插槽的外置存储卡一般需要用户额外购买,其存储空间通常较大。由于外置存储卡在Android系统会被识别为新增的独立存储设备,所以其挂载点与内置空间的默认挂载点是不同的,新增的挂载点一般是/mnt/extsdcard或者/mnt/extcard。

在Android系统中,只有安装在默认挂载点为/mnt/sdcard的存储卡上的应用程序才能正常运行,对于拥有外置存储卡的Android系统,通常只有安装在内置存储卡上的应用程序才能正常运行。而外置存储卡提供的空间通常只能用于存储一些较小的应用程序或文件,如视频和图片等。而外置一些较大的应用程序,如凯立德GPS导航程序,会因为数据量较大无法安装在空间较小的内置用户存储分区;且因为挂载点的原因,该应用程序又无法安装在外插的大容量扩展存储卡上,此种情况会导致手机无法满足用户的需求,造成用户体验效果不佳的问题。



技术实现要素:

本发明要解决的技术问题是提供一种扩展手机存储的方法及终端,用以解决现有的终端因外置存储卡的挂载路径与内置存储卡的挂载路径不同,在一些较大应用程序不能在内置存储卡运行时,而外置存储卡的挂载路径又不能满足该应用程序的运行条件,会导致该应用程序不能正常使用,影响用户使用体验效果的问题。

为了解决上述技术问题,本发明实施例提供一种扩展手机存储的方法,应用于一具有外置存储卡识别设备的终端,且所述终端上设置有用于挂载所述终端的文件系统的可扩展块设备,所述文件系统挂载在所述可扩展块设备的挂载点上,其中,所述方法包括:

在外置存储卡插入,识别并注册完成后,判断所述外置存储卡是否为首次插入;

若所述外置存储卡为首次插入,则中止及卸载在可扩展块设备的挂载点上运行的文件系统;

将所述外置存储卡添加到可扩展块设备的记录表中;

重新挂载所述文件系统到可扩展块设备的挂载点。

进一步地,所述在外置存储卡插入,识别并注册完成后,判断所述外置存储卡是否为首次插入的步骤包括:

获取可扩展块设备的记录表,所述记录表中包含终端上的存储设备的标识信息;

在所述可扩展块设备的记录表中查找是否存在所述外置存储卡的标识信息;

若所述记录表中不存在所述外置存储卡的标识信息,则表明所述外置存储卡为首次插入;

若所述记录表中存在所述外置存储卡的标识信息,则表明所述外置存储卡不为首次插入。

进一步地,在所述外置存储卡不为首次插入时,所述方法还包括:

中止及卸载在可扩展块设备的挂载点上运行的文件系统;

重新在可扩展块设备的挂载点上运行所述文件系统。

进一步地,在所述将所述外置存储卡添加到可扩展块设备的记录表中的步骤之前,所述方法还包括:

格式化所述外置存储卡。

进一步地,所述将所述外置存储卡添加到可扩展块设备的记录表中的步骤具体为:

将所述外置存储卡的标识信息以及外置存储卡的扇区起始地址和大小存入所述可扩展块设备的记录表中。

进一步地,在所述中止及卸载在可扩展块设备的挂载点上运行的文件系统的步骤之前,所述方法还包括:

获取用户输入的是否进行存储空间扩展的选择指令;

若选择指令表明用户需要进行存储空间扩展,则进入所述中止及卸载在可扩展块设备的挂载点上运行的文件系统的步骤。

本发明实施例提供一种终端,包括外置存储卡识别设备和用于挂载所述终端的文件系统的可扩展块设备,所述文件系统挂载在所述可扩展块设备的挂载点上,其中,所述终端还包括:

判断模块,用于在外置存储卡插入,识别并注册完成后,判断所述外置存储卡是否为首次插入;

第一中止及卸载模块,用于若所述外置存储卡为首次插入,则中止及卸载在可扩展块设备的挂载点上运行的文件系统;

添加模块,用于将所述外置存储卡添加到可扩展块设备的记录表中;

挂载模块,用于重新挂载所述文件系统到可扩展块设备的挂载点。

进一步地,所述判断模块包括:

获取单元,用于获取可扩展块设备的记录表,所述记录表中包含终端上的存储设备的标识信息;

查找单元,用于在所述可扩展块设备的记录表中查找是否存在所述外置存储卡的标识信息;

判断单元,用于若所述记录表中不存在所述外置存储卡的标识信息,则表明所述外置存储卡为首次插入;

若所述记录表中存在所述外置存储卡的标识信息,则表明所述外置存储卡不为首次插入。

进一步地,所述终端还包括:

第二中止及卸载模块,用于在所述外置存储卡不为首次插入时,中止及卸载在可扩展块设备的挂载点上运行的文件系统;

运行模块,用于重新在可扩展块设备的挂载点上运行所述文件系统。

进一步地,所述终端还包括:

格式化模块,用于格式化所述外置存储卡。

进一步地,所述添加模块具体为:

将所述外置存储卡的标识信息以及外置存储卡的扇区起始地址和大小存入所述可扩展块设备的记录表中。

进一步地,所述终端还包括:

获取模块,用于在所述外置存储卡为首次插入时,获取用户输入的是否进行存储空间扩展的选择指令,并在所述选择指令表明用户需要进行存储空间扩展,触发所述第一中止及卸载模块。

本发明的有益效果是:

上述方案,通过将外置存储卡添加到文件系统运行所在的分区,不会在文件系统路径上新增挂载点,提高了系统的灵活性。

附图说明

图1表示本发明实施例一的所述方法的流程示意图;

图2表示本发明实施例二的所述方法的流程示意图;

图3表示本发明实施例三的所述终端的结构示意图;

图4表示本发明中内、外置存储设备与可扩展块设备的映射关系示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。

本发明针对现有的终端因外置存储卡的挂载路径与内置存储卡的挂载路径不同,在一些较大应用程序不能在内置存储卡运行时,而外置存储卡的挂载路径又不能满足该应用程序的运行条件,会导致该应用程序不能正常使用,影响用户使用体验效果的问题,提供一种扩展手机存储的方法及终端。

如图1所示,本发明实施例一的所述扩展手机存储的方法,应用于一具有外置存储卡识别设备的终端,且所述终端上设置有用于挂载所述终端的文件系统的可扩展块设备,所述文件系统挂载在所述可扩展块设备的挂载点上,其中,所述方法包括:

步骤100,在外置存储卡插入,识别并注册完成后,判断所述外置存储卡是否为首次插入;

应当说明的是,当终端在侦测到外置存储卡识别设备中有外置存储卡插入时,外置存储卡的驱动程序会进行外置存储卡的驱动与识别,进行外置存储卡的注册。

步骤200,若所述外置存储卡为首次插入,则中止及卸载在可扩展块设备的挂载点上运行的文件系统;

因可扩展块设备要进行的动态扩展操作会改变其属性,所以需要先卸载已经挂载到该可扩展块设备的挂载点上的文件系统。

应当说明的是,在中止及卸载文件系统时,为了保证数据的完整,通常先中止文件系统,然后再卸载挂载点上的文件系统。

步骤300,将所述外置存储卡添加到可扩展块设备的记录表中;

应当说明的是,所述可扩展块设备的记录表中存储了所有的块设备(本发明中将终端内置存储卡映射为内置存储块设备,将外置存储卡映射为外置存储块设备)的标识信息,以及该块设备的对应的扇区起始偏移和大小。当外部文件系统对该块设备发起读写操作时,它的驱动程序会查询表,从而取得读写实际操作真实块设备及在真实块设备上对应的偏移。

步骤400,重新挂载所述文件系统到可扩展块设备的挂载点。

上述方案,通过将首次插入的外置存储卡添加到可扩展块设备的记录表中,使得外置存储卡拥有与内置存储卡一样的挂载点,不再将其作为独立的存储设备进行挂载,而是将其添加到已有的可扩展块设备上,避免了在文件系统路径上再增加一个挂载点。这样一来,既扩展了存储空间,又使得用户在使用时,不再受到任何的限制,就像是在使用系统原有的内置存储空间一样;并且这种额外添加外置储存卡的方式也保证了,在扩展时并不影响已经存储到内置存储空间中的数据。

需要说明的是,可扩展块设备为Linux系统中增加一种专门的可动态扩展的特殊块设备。当只有内置存储卡时,该可扩展块设备只包含内置存储块设备,而文件系统的挂载点/mnt/sdcard被挂载到该可扩展块设备上。

应当说明的是,本发明实施例中,所述步骤100包括:

获取可扩展块设备的记录表,所述记录表中包含终端上的存储设备的标识信息;

在所述可扩展块设备的记录表中查找是否存在所述外置存储卡的标识信息;

若所述记录表中不存在所述外置存储卡的标识信息,则表明所述外置存储卡为首次插入;

若所述记录表中存在所述外置存储卡的标识信息,则表明所述外置存储卡不为首次插入。

当外置存储卡已经在可扩展块设备上进行扩展后,可扩展块设备的记录表中会存有该外置存储卡的记录,证明该外置存储卡已经进行过扩展,为了避免 重复操作,在外置存储卡识别注册完成后,需要先进行是否已进行过扩展的验证。且应当说明的是,本发明中只要外置存储卡未进行过扩展都被认定为是首次插入。

需要说明的是,当外置存储卡不为首次插入时,所述方法还包括:

中止及卸载在可扩展块设备的挂载点上运行的文件系统;

重新在可扩展块设备的挂载点上运行该文件系统。

当验证得到外置存储卡已经进行了扩展,此时不需要再重新进行扩展,只需直接运行文件系统即可(此过程可认为是终端的文件系统重新启动的过程)。

应当说明的是,本实施例中,为了保证外置存储卡进行扩展后可以正常使用,在所述步骤300之前,所述方法还包括:

格式化所述外置存储卡。

通过将外置存储卡按照内置存储卡已挂载的文件系统的格式进行格式化,保证了外置存储卡在进行扩展后,能适应文件系统的运行需求,避免出现运行出错的情况。

具体地,所述步骤300的具体实现方式为:

将所述外置存储卡的标识信息以及外置存储卡的扇区起始地址和大小存入所述可扩展块设备的记录表中。

上述实施例一,可以使得新增添的外置存储设备不再是以其它分区的方式挂载,而直接添加到当前内置存储设备所在的分区,从而克服了不同分区带来的使用局限性,提升了用户使用体验效果;相比配置大内置存储空间的终端而言,提高了系统的灵活性,降低了终端的生产成本。

为了保证当外置存储卡在插入后,避免误操作的情况,在进行格式化该外置存储卡以及中止及卸载文件系统时,需要进行用户的操作确认,因此,本发明实施例二中,继续如图1所示,所述扩展手机存储的方法,包括:

步骤100,在外置存储卡插入,识别并注册完成后,判断所述外置存储卡是否为首次插入;

步骤200,若所述外置存储卡为首次插入,则中止及卸载在可扩展块设备的挂载点上运行的文件系统;

步骤300,将所述外置存储卡添加到可扩展块设备的记录表中;

步骤400,重新挂载所述文件系统到可扩展块设备的挂载点。

应当说明的是,而当外置存储卡不为首次插入时,所述方法还包括:

中止及卸载在可扩展块设备的挂载点上运行的文件系统;

重新在可扩展块设备的挂载点上运行该文件系统。

具体地,在所述步骤300之前,所述方法还包括:

格式化所述外置存储卡。

在进行步骤200之前,所述方法还包括:

获取用户输入的是否进行存储空间扩展的选择指令;

若选择指令表明用户需要进行存储空间扩展,则进入步骤200进行中止及卸载在可扩展块设备的挂载点上运行的文件系统的步骤。

上述方案的具体实现过程为:在检测到外置存储卡未进行过存储空间扩展时,终端显示界面会显示一对话框,提示用户是否进行存储空间的扩展以及外置存储卡的格式化操作,然后根据用户输入的操作命令进行后续的操作。

应当说明的是,实施例二中,除加入获取用户选择指令外,其它的实现方式均与实施例一相同。

实施例二中,通过在进行扩展时进行用户确认,避免了用户在误插入外置存储卡时,错误的进行了外置存储卡的扩展,造成用户数据丢失的问题,实施例二保证了用户的操作安全。

如图2所示,针对于实施例二,所述方法的详细实现流程为:

步骤11,外置存储卡识别设备实时侦测扩展存储卡插槽中是否有外置存储卡插入;

步骤12,在侦测到有外置存储卡插入时,识别并注册外置存储卡;

步骤13,判断外置存储卡是否进行过存储空间扩展;如果进行过存储空间扩展则进行步骤14,否则进行步骤20;

步骤14,询问用户是否进行存储空间扩展;如果用户进行存储空间的扩展,则进行步骤15和步骤17;

步骤15,中止在/mnt/sdcard上正在运行的文件系统操作;

步骤16,卸载/mnt/sdcard挂载点上的文件系统;

步骤17,格式化外置存储卡,应当说明的是,因步骤17与步骤15和步骤 16为并列的过程,所以步骤17与步骤15和步骤16通常同时进行。

步骤18,添加外置存储卡到可扩展块设备的记录表中;

步骤19,用扩展方式重新挂载文件系统到可扩展块设备的挂载点/mnt/sdcard;

步骤20,中止在/mnt/sdcard上正在运行的文件系统操作;

步骤21,卸载mnt/sdcard挂载点上的文件系统;

步骤22,用扩展方式重新挂载文件系统到可扩展块设备的挂载点/mnt/sdcard。

应当说明的是,步骤20与步骤15、步骤21与步骤16以及步骤22与步骤19为相同的实现方式,在运行时,终端会根据执行条件执行某一分支的步骤。

上述实施例,通过以扩展的方式将外置存储卡与内置存储卡设置为相同的挂载点,进而实现了外置存储卡具有与内置存储卡相同的功能,终端在使用外置存储卡时可以看作是使用终端自身的存储卡,提高了终端系统的灵活性;同时,在外置存储卡已经进行了扩展后,无需在扩展,只需重新启动终端的文件系统即可;同时,在进行外置存储卡扩展前,进行是否扩展的用户确认,从而有效避免了用户的误操作。

如图3所示,本发明实施例三提供一种终端,包括外置存储卡识别设备和用于挂载所述终端的文件系统的可扩展块设备,所述文件系统挂载在所述可扩展块设备的挂载点上,其中,所述终端还包括:

判断模块31,用于在外置存储卡插入,识别并注册完成后,判断所述外置存储卡是否为首次插入;

第一中止及卸载模块32,用于若所述外置存储卡为首次插入,则中止及卸载在可扩展块设备的挂载点上运行的文件系统;

添加模块33,用于将所述外置存储卡添加到可扩展块设备的记录表中;

挂载模块34,用于重新挂载所述文件系统到可扩展块设备的挂载点。

进一步地,所述判断模块31包括:

获取单元,用于获取可扩展块设备的记录表,所述记录表中包含终端上的存储设备的标识信息;

查找单元,用于在所述可扩展块设备的记录表中查找是否存在所述外置存储卡的标识信息;

判断单元,用于若所述记录表中不存在所述外置存储卡的标识信息,则表 明所述外置存储卡为首次插入;

若所述记录表中存在所述外置存储卡的标识信息,则表明所述外置存储卡不为首次插入。

进一步地,所述终端还包括:

第二中止及卸载模块,用于在所述外置存储卡不为首次插入时,中止及卸载在可扩展块设备的挂载点上运行的文件系统;

运行模块,用于重新在可扩展块设备的挂载点上运行该文件系统。

进一步地,所述终端还包括:

格式化模块,用于格式化所述外置存储卡。

进一步地,所述添加模块33具体为:

将所述外置存储卡的标识信息以及外置存储卡的扇区起始地址和大小存入所述可扩展块设备的记录表中。

需要说明的是,该终端实施例是与实施例一中的方法相对应的终端,所述方法的所有实现方式均适用于该终端实施例中,也能达到与实施例一中的方法相同的技术效果。

继续如图3所示,本发明实施例四提供一种终端,包括外置存储卡识别设备和用于挂载所述终端的文件系统的可扩展块设备,所述文件系统挂载在所述可扩展块设备的挂载点上,其中,所述终端还包括:

判断模块31,用于在外置存储卡插入,识别并注册完成后,判断所述外置存储卡是否为首次插入;

第一中止及卸载模块32,用于若所述外置存储卡为首次插入,则中止及卸载在可扩展块设备的挂载点上运行的文件系统;

添加模块33,用于将所述外置存储卡添加到可扩展块设备的记录表中;

挂载模块34,用于重新挂载所述文件系统到可扩展块设备的挂载点。

进一步地,所述判断模块31包括:

获取单元,用于获取可扩展块设备的记录表,所述记录表中包含终端上的存储设备的标识信息;

查找单元,用于在所述可扩展块设备的记录表中查找是否存在所述外置存储卡的标识信息;

判断单元,用于若所述记录表中不存在所述外置存储卡的标识信息,则表明所述外置存储卡为首次插入;

若所述记录表中存在所述外置存储卡的标识信息,则表明所述外置存储卡不为首次插入。

进一步地,所述终端还包括:

第二中止及卸载模块,用于在所述外置存储卡不为首次插入时,中止及卸载在可扩展块设备的挂载点上运行的文件系统;

运行模块,用于重新在可扩展块设备的挂载点上运行该文件系统。

进一步地,所述终端还包括:

格式化模块,用于格式化所述外置存储卡。

进一步地,所述添加模块33具体为:

将所述外置存储卡的标识信息以及外置存储卡的扇区起始地址和大小存入所述可扩展块设备的记录表中。

进一步地,所述终端还包括:

获取模块,用于在所述外置存储卡为首次插入时,获取用户输入的是否进行存储空间扩展的选择指令,并在所述选择指令表明用户需要进行存储空间扩展,触发所述第一中止及卸载模块32。

需要说明的是,该终端实施例是与实施例二中的方法相对应的终端,所述方法的所有实现方式均适用于该终端实施例中,也能达到与实施例二中的方法相同的技术效果。

结合以上实施例对本发明在实际应用中的具体实现说明如下:

需要说明的是,终端中的可扩展块设备(可扩展块设备对外提供的使用方式和一般的块设备完全相同)的具体实现为:

如图4所示,内置存储卡和外置存储卡在可扩展块设备中分别映射为内置存储块设备和外置存储块设备,二者共同属于同一个默认挂载点/mnt/sdcard。

在可扩展块设备的内部包含一个记录表,该记录表储存了它所包含的块设备(通常为块设备的标识信息,例如块设备编号),以及该块设备对应的扇区起始偏移和大小。当外部文件系统对该块设备发起读写操作时,它的驱动程序会查询该记录表,从而取得读写实际操作真实块设备及在真实块设备上对应的偏 移。

同时,可扩展块设备提供块设备添加接口,可以通过该接口将新的块设备添加到该记录表中。

在具体实现中,还需要提供可扩展块设备添加的用户通知程序以及可扩展块设备的后台管理程序。

可扩展块设备添加通知程序的具体处理步骤:

Linux提供了对外置设备热插拔操作的NETLINK_KOBJECT_UEVENT通知机制。用户态的可扩展块设备添加的用户通知程序通过socket接口侦测外置存储卡的插入。如发生插入且该外置存储卡未进行过扩展,该用户通知程序通过用户图形界面(GUI)向用户发出是否扩展系统空间的询问,并向用户给出要进行外置储存卡的格式化操作以及要中断当前文件系统操作的提示;当得到用户的肯定确认后,该用户通知程序通过Linux提供已有通讯机制(特殊的系统调用,特殊的文件,或者信号等)通知可扩展块设备的后台管理程序开始外置块设备的添加。

可扩展块设备后台管理程序的具体处理步骤为:

在系统初始化可扩展块设备时,扫描系统中已经拥有的内置存储块设备和可能已拥有的外置存储卡对应的块设备,并通过可扩展块设备的添加接口将已拥有的块设备组合生成专门块设备供文件系统挂载;需要说明的是,终端上需为该可扩展块设备新建一个内核守护线程,该内核守护线程运行该可扩展块设备的后台管理程序。后台管理程序等待可扩展块设备添加的用户通知程序的通知,当得到通知以后,格式化外置存储卡到已有的内置存储对应的文件系统(如ext3);中止当前内置存储卡上所有正在进行的文件操作,并关闭所有打开的文件,然后卸载文件系统;调用可扩展块设备的添加接口,将已经格式化好的外置存储卡对应的块设备添加到可扩展块设备中;最后以文件系统的扩展挂载方式重新挂载文件系统,完成整个文件系统的扩展。

以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1