本发明涉及多媒体播放,特别涉及媒体扫描任务执行方法、装置、设备及介质。
背景技术:
1、android(安卓)具有开源、可扩展性好、生态丰富等特性,使其成为当前ivi系统(车载信息娱乐系统,即in-vehicle infotainment)的首选操作系统。媒体扫描服务是android多媒体系统中重要的一员,当android系统开机或者接入外置存储设备之后,系统都会扫描外置存储设备中对应存储空间中的媒体文件,并将媒体文件相关的信息存储到车机设备的媒体数据库中;上层应用可以直接查询媒体数据库,获取多媒体文件信息,根据需要将多媒体文件信息展示给用户。
2、android原生的媒体扫描服务以app(应用程序,即application)的形式(mediaprovider.apk)部署在系统中,当前媒体扫描服务的主要技术方案:当车机设备开机或外接存储设备后,接收到媒体扫描广播并开启针对存储空间的扫描服务,对首次接入的外置存储设备生成一个唯一标识id,扫描服务通过对存储空间中的目录进行遍历,并对目录中的文件逐一解析之后,对该标识id下文件数据进行存储媒体数据库操作。车机设备的android原生媒体扫描服务,在外接存储设备文件资源较多的情况下,媒体扫描速度较慢,进而导致媒体文件信息加载速度也会比较慢。
3、综上可见,如何提高媒体扫描任务执行速度以提升媒体文件信息加载速度是本领域有待解决的问题。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种媒体扫描任务执行方法、装置、设备及介质,提高媒体扫描任务执行速度以提升媒体文件信息加载速度。其具体方案如下:
2、第一方面,本技术公开了一种媒体扫描任务执行方法,包括:
3、基于外置存储设备的连接操作触发媒体扫描服务,并利用二分搜索算法遍历扫描所述外置存储设备的目标目录中的各个子目录,以得到目标子目录;
4、获取所述目标子目录中各个媒体文件的第一文件信息,并从所述第一文件信息筛选出与媒体数据库中当前存储的文件信息不匹配的待解析文件信息,并将所述待解析文件信息存储在第一队列;
5、获取所述第一队列中的所述待解析文件信息,并存放至解析线程池,以便所述解析线程池对所述待解析文件信息进行解析,得到解析后文件信息,利用存储线程将所述解析后文件信息生成数据库操作对象,并将所述数据库操作对象存储至第二队列;其中,所述解析线程池和所述存储线程的执行模式为并发执行模式;
6、依次将所述第二队列中所述数据库操作对象的副本保存至操作数组,并批量处理所述操作数组中的所述副本,以生成与所述副本对应的目标标识,将所述目标标识保存至第三队列;
7、基于所述第三队列中的目标标识对所述媒体数据库中的媒体文件信息进行更新,以完成媒体扫描任务。
8、可选的,所述媒体扫描任务执行方法,还包括:
9、接收车机设备的设备启动指令;
10、根据所述设备启动指令开启数据维护服务,以便所述数据维护服务在所述车机设备处于目标状态时对所述媒体数据库中的目标媒体数据进行清理。
11、可选的,所述对所述媒体数据库中的目标媒体数据进行清理,包括:
12、基于预设时间间隔从所述媒体数据库中筛选出未使用时间大于第一预设阈值的目标媒体数据,并将所述目标媒体数据进行清理。
13、可选的,所述利用二分搜索算法遍历扫描所述外置存储设备的目标目录中的各个子目录,以得到目标子目录,包括:
14、在所述外置存储设备的目标目录确定出当前子目录,并利用二分搜索算法判断预设扫描策略文件中是否存在所述当前子目录;
15、若所述预设扫描策略文件中不存在所述当前子目录,则判定所述当前子目录为目标子目录。
16、可选的,所述利用二分搜索算法判断预设扫描策略文件中是否存在所述当前子目录之后,还包括:
17、若所述预设扫描策略文件中存在所述当前子目录,则判断预设非扫描目录列表中是否存在所述当前子目录;
18、如果所述预设非扫描目录列表中存在所述当前子目录,则判定所述当前子目录为目标子目录;
19、如果所述预设非扫描目录列表中不存在所述当前子目录,则判断所述预设非扫描目录列表是否为空;
20、若所述预设非扫描目录列表为空,则判定所述当前子目录为目标子目录;
21、若所述预设非扫描目录列表不为空,则判断预设强制扫描目录列表中是否存在所述当前子目录,若所述预设强制扫描目录列表中存在所述当前子目录,判定所述当前子目录为目标子目录。
22、可选的,所述从所述第一文件信息筛选出与媒体数据库中当前存储的文件信息不匹配的待解析文件信息,包括:
23、将所述第一文件信息划分为第一媒体文件信息和第二媒体文件信息;其中,所述第一媒体文件信息为媒体数据库中不存在的对应媒体文件信息,所述第二媒体文件信息为所述媒体数据库中存在的对应媒体文件信息;
24、确定所述媒体数据库中存储的与所述第二媒体文件信息对应的第二文件信息,并从所述第二媒体文件信息中筛选出与所述第二文件信息不一致的第三媒体文件信息;
25、将所述第一媒体文件信息和所述第三媒体文件信息确定为待解析文件信息。
26、可选的,所述依次将所述第二队列中所述数据库操作对象的副本保存至操作数组,包括:
27、将所述第二队列中当前数据库操作对象进行复制,以得到所述当前数据库操作对象的副本,保存所述副本至操作数组,并在所述第二队列中删除所述当前数据库操作对象;
28、相应的,所述批量处理所述操作数组中的所述副本,以生成与所述副本对应的目标标识,将所述目标标识保存至第三队列,包括:
29、判断当前是否满足预设条件;其中,所述预设条件为所述第一队列中的所述待解析文件均已完成解析且所述第二队列为空;
30、若当前不满足所述预设条件,则确定所述操作数组中当前存储的副本数量,如果所述副本数量等于所述第二预设阈值,则处理所述操作数组中的所有所述副本,以生成与各个所述副本对应的目标标识,将所述目标标识保存至第三队列,然后清空所述操作数组;如果所述副本数量小于所述第二预设阈值,则重新跳转至所述判断当前是否满足预设条件的步骤;
31、若当前满足所述预设条件,则处理所述操作数组中的所有所述副本,以将生成的目标标识保存至第三队列,然后清空所述操作数组。
32、第二方面,本技术公开了一种媒体扫描任务执行装置,包括:
33、目录扫描模块,用于基于外置存储设备的连接操作触发媒体扫描服务,并利用二分搜索算法遍历扫描所述外置存储设备的目标目录中的各个子目录,以得到目标子目录;
34、信息筛选模块,用于获取所述目标子目录中各个媒体文件的第一文件信息,并从所述第一文件信息中筛选出与媒体数据库中当前存储的文件信息不匹配的待解析文件信息,并将所述待解析文件信息存储在第一队列;
35、信息解析模块,用于获取所述第一队列中的所述待解析文件信息,并存放至解析线程池,以便所述解析线程池对所述待解析文件信息进行解析,得到解析后文件信息,利用存储线程将所述解析后文件信息作为数据库操作对象存储至第二队列;其中,所述解析线程池以及所述存储线程的执行模式为并发执行模式;
36、标识生成模块,用于依次将所述第二队列中所述数据库操作对象的副本保存至操作数组,并批量处理所述操作数组中的所述副本,以生成与所述副本对应的目标标识,将所述目标标识保存至第三队列;
37、信息更新模块,用于基于所述第三队列中的目标标识对所述媒体数据库中的媒体文件信息进行更新,以完成媒体扫描任务。
38、第三方面,本技术公开了一种电子设备,包括:
39、存储器,用于保存计算机程序;
40、处理器,用于执行所述计算机程序,以实现前述公开的媒体扫描任务执行方法的步骤。
41、第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的媒体扫描任务执行方法的步骤。
42、本技术有益效果为:本技术基于外置存储设备的连接操作触发媒体扫描服务,并利用二分搜索算法遍历扫描所述外置存储设备的目标目录中的各个子目录,以得到目标子目录;获取所述目标子目录中各个媒体文件的第一文件信息,并从所述第一文件信息筛选出与媒体数据库中当前存储的文件信息不匹配的待解析文件信息,并将所述待解析文件信息存储在第一队列;获取所述第一队列中的所述待解析文件信息,并存放至解析线程池,以便所述解析线程池对所述待解析文件信息进行解析,得到解析后文件信息,利用存储线程将所述解析后文件信息生成数据库操作对象,并将所述数据库操作对象存储至第二队列;其中,所述解析线程池和所述存储线程的执行模式为并发执行模式;依次将所述第二队列中所述数据库操作对象的副本保存至操作数组,并批量处理所述操作数组中的所述副本,以生成与所述副本对应的目标标识,将所述目标标识保存至第三队列;基于所述第三队列中的目标标识对所述媒体数据库中的媒体文件信息进行更新,以完成媒体扫描任务。由此可见,本技术启动媒体扫描服务后,利用二分搜索算法遍历扫描目标目录中的各个子目录,能够加快目录扫描速度;进一步的,本技术分别利用解析线程池以及存储线程完成待解析文件信息的解析,采用多线程并发处理方式可以提升扫描效率;批量处理操作数组中的副本,相较于现有技术中零散处理可以减少资源的浪费,并提升处理效率,如此一来,本技术可以提高媒体扫描任务执行速度,进而提升媒体文件信息加载速度。