摄像头模组的映射关系调整方法、设备及存储介质与流程-j9九游会真人

文档序号:35696991发布日期:2023-10-11 20:00阅读:0来源:国知局


1.本技术涉及终端技术领域,尤其涉及一种摄像头模组的映射关系调整方法、设备及存储介质。


背景技术:

2.摄像头模组作为一种影像输入设备被安装在终端设备(例如手机)中,并被广泛应用到人脸识别、视频通话、扫码等领域相关的第三方应用中。
3.通常情况下,终端设备中配置有前置类型的摄像头模组和后置类型的摄像头模组,用户在使用第三方应用的相机功能时,第三方应用可以基于框架层标识生成相机打开请求,之后终端设备基于相机打开请求中所包括的框架层标识确定是打开前置类型的摄像头模组还是后置类型的摄像头模组。
4.但在终端设备的使用过程中,容易出现终端设备从高处摔落或者被外力撞击等情况,从而导致后置类型的摄像头模组或前置类型的摄像头模组损坏,进而使得第三方应用的相机启动或预览异常,在不维修的情况下,影响用户的正常使用。


技术实现要素:

5.本技术实施例提供一种摄像头模组的映射关系调整方法、设备及存储介质,应用于终端技术领域。有助于降低在摄像头模组损坏但未维修的情况下,第三方应用启动相机时出现相机启动异常或者预览异常的概率。
6.第一方面,本技术实施例提供一种摄像头模组的映射关系调整方法。该方法包括:获取摄像头模组的逻辑标识与框架层标识之间的映射关系;校验映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组是否为后置类型,若否,则对第一框架层标识进行调整,以使得第一框架层标识与后置类型的摄像头模组的逻辑标识相对应;校验映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组是否为前置类型,若否,则对第二框架层标识进行调整,以使得第二框架层标识与前置类型的摄像头模组的逻辑标识相对应。
7.本技术实施例中,终端设备获取到后置类型的摄像头模组的框架层标识时,打开的始终是后置类型的摄像头模组,在获取到前置类型的摄像头模组的框架层标识时,打开的始终是前置类型的摄像头模组,这样,即使终端设备的前置类型的摄像头模组或者后置类型的摄像头模组损坏且没有维修,终端设备也可以基于调整后的映射关系打开正确类型的摄像头模组,从而可以降低第三方应用启动相机时出现相机启动异常或者预览异常的概率。
8.在一种可能的实现方式中,对第一框架层标识进行调整,以使得第一框架层标识与后置类型的摄像头模组的逻辑标识相对应,包括:
9.在映射关系中所包含的多个框架层标识中,获取大于第一框架层标识的多个框架层标识;在大于第一框架层标识的多个框架层标识中确定第一目标框架层标识,第一目标
框架层标识对应的逻辑标识所指示的摄像头模组为后置类型;将第一框架层标识与第一目标框架层标识进行交换。第一目标框架层标识为映射关系中大于第一框架层标识的框架层标识,且对应的逻辑标识所指示的摄像头模组为后置类型,因此,将第一框架层标识与第一目标框架层标识进行交换后,终端设备可以打开第一框架层标识对应的逻辑标识所指示的摄像头模组,克服了因摄像头模组损坏导致camera hal server单元重启后重新生成的映射关系发生错乱,使得打开错误的摄像头模组的问题,实现了在后置类型的主摄像头模组损坏的情况下,依然可以打开后置类型的摄像头模组的效果,使得用户可以使用后置类型的摄像头模组,在不维修损坏的摄像头模组的情况下有效提升了用户体验。
10.在一种可能的实现方式中,第一目标框架层标识为多个后置类型的摄像头模组所对应的框架层标识中最小的。因为在一般情况下,框架层标识越小的摄像头模组,其像素越好,基于此,当前的实现方案可以使得在后置的主摄像头模组损坏的情况下,尽可能的使用像素较好的后置类型的摄像头模组来实现后置的拍摄。
11.在一种可能的实现方式中,对第二框架层标识进行调整,以使得第二框架层标识与前置类型的摄像头模组的逻辑标识相对应,包括:
12.在映射关系中所包含的多个框架层标识中,获取大于第二框架层标识的多个框架层标识;在大于第二框架层标识的多个框架层标识中确定第二目标框架层标识,第二目标框架层标识对应的逻辑标识所指示的摄像头模组为前置类型;将第二框架层标识与第二目标框架层标识进行交换。第二目标框架层标识为映射关系中大于第二框架层标识的框架层标识,且对应的逻辑标识所指示的摄像头模组为前置类型,因此,将第二框架层标识与第二目标框架层标识进行交换后,终端设备可以打开第二框架层标识对应的逻辑标识所指示的摄像头模组,克服了因摄像头模组损坏导致camera hal server单元重启后重新生成的映射关系发生错乱,使得打开错误的摄像头模组的问题,实现了在前置类型的主摄像头模组损坏的情况下,依然可以打开前置类型的摄像头模组的效果,使得用户可以使用前置类型的摄像头模组,在不维修损坏的摄像头模组的情况下有效提升了用户体验。
13.在一种可能的实现方式中,第二目标框架层标识为多个前置类型的摄像头模组所对应的框架层标识中最小的。
14.在一种可能的实现方式中,第一框架层标识为相机通用编程规范中后置类型的主摄像头模组所对应的框架层标识,第二框架层标识为相机通用编程规范中前置类型的主摄像头模组所对应的框架层标识。
15.在一种可能的实现方式中,第一框架层标识为0,第二框架层标识为1。
16.在一种可能的实现方式中,方法还包括:
17.若映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组不为后置类型,或者,若映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组不为前置类型,则输出提示信息,提示信息用于提示摄像头模组异常。提示信息可以以通知或者弹窗等任意形式显示在终端设备的界面中,以提示用户摄像头模组异常,以便用户可以及时掌握摄像头模组的异常情况。摄像头模组异常例如可以是打开了错误的摄像头模组。提示信息还可以用于提示用户打开的摄像头模组为前置副摄或者后置副摄,以便用户了解像素降低的原因。
18.在一种可能的实现方式中,方法还包括:
19.在应用程序层获取针对第一摄像头模组的打开请求,打开请求中包括第一摄像头模组对应的框架层标识;应用程序层将打开请求发送至应用程序框架层,以使得应用程序框架层将打开请求发送至hal层的相机服务单元;相机服务单元根据打开请求,获取第一摄像头模组对应的框架层标识,并根据映射关系,获取与第一摄像头模组对应的框架层标识相对应的逻辑标识;根据与第一摄像头模组对应的框架层标识相对应的逻辑标识,打开第二摄像头模组。使用调整后的映射关系确认最终打开的摄像头模组,由于调整后的映射关系中,后置类型的摄像头模组的框架层标识与后置类型的摄像头模组的逻辑标识相对应,前置类型的摄像头模组的框架层标识与前置类型的摄像头模组的逻辑标识相对应,因此,即使有摄像头模组损坏未维修,但在用户需要打开前置类型的摄像头模组的场景中仍可以打开前置类型的摄像头模组,在用户需要打开后置类型的摄像头模组的场景中仍可以打开后置类型的摄像头模组,克服了因摄像头模组损坏造成的相机启动异常的问题,有助于提升用户的使用体验。
20.第二方面,本技术实施例提供一种摄像头模组的映射关系调整装置。该装置包括:获取模块,第一调整模块和第二调整模块,其中,
21.获取模块,用于获取摄像头模组的逻辑标识与框架层标识之间的映射关系;
22.第一调整模块,用于校验映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组是否为后置类型,若否,则对第一框架层标识进行调整,以使得第一框架层标识与后置类型的摄像头模组的逻辑标识相对应;
23.第二调整模块,用于校验映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组是否为前置类型,若否,则对第二框架层标识进行调整,以使得第二框架层标识与前置类型的摄像头模组的逻辑标识相对应。
24.在一种可能的实现方式中,第一调整模块,具体用于:
25.在映射关系中所包含的多个框架层标识中,获取大于第一框架层标识的多个框架层标识;
26.在大于第一框架层标识的多个框架层标识中确定第一目标框架层标识,第一目标框架层标识对应的逻辑标识所指示的摄像头模组为后置类型;
27.将第一框架层标识与第一目标框架层标识进行交换。
28.在一种可能的实现方式中,第一目标框架层标识为多个后置类型的摄像头模组所对应的框架层标识中最小的。
29.在一种可能的实现方式中,第二调整模块,具体用于:
30.在映射关系中所包含的多个框架层标识中,获取大于第二框架层标识的多个框架层标识;
31.在大于第二框架层标识的多个框架层标识中确定第二目标框架层标识,第二目标框架层标识对应的逻辑标识所指示的摄像头模组为前置类型;
32.将第二框架层标识与第二目标框架层标识进行交换。
33.在一种可能的实现方式中,第二目标框架层标识为多个前置类型的摄像头模组所对应的框架层标识中最小的。
34.在一种可能的实现方式中,第一框架层标识为相机通用编程规范中后置类型的主摄像头模组所对应的框架层标识,第二框架层标识为相机通用编程规范中前置类型的主摄
像头模组所对应的框架层标识。
35.在一种可能的实现方式中,第一框架层标识为0,第二框架层标识为1。
36.在一种可能的实现方式中,装置还包括:
37.输出模块,用于若映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组不为后置类型,或者,若映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组不为前置类型,则输出提示信息,提示信息用于提示摄像头模组异常。
38.在一种可能的实现方式中,装置还包括:
39.获取请求模块,用于在应用程序层获取针对第一摄像头模组的打开请求,打开请求中包括第一摄像头模组对应的框架层标识;
40.发送模块,用于应用程序层将打开请求发送至应用程序框架层,以使得应用程序框架层将打开请求发送至hal层的相机服务单元;
41.获取标识模块,用于相机服务单元根据打开请求,获取第一摄像头模组对应的框架层标识,并根据映射关系,获取与第一摄像头模组对应的框架层标识相对应的逻辑标识;
42.启动模块,用于根据与第一摄像头模组对应的框架层标识相对应的逻辑标识,打开第二摄像头模组。
43.第三方面,本技术实施例提供一种终端设备,终端设备也可以称为终端(terminal)、用户设备(user equipment,ue)、移动台(mobile station,ms)、移动终端(mobile terminal,mt)等。终端设备可以是手机(mobile phone)、智能电视、穿戴式设备、平板电脑(pad)、带无线收发功能的电脑、虚拟现实(virtual reality,vr)终端设备、增强现实(augmented reality,ar)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。
44.该终端设备包括:包括:处理器和存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得终端设备执行如第一方面的方法。
45.第四方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序。计算机程序被处理器执行时实现如第一方面的方法。
46.第五方面,本技术实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面的方法。
47.第六方面,本技术实施例提供了一种芯片,芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行如第一方面的方法。
48.应当理解的是,本技术的第二方面至第六方面与本技术的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
49.图1为一种第三方应用打开摄像头模组的流程示意图;
50.图2为一种前置类型的主摄像头模组损坏时的人脸识别界面示意图;
51.图3为本技术实施例提供的一种终端设备的硬件结构示意图;
52.图4为本技术实施例提供的一种终端设备的软件结构示意图;
53.图5为本技术实施例提供的一种摄像头模组的映射关系调整方法的流程示意图一;
54.图6为本技术实施例提供的一种摄像头模组的映射关系调整方法的流程示意图二;
55.图7为本技术实施例提供的一种摄像头模组的映射关系调整方法的流程示意图三;
56.图8为本技术实施例提供的一种摄像头模组的映射关系调整装置的结构示意图;
57.图9为本技术实施例提供的又一种终端设备的硬件结构示意图。
具体实施方式
58.为了便于清楚描述本技术实施例的技术方案,本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
59.本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
60.需要说明的是,本技术实施例中的“在
……
时”,可以为在某种情况发生的瞬时,也可以为在某种情况发生后的一段时间内,本技术实施例对此不作具体限定。此外,本技术实施例提供的显示界面仅作为示例,显示界面还可以包括更多或更少的内容。
61.随着终端设备(例如手机)的发展,用户对于终端设备的功能需求也越发多样化,为了满足用户基于第三方应用的人脸识别、视频通话、扫码等需求,越来越多的终端设备支持第三方应用的相机功能,而摄像头模组作为一种影像输入设备,是使得终端设备中第三方应用的相机功能得以实现的必不可少的设备。
62.通常情况下,终端设备中配置有前置类型的摄像头模组和后置类型的摄像头模组。在安卓(android)的相机通用编程规范中,框架层标识为0的摄像头模组通常是后置类型的摄像头模组,框架层标识为1的摄像头模组通常是前置类型的摄像头模组,其中,框架层标识也可以称为框架层摄像头标识(framework camera id)。用户在使用第三方应用的相机功能时,第三方应用可以基于框架层标识生成相机打开请求,之后终端设备基于相机打开请求中所包括的框架层标识确定是打开前置类型的摄像头模组还是后置类型的摄像头模组。
63.示例性的,结合android软件架构对第三方应用打开摄像头模组的过程进行介绍。
64.图1示出了一种第三方应用打开摄像头模组的流程示意图。如图1所示,步骤包括:
65.s101:启动相机。
66.其中,相机为第三方应用的相机,第三方应用例如可以包括支付类应用、搜索类应用、购物类应用、社交类应用等非终端设备系统自带的应用。
67.终端设备可以响应于用户触发第三方应用的相机功能的操作,启动相机。触发第三方应用的相机功能的操作例如可以是触发第三方应用的人脸识别、视频通话或者扫码等功能的操作。
68.s102:判断是否打开后置类型的摄像头模组。
69.可能的实现中,第三方应用程序中自带与功能对应的默认打开的摄像头模组类型。例如使用第三方应用的扫描功能时,第三方应用默认打开后置类型的摄像头模组;使用第三方应用的人脸识别功能时,第三方应用默认打开前置类型的摄像头模组。
70.因此第三方应用可以根据实际的摄像头打开需求,确定是否要打开后置类型的摄像头模组,若是,则进行步骤s103;若否,则进行步骤s104。
71.s103:应用程序层向应用程序框架层的相机服务(camera server)单元发送打开框架层标识为0的摄像头模组的请求。
72.s104:应用程序层向应用程序框架层的camera server单元发送打开框架层标识为1的摄像头模组的请求。
73.s105:应用程序框架层的camera server单元将接收到的请求转发到硬件抽象层(hardware abstraction layer,hal)的camera server单元(以下称为camera hal server单元)。
74.s106:camera hal server单元获取摄像头模组的逻辑标识与框架层标识之间的映射关系,并根据接收到的请求中的框架层标识从该映射关系中获取对应的逻辑标识。
75.s107:终端设备打开逻辑标识对应的摄像头模组。
76.示例性的,假设终端设备配置有6颗实际的摄像头模组,其中4颗为后置类型的摄像头模组,2颗为前置类型的摄像头模组。当6颗摄像头模组均处于完好状态时,摄像头模组的逻辑标识与框架层标识之间的映射关系可以如表1所示。
77.为了便于描述,本技术实施例中将映射关系表中的后置类型的主摄像头模组简称为后置主摄,将第n个后置类型的副摄像头模组简称为后置副摄n,将前置类型的主摄像头模组简称为前置主摄,将前置类型的副摄像头模组简称为前置副摄。
78.表1
79.摄像头模组逻辑标识框架层标识后置副摄104后置主摄10后置副摄222后置副摄335前置副摄43前置主摄51
80.当camera hal server单元接收到的相机打开请求所包含的框架层标识为0时,则可以确定第三方应用请求打开后置类型的摄像头模组,如表1所示,此时框架层标识为0的摄像头模组正好为后置类型的摄像头模组;当camera hal server单元接收到的相机打开请求所包含的框架层标识为1时,则可以确定第三方应用请求打开前置类型的摄像头模组,如表1所示,此时框架层标识为1的摄像头模组正好为前置类型的摄像头模组。
81.但在终端设备的使用过程中,容易出现终端设备从高处摔落或者被外力撞击等情
况,从而导致摄像头模组损坏,进而使得第三方应用的相机启动或预览异常,例如在第三方应用默认打开前置类型的摄像头模组时打开了后置类型的摄像头模组,这样,在不维修的情况下,将影响用户的正常使用。
82.示例性的,假设前置类型的主摄像头模组损坏,在第三方应用请求打开前置主摄时,摄像头驱动检测不到该前置类型的主摄像头模组,相应的camera hal server单元就会确认检测到存在重大错误,其中摄像头模组损坏会导致camera hal server单元重启,重启后camera hal server重新生成摄像头模组的逻辑标识与框架层标识之间的映射关系时,将略过该前置类型的主摄像头模组进行排序设置,重新生成的摄像头模组的逻辑标识与框架层标识之间的映射关系可以如表2所示。
83.表2
84.摄像头模组逻辑标识框架层标识后置副摄103后置主摄10后置副摄221后置副摄334前置副摄42前置主摄
××
85.本技术实施例中,表2中各标识的排序规律与表1相同,表2中的框架层标识,后置主摄对应的框架层标识仍然是0没有发生变化,除此之外,其余摄像头对应的框架层标识都减1(因为排序时略过了损坏的前置类型的主摄像头模组)。而逻辑标识,除了发生损坏的前置主摄没有分配逻辑标识以外,其余的摄像头模组的逻辑标识未发生变化。
86.那么当第三方应用需要打开前置主摄的时候,会生成包含框架层标识为1的相机打开请求,之后该相机打开请求会下发至camera hal server单元,但如表2所示,此时框架层标识为1对应的摄像头模组为后置副摄2,因此,camera hal server单元处理该相机打开请求,实际上终端设备会打开该后置副摄2,也就是打开了错误的摄像头模组。
87.以终端设备为手机,第三方应用为支付类应用为例对摄像头的错误打开进行示例说明。示例性的,图2示出了一种前置类型的主摄像头模组损坏时的人脸识别界面示意图。在启动第三方应用的人脸识别功能时,可以显示如图2所示的界面,该界面可以为设置生物9游会的支付方式的界面,如图2所示,该界面中可以包括指纹支付的开通/关闭选择框201和手机刷脸支付的开通/关闭选择框202,响应于用户使手机刷脸支付的开通/关闭选择框202处于开通状态的触发操作,手机可以打开前置类型的主摄像头模组并显示人脸识别框203,从而可以对用户脸部进行检测。但由于此时手机的前置类型的主摄像头模组已损坏,按照表2所示,手机将打开后置副摄2,也就是打开了错误的摄像头模组,在不维修前置主摄的情况下,将影响用户的正常使用。
88.有鉴于此,本技术实施例提供一种摄像头模组的映射关系调整方法,该方法通过对重新生成的摄像头模组的逻辑标识与框架层标识之间的映射关系进行校验调整,先使得映射关系中指示后置类型的摄像头模组的框架层标识与后置类型的摄像头模组的逻辑标识相对应,再使得映射关系中指示前置类型的摄像头模组的框架层标识与前置类型的摄像头模组的逻辑标识相对应。也就是保证了终端设备获取到后置类型的摄像头模组的框架层
标识时,打开的始终是后置类型的摄像头模组,在获取到前置类型的摄像头模组的框架层标识时,打开的始终是前置类型的摄像头模组,这样,即使终端设备的前置类型的摄像头模组或者后置类型的摄像头模组损坏且没有维修,终端设备也可以基于调整后的映射关系打开正确类型的摄像头模组。
89.示例性的,图3示出了本技术实施例提供的一种终端设备的硬件结构示意图。
90.终端设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194以及用户标识模块(subscriber identification module,sim)卡接口195等。
91.其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
92.可以理解的是,本技术实施例示意的结构并不构成对终端设备的具体限定。在本技术另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
93.处理器110可以包括一个或多个处理单元。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中还可以设置存储器,用于存储指令和数据。
94.终端设备通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。
95.显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,终端设备可以包括1个或n个显示屏194,n为大于1的正整数。
96.终端设备可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄、录像等相机功能。
97.摄像头193用于捕获静态图像或视频。在一些实施例中,终端设备可以包括1个或n个摄像头193,n为大于1的正整数。其中,摄像头193可以包括前置类型的摄像头模组和后置类型的摄像头模组。
98.在本技术的一种可能的应用场景中,终端设备可以包括一个前置类型的主摄像头模组、至少一个前置类型的副摄像头模组、一个后置类型的主摄像头模组和至少一个后置类型的副摄像头模组。
99.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
100.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
101.内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。
102.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。陀螺仪传感器180b可以用于确定终端设备的运动姿态。气压传感器180c用于测量气压。磁传感器180d包括霍尔传感器。加速度传感器180e可检测终端设备在各个方向上(一般为三轴)加速度的大小。距离传感器180f,用于测量距离。接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。环境光传感器180l用于感知环境光亮度。指纹传感器180h用于采集指纹。温度传感器180j用于检测温度。触摸传感器180k,也称“触控器件”。骨传导传感器180m可以获取振动信号。
103.触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,或称“触控屏”。其中,该触摸屏内可以设置有电容感测节点网格,当终端设备确定该电容传感器接收到的至少一个网格中的电容的数值超出电容阈值时,则可以确定发生触摸操作;进一步的,终端设备可以基于超出电容阈值的至少一个网格所占的区域,确定触摸操作对应的触摸区域。
104.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备可以接收按键输入,产生与终端设备的用户设置以及功能控制有关的键信号输入。
105.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
106.可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备的结构限定。在本技术另一些实施例中,终端设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
107.上述终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的系统为例,示例性说明终端设备的软件结构。
108.示例性的,图4为本技术实施例提供的一种终端设备的软件结构示意图。如图4所示,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过接口通信。在一些实施例中,系统可以包括应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,硬件抽象层(hardware abstraction layer,hal)以及内核层。需要说明的是,本技术实施例以android系统举例来说明,在其他操作系统中(例如鸿蒙系统,ios系统等),只要各个功能模块实现的功能和本技术的实施例类似也能实现本技术的方案。
109.其中,应用程序层可以包括一系列应用程序包。
110.如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,无线局域网(wireless local area networks,wlan),蓝牙,音乐,视频,短信息、锁屏应用、设置应用等应用程序。当然,应用程序层还可以包括其他应用程序包,例如支付应用、购物应用、银行应用、社交应用等第三方应用,本技术不做限定。
111.其中,第三方应用可以具有人脸识别、视频通话、扫描、拍照和录像等功能。
112.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。例如可以包括活动管理器、窗口管理器,内容提供器,视图系统,资源管理器,通知管理器和相
机服务(camera server)单元等,本技术实施例对此不做任何限制。
113.其中,应用程序框架层的camera server单元可以在终端设备开机阶段启动,可以用于传递和保存摄像头的相关信息。
114.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
115.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
116.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
117.opengl es用于实现三维图形绘图,图像渲染,合成和图层处理等。
118.sgl是2d绘图的绘图引擎。
119.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
120.hal层是对linux内核驱动程序的封装,向上提供接口,屏蔽低层硬件的实现细节。
121.hal层中可以包括wi-fi hal,音频(audio)hal,hal层的相机服务(camera hal server)单元和软件代码库等。
122.本技术实施例中,camera hal server单元可以在终端设备开机阶段启动,并在识别到错误时重启。camera hal server单元可以用于传递和保存摄像头的相关信息,生成并保存摄像头模组的逻辑标识与框架层标识之间的映射关系,其中,逻辑标识也可以称为逻辑摄像头标识(logical camera id),以及还可以用于校验获取的摄像头模组的逻辑标识与框架层标识之间的映射关系是否存在异常,具体可参见下文的相关描述。
123.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动、充电驱动等。
124.其中,摄像头驱动是camera器件的驱动层,主要负责和硬件模组的交互,其中硬件模组可以包括上述介绍的后置类型的摄像头模组和前置类型的摄像头模组。
125.下面结合附图,以具体的实施例对本技术实施例的技术方案以及本技术实施例的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
126.图5为本技术实施例提供的一种摄像头模组的映射关系调整方法的流程示意图一。下面结合终端设备的软件架构对本技术实施例的摄像头模组的映射关系调整方法进行说明,如图5所示,该方法可以包括:
127.s501:获取摄像头模组的逻辑标识与框架层标识之间的映射关系。
128.其中,根据摄像头模组的逻辑标识可以打开对应的摄像头模组,逻辑标识通常为数字。
129.其中,摄像头模组的框架层标识为应用程序在生成相机打开请求时所使用的标识,在相机打开请求中包括的是哪个摄像头模组的框架层标识,对应的就需要打开哪个摄
像头模组。框架层标识通常为数字。
130.那么也就是说,第三方应用在启动相机功能时,camera hal server单元接收到应用程序层下发并经应用程序框架层的camera server单元转发的是包含框架层标识的相机打开请求,因此,为了确定第三方应用具体要打开哪个摄像头模组,需要获取摄像头模组的逻辑标识与框架层标识之间的映射关系,从而可以使得camera hal server单元基于框架层标识和该映射关系确定逻辑标识,以便在camera hal server单元后续根据该逻辑标识向对应的摄像头驱动发送打开摄像头模组的信息。
131.可能的实现中,camera hal server单元启动或重启后,camera hal server单元可以生成摄像头模组的逻辑标识与框架层标识之间的映射关系,之后该映射关系也保存camera hal server单元。
132.因此本实施例中所介绍的获取映射关系,可以理解为camera hal server单元生成映射关系,也可以理解为camera hal server单元生成映射关系并保存之后,直接从camera hal server单元中获取保存的映射关系。
133.s502:校验映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组是否为后置类型,若否,则对第一框架层标识进行调整,以使得第一框架层标识与后置类型的摄像头模组的逻辑标识相对应。
134.在本实施例中,摄像头模组的类型包括前置类型和后置类型,其中前置类型的摄像头模组例如可以包括上述介绍的前置主摄和前置副摄,后置类型的摄像头模组例如可以包括上述介绍的后置主摄、后置副摄1、后置副摄2、后置副摄3,在不同的终端设备中,摄像头模组的设置也会有所区别,因此本实施例对前置类型的摄像头模组和后置类型的摄像头模组的具体实现不做特别限制。
135.示例性的,camera hal server单元可以通过查表法校验映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组是否为后置类型,若是,则可以进行步骤s503;若否,则将第一框架层标识与后置类型的摄像头模组对应的框架层标识进行交换后再进行步骤s503,对第一框架层标识进行调整后使得第一框架层标识与后置类型的摄像头模组的逻辑标识相对应。
136.s503:校验映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组是否为前置类型,若否,则对第二框架层标识进行调整,以使得第二框架层标识与前置类型的摄像头模组的逻辑标识相对应。
137.示例性的,在确定了第一框架层标识与后置类型的摄像头模组的逻辑标识相对应之后,camera hal server单元可以通过查表法校验映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组是否为前置类型,若是,则可以不再调整;若否,则将第二框架层标识与前置类型的摄像头模组对应的框架层标识进行交换,对第二框架层标识进行调整后使得第二框架层标识与前置类型的摄像头模组的逻辑标识相对应。
138.本技术实施例中,第一框架层标识为相机通用编程规范中后置类型的主摄像头模组所对应的框架层标识,第二框架层标识为相机通用编程规范中前置类型的主摄像头模组所对应的框架层标识。示例性的,第一框架层标识可以为0,第二框架层标识可以为1。
139.那么就可以保证,无论是哪一个三方应用程序,其在需要打开后置主摄的时候,都会基于第一框架层标识来生成相机打开请求,在需要打开前置主摄的时候,都会基于第二
框架层标识来生成相机打开请求。
140.而基于本技术中调整后的映射关系,无论是后置主摄出现异常还是前置主摄出现异常,针对基于第一框架层标识生成的相机打开请求,终端设备打开的一定是后置类型的摄像头模组,针对基于第二框架层标识生成的相机打开请求,终端设备打开的一定是前置类型的摄像头模组。也就是说针对终端设备中任意一个需要打开相机的第三方应用,本技术的技术方案都可以保证打开正确类型的摄像头。
141.本技术实施例中,通过获取摄像头模组的逻辑标识与框架层标识之间的映射关系;校验映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组是否为后置类型,若否,则对第一框架层标识进行调整,以使得第一框架层标识与后置类型的摄像头模组的逻辑标识相对应;校验映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组是否为前置类型,若否,则对第二框架层标识进行调整,以使得第二框架层标识与前置类型的摄像头模组的逻辑标识相对应。使得终端设备获取到后置类型的摄像头模组的框架层标识时,打开的始终是后置类型的摄像头模组,在获取到前置类型的摄像头模组的框架层标识时,打开的时钟是前置类型的摄像头模组,这样,即使终端设备的前置类型的摄像头模组或者后置类型的摄像头模组损坏且没有维修,终端设备也可以基于调整后的映射关系打开正确类型的摄像头模组,从而可以降低第三方应用启动相机时出现相机启动异常或者预览异常的概率。
142.本技术实施例中,有后置类型的摄像头模组损坏时,默认后置类型的摄像头模组损坏的数量少于终端设备中配置的后置类型的摄像头模组数量;有前置类型的摄像头模组损坏时,默认前置类型的摄像头模组损坏的数量少于终端设备中配置的前置类型的摄像头模组数量。
143.在上述实施例的基础上,下面结合图6所示的实施例对校验调整的过程进行介绍。
144.示例性的,图6示出了本技术实施例提供的一种摄像头模组的映射关系调整方法的流程示意图二。如图6所示,该方法可以包括:
145.s601:获取摄像头模组的逻辑标识与框架层标识之间的映射关系。
146.该步骤与上述步骤s501相似或相同,在此不再赘述。
147.s602:判断映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组是否为后置类型。
148.若是,则进行步骤s605;若否,则进行步骤s604,再进行步骤s605。
149.可选的,若映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组不为后置类型,则在步骤s602之后,该方法还可以包括步骤s603:输出提示信息,提示信息用于提示摄像头模组异常。
150.本技术实施例中,提示信息可以以通知或者弹窗等任意形式显示在终端设备的界面中,以提示用户摄像头模组异常,以便用户可以及时掌握摄像头模组的异常情况。摄像头模组异常例如可以是打开了错误的摄像头模组。
151.此外,由于主摄像头模组的像素一般高于副摄像头模组的像素,因此,在一些可能的实现中,提示信息还可以用于提示用户打开的摄像头模组为前置副摄或者后置副摄,以便用户了解像素降低的原因。
152.s604:在映射关系中所包含的多个框架层标识中,获取大于第一框架层标识的多
个框架层标识;在大于第一框架层标识的多个框架层标识中确定第一目标框架层标识,第一目标框架层标识对应的逻辑标识所指示的摄像头模组为后置类型;将第一框架层标识与第一目标框架层标识进行交换。
153.示例性的,假设后置类型的主摄像头模组损坏,在第三方应用请求打开后置主摄时,摄像头驱动检测不到该后置类型的主摄像头模组,则camera hal server单元检测到存在重大错误,其中摄像头模组损坏会导致camera hal server单元重启,重启后camera hal server重新生成摄像头模组的逻辑标识与框架层标识之间的映射关系时,将略过该后置类型的主摄像头模组进行排序设置,重新生成的摄像头模组的逻辑标识与框架层标识之间的映射关系可以如表3所示。
154.表3
155.摄像头模组逻辑标识框架层标识后置副摄103后置主摄
××
后置副摄211后置副摄324前置副摄32前置主摄40
156.本技术实施例中,表3中各标识的排序规律与表1相同,表3中的框架层标识,各个摄像头模组对应的框架层标识都减1(因为排序时略过了损坏的后置类型的主摄像头模组)。而逻辑标识是除了后置副摄1之外的其余摄像头模组都减1。
157.示例性的,在表3中,第一框架层标识为0,则大于第一框架层标识的框架层标识包括1、2、3、4,其中,1、3、4对应的逻辑标识所指示的摄像头模组为后置类型,因此,第一目标框架层标识可以为1、3或4。camera hal server单元可以将第一框架层标识与第一目标框架层标识交换,这样,在后置类型的主摄像头模组损坏时,终端设备可以打开后置副摄2、后置副摄1或者后置副摄3。
158.例如,假设第一目标框架层标识为1,则将第一框架层标识与第一目标框架层标识进行交换后的映射关系可以如表4所示。
159.表4
160.摄像头模组逻辑标识框架层标识后置副摄103后置主摄
××
后置副摄210后置副摄324前置副摄32前置主摄41
161.如表4所示,第一框架层标识与第一目标框架层标识进行交换后,第一框架层标识0所对应的逻辑标识也就变成了1(对应后置副摄2),因此可以实现如下效果:
162.在后置类型的主摄像头模组(也就是表中的后置主摄)损坏后,第三方应用想要打开后置主摄,因此会基于第一框架层标识0生成相机打开请求。之后经查阅调整后的映射关
系,可以确定第一框架层标识0所对应的逻辑标识为1,该逻辑标识1对应的是后置副摄2这个摄像头模组,那么响应于第三方应用的相机打开请求,终端设备会打开后置副摄2,以保证在后置主摄损坏的情况下,也能正确的打开后置类型的摄像头模组,避免了想要打开后置摄像头但是打开了前置摄像头的异常情况。
163.本技术实施例中,第一目标框架层标识为映射关系中大于第一框架层标识的框架层标识,且对应的逻辑标识所指示的摄像头模组为后置类型,因此,将第一框架层标识与第一目标框架层标识进行交换后,终端设备可以打开第一框架层标识对应的逻辑标识所指示的摄像头模组,克服了因摄像头模组损坏导致camera hal server单元重启后重新生成的映射关系发生错乱,使得打开错误的摄像头模组的问题,实现了在后置类型的主摄像头模组损坏的情况下,依然可以打开后置类型的摄像头模组的效果,使得用户可以使用后置类型的摄像头模组,在不维修损坏的摄像头模组的情况下有效提升了用户体验。
164.本技术实施例对上述步骤s603和步骤s604的执行顺序不作具体限制。
165.可选的,第一目标框架层标识为多个后置类型的摄像头模组所对应的框架层标识中最小的。
166.示例性的,在camera hal server单元中维护有预设表,该预设表用于记录各个摄像头模组的框架层标识。预设表也遵循上述介绍的相机通用编程规范,即框架层标识为0的摄像头模组通常是后置类型的摄像头模组,框架层标识为1的摄像头模组通常是前置类型的摄像头模组。除0和1之外,其余的各个框架层标识(如上述介绍的框架层标识2~4)具体对应哪个摄像头模组,可以根据实际需求进行选择。
167.可能的实现中,camera hal server单元所维护的预设表中,各后置类型的摄像头模组的框架层标识可以满足条件:像素越高的后置类型的摄像头模组的框架层标识越小。因此,为了在后置类型的主摄像头模组损坏的情况下仍可以获得较好的像素,可以使第一目标框架层标识为多个后置类型的摄像头模组所对应的框架层标识中最小的。
168.但是此处需要说明的是,摄像头模组的框架层标识的大小和摄像头模组的像素并不具备绝对的关联关系,这还是取决于终端设备的实际实现,因此本技术中的第一目标框架层标识还可以理解为:多个后置类型的摄像头模组中像素最好的摄像头模组所对应的框架层标识,至于具体怎么确定出这个像素最好的摄像头模组,可以取决于实际实现。
169.s605:判断映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组是否为前置类型。
170.若是,则进行步骤s608;若否,则进行步骤s607,再进行步骤s608。
171.需要说明的是,该步骤中的映射关系中,框架层标识为0对应的逻辑标识指示的摄像头模组已经经前述步骤确定为后置类型。
172.可选的,若映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组不为前置类型,则在步骤s605之后,该方法还可以包括步骤s606:输出提示信息,提示信息用于提示摄像头模组异常。
173.该步骤与上述步骤s603相似或相同,在此不再赘述。
174.s607:在映射关系中所包含的多个框架层标识中,获取大于第二框架层标识的多个框架层标识;在大于第二框架层标识的多个框架层标识中确定第二目标框架层标识,第二目标框架层标识对应的逻辑标识所指示的摄像头模组为前置类型;将第二框架层标识与
第二目标框架层标识进行交换。
175.示例性的,假设前置类型的主摄像头模组损坏,在第三方应用请求打开前置主摄时,摄像头驱动检测不到该前置类型的主摄像头模组,则camera hal server单元检测到存在重大错误,其中摄像头模组损坏会导致camera hal server单元重启,重启后camera hal server单元重新生成摄像头模组的逻辑标识与框架层标识之间的映射关系时,将略过该前置类型的主摄像头模组进行排序设置,重新生成的摄像头模组的逻辑标识与框架层标识之间的映射关系可以如表2所示。
176.在表2中,第二框架层标识为1,则大于第二框架层标识的框架层标识包括2、3、4,其中,2对应的逻辑标识所指示的摄像头模组为前置类型,因此,第二目标框架层标识可以为2。camera hal server单元可以将第二框架层标识与第二目标框架层标识交换,第二框架层标识与第二目标框架层标识交换后的映射关系可以如表5所示。
177.表5
178.摄像头模组逻辑标识框架层标识后置副摄103后置主摄10后置副摄222后置副摄334前置副摄41前置主摄
××
179.如表5所示,第二框架层标识与第二目标框架层标识进行交换后,第二框架层标识1所对应的逻辑标识也就变成了4(对应前置副摄),因此可以实现如下效果:
180.在前置类型的主摄像头模组(也就是表中的前置主摄)损坏后,第三方应用想要打开前置主摄,因此会基于第二框架层标识1生成相机打开请求。之后经查阅调整后的映射关系,可以确定第二框架层标识1所对应的逻辑标识为4,该逻辑标识4对应的是前置副摄这个摄像头模组,那么响应于第三方应用的相机打开请求,终端设备会打开前置副摄,以保证在前置主摄损坏的情况下,也能正确的打开前置类型的摄像头模组,避免了想要打开前置摄像头但是打开了后置摄像头的异常情况。
181.上述介绍的是前置类型的主摄像头模组或者后置类型的主摄像头模组损坏的场景,实际场景中,也可能出现前置类型的主摄像头模组和后置类型的主摄像头模组均损坏的场景。
182.示例性的,假设前置类型的主摄像头模组和后置类型的主摄像头模组均损坏,在第三方应用请求打开前置主摄或者后置主摄时,摄像头驱动检测不到该前置类型的主摄像头模组或后置类型的主摄像头模组,则camera hal server检测到存在重大错误,其中摄像头模组损坏会导致camera hal server单元重启,重启后camera hal server重新生成摄像头模组的逻辑标识与框架层标识之间的映射关系时,将略过该前置类型的主摄像头模组和后置类型的主摄像头模组进行排序设置,重新生成的摄像头模组的逻辑标识与框架层标识之间的映射关系可以如表6所示。
183.表6
[0184][0185][0186]
本技术实施例中,表6中各标识的排序规律与表1相同,表6中的框架层标识,各个摄像头模组对应的框架层标识都减2(因为排序时略过了损坏的前置类型的主摄像头模组和后置类型的主摄像头模组)。而逻辑标识是除了后置副摄1之外的其余摄像头模组都减1。
[0187]
示例性的,在表6的映射关系中,第一框架层标识为0,第二框架层标识为1。
[0188]
首先校验第一框架层标识0对应摄像头模组是否为后置类型。参照表6,第一框架层标识0对应的摄像头模组是后置副摄2,因此可以确认是后置类型的摄像头模组,无需进行调整。
[0189]
然后接着校验第二框架层标识1对应摄像头模组是否为前置类型。参照表6,第二框架层标识1对应的摄像头模组是前置副摄,因此可以确认是前置类型的摄像头模组,同样无需进行调整。
[0190]
结合表6可以确定的是,基于重新生成的映射关系,在当第三方应用需要打开后置类型的摄像头模组时,打开的是后置副摄2,刚好是后置类型的摄像头模组;当第三方应用需要打开前置类型的摄像头模组时,打开的是前置副摄,刚好是前置类型的摄像头模组。
[0191]
若前置类型的主摄像头模组和后置类型的主摄像头模组损坏时重新生成映射关系时的排序与上述表6中的排序规律不同,导致框架层标识0对应的不是后置类型的摄像头模组,和/或,导致框架层标识1对应的不是前置类型的摄像头模组,则也可以按照步骤s601~步骤s607校验调整。
[0192]
基于上述介绍可以确定的是,本技术实施例为了使映射关系中不出现乱序,是先将框架层标识0对应的逻辑标识指示的摄像头模组调整为后置类型的摄像头模组,再将框架层标识1对应的逻辑标识指示的摄像头模组调整为前置类型的摄像头模组。
[0193]
本技术实施例中,第二目标框架层标识为映射关系中大于第二框架层标识的框架层标识,且对应的逻辑标识所指示的摄像头模组为前置类型,因此,将第二框架层标识与第二目标框架层标识进行交换后,终端设备可以打开第二框架层标识对应的逻辑标识所指示的摄像头模组,克服了因摄像头模组损坏导致camera hal server单元重启后重新生成的映射关系发生错乱,使得打开错误的摄像头模组的问题,实现了在前置类型的主摄像头模组损坏的情况下,依然可以打开前置类型的摄像头模组的效果,使得用户可以使用前置类型的摄像头模组,在不维修损坏的摄像头模组的情况下有效提升了用户体验。
[0194]
本技术实施例对上述步骤s606和步骤s607的执行顺序不作具体限制。
[0195]
可选的,第二目标框架层标识为多个前置类型的摄像头模组所对应的框架层标识中最小的。
[0196]
可能的实现中,camera hal server单元所维护的预设表中,各前置类型的摄像头模组的框架层标识可以满足条件:像素越高的前置类型的摄像头模组的框架层标识越小。因此,为了在前置类型的主摄像头模组损坏的情况下仍可以获得较好的像素,可以使第二目标框架层标识为多个前置类型的摄像头模组所对应的框架层标识中最小的。
[0197]
但是与上述介绍的类似,摄像头模组的框架层标识的大小和摄像头模组的像素并不具备绝对的关联关系,这还是取决于终端设备的实际实现,因此本技术中的第二目标框架层标识还可以理解为:多个前置类型的摄像头模组中像素最好的摄像头模组所对应的框架层标识,至于具体怎么确定出这个像素最好的摄像头模组,可以取决于实际实现。
[0198]
s608:摄像头模组的逻辑标识与框架层标识之间的映射关系校验调整完成。
[0199]
本技术实施例中,通过动态调整映射关系中的第一框架层标识和第二框架层标识,使得终端设备在接收到后置类型的摄像头模组对应的框架层标识时,打开的是后置类型的摄像头模组,在接收到前置类型的摄像头模组对应的框架层标识时,打开的是前置类型的摄像头模组,克服了因摄像头模组损坏,camera hal server单元重启后重新生成的映射关系发生错乱而导致的打开错误的摄像头模组的问题。
[0200]
在一种可能的实现中,第一框架层标识为相机通用编程规范中后置类型的主摄像头模组所对应的框架层标识,第二框架层标识为相机通用编程规范中前置类型的主摄像头模组所对应的框架层标识。
[0201]
本技术实施例中,将第一框架层标识确定为后置类型的主摄像头模组所对应的框架层标识,将第二框架层标识确定为前置类型的主摄像头模组所对应的框架层标识,可以实现针对主摄像头模组损坏时的场景校验,从而调整摄像头模组的逻辑标识与框架层标识之间的映射关系。而当仅仅是副摄像头模组损坏时,可以不进行校验调整。因为第三方应用仅具备调用前置主摄和后置主摄的权限,而校验调整也会占用终端设备一定的计算资源,因此,当主摄像头模组损坏时进行校验调整,可以在确保用户在使用第三方应用打开相机时,终端设备能够打开正确类型的摄像头模组,但是当仅副摄像头模组损坏时,不进行校验调整,从而可以减少计算资源的占用。
[0202]
在上述实施例的基础上,为了更清楚的描述本技术的技术方案,请参见图7。示例性的,图7示出了本技术实施例提供的一种摄像头模组的映射关系调整方法的流程示意图三。如图7所示,该方法可以包括:
[0203]
s701:拉起hal层的相机服务(camera hal server)单元。
[0204]
本技术实施例中,camera hal server单元可以在终端设备开机阶段启动,并在camera hal server单元检测到错误时重启。
[0205]
一种可能的实现中,在终端设备开机时,camera hal server单元也处于运行状态,camera hal server单元可以调用摄像头驱动检测各个摄像头模组,之后根据检测的结果生成上述介绍的映射关系。
[0206]
另一种可能的实现中,当摄像头模组损坏之后,若接收到了针对该损坏的摄像头模组的相机打开请求,则在处理的过程中摄像头驱动无法检测到该摄像头模组,此时可以确认检测到错误,摄像头模组损坏会使得camera hal server单元重启,以重新生成上述介绍的映射关系。
[0207]
s702:camera hal server单元向摄像头驱动发送指示检测的消息。
[0208]
本技术实施例中,指示检测的消息可以用于指示摄像头驱动对各个摄像头模组进行检测,以确认各个摄像头模组是否正常。
[0209]
s703:摄像头驱动向camera hal server单元返回检测结果。
[0210]
其中,检测结果就用于指示各个摄像头模组是否正常。
[0211]
s704:camera hal server单元生成并保存摄像头模组的逻辑标识与框架层标识之间的映射关系。
[0212]
camera hal server单元根据摄像头驱动返回的检测结果生成映射关系,并对映射关系进行保存。其中重新生成的映射关系中各标识按照排序规律生成,该排序规律可以包括生成映射关系时逻辑标识的排序规律和框架层标识的排序规律。
[0213]
示例性的,逻辑标识的排序规律可以为:根据各个摄像头模组各自的bin文件(二进制文件)的ascii值排序,然后针对排序后的摄像头模组从小到大依次分配逻辑标识。
[0214]
例如按照各个摄像头模组各自的bin文件的ascii值排序后的顺序为:后置副摄1、后置主摄、后置副摄2、后置副摄3、前置副摄、前置主摄,然后按照这个排序,对各个摄像头模组依次分配从0~5的逻辑标识,如表1所示。
[0215]
示例性的,框架层标识的排序规律可以为:将0确定为后置类型的主摄像头模组的框架层标识,将1确定为前置类型的主摄像头模组的框架层标识,接下来按照一个后置类型的摄像头模组、一个前置类型的摄像头模组、再一个后置类型的摄像头模组、再一个前置类型的摄像头模组的顺序进行递增排序,如表1所示。
[0216]
在实际实现过程中,针对未检测到的摄像头模组,在生成逻辑标识和框架层标识的时候就会跳过。
[0217]
需要说明的是,本技术实施例中的排序规律仅为示例性说明,并不构成对本技术实施例的具体限定。
[0218]
s705:camera hal server单元校验生成的映射关系是否存在异常,若存在异常,调整映射关系。
[0219]
s706:若存在异常,通知用户摄像头模组存在异常。
[0220]
步骤s705~s706的具体实现可以参照上述步骤s602~s607,在此不再赘述。
[0221]
之后camera hal server单元保存调整后的映射关系,在camera hal server单元下一次重启前或者说在下一次调整映射关系前,若用户启动第三方应用的相机,则使用该调整后的映射关系。
[0222]
在一种可能的实现中,在步骤s706之后,该方法还可以包括:
[0223]
s707:在应用程序层获取针对第一摄像头模组的打开请求,打开请求中包括第一摄像头模组对应的框架层标识。
[0224]
本技术实施例中,第一摄像头模组可以为后置类型的主摄像头模组或者前置类型的主摄像头模组。
[0225]
s708:应用程序层将打开请求发送至应用程序框架层,以使得应用程序框架层将打开请求发送至hal层的相机服务单元。
[0226]
示例性的,应用程序层将打开请求发送至应用程序框架层的相机服务单元,以使得应用程序框架层的相机服务单元将打开请求发送至hal层的相机服务单元。
[0227]
s709:hal层的相机服务单元根据打开请求,获取第一摄像头模组对应的框架层标
识,并根据映射关系,获取与第一摄像头模组对应的框架层标识相对应的逻辑标识。
[0228]
可能的实现中,hal层的相机服务单元接收到打开请求后,可以根据映射关系确定需要打开的摄像头模组的逻辑标识,具体的,可以根据第一摄像头模组对应的框架层标识读取映射关系中与第一摄像头模组对应的框架层标识相对应的逻辑标识。
[0229]
s710:hal层的相机服务单元根据与第一摄像头模组对应的框架层标识相对应的逻辑标识,打开第二摄像头模组。
[0230]
可能的实现中,hal层的相机服务单元根据第一摄像头模组的逻辑标识确定相应的摄像头驱动,并向该摄像头驱动发送打开摄像头模组的信息,摄像头驱动响应于打开摄像头模组的信息,可以打开第二摄像头模组。
[0231]
本技术实施例中,当需要打开的第一摄像头模组正常工作时,第二摄像头模组与第一摄像头模组是相同的,而当需要打开的第一摄像头模组出现异常无法检测到的时候,第二摄像头模组与第一摄像头模组就是不同的。
[0232]
示例性的,以第三方应用要打开的第一摄像头模组是后置主摄为例,那么第一摄像头模组的框架层标识就是0。当后置类型的主摄像头模组和前置类型的主摄像头模组均未损坏时,此时的映射关系可以参见表1,那么根据框架层标识0打开的第二摄像头模组就是后置主摄。
[0233]
或者,假设以第三方应用要打开的第一摄像头模组是前置主摄,那么第一摄像头模组的框架层标识就是1。若前置类型的主摄像头模组损坏时,此时的映射关系可以参见表2,调整后的映射关系可以参见表5,那么根据框架层标识1打开的第二摄像头模组就是前置副摄。
[0234]
或者,假设以第三方应用要打开的第一摄像头模组是后置主摄,那么第一摄像头模组的框架层标识就是0。若后置类型的主摄像头模组损坏时,此时的映射关系可以参见表3,调整后的映射关系可以参见表4,那么根据框架层标识0打开的第二摄像头模组就是后置副摄2。
[0235]
本技术实施例中,使用调整后的映射关系确认最终打开的摄像头模组,由于调整后的映射关系中,后置类型的摄像头模组的框架层标识与后置类型的摄像头模组的逻辑标识相对应,前置类型的摄像头模组的框架层标识与前置类型的摄像头模组的逻辑标识相对应,因此,即使有摄像头模组损坏未维修,但在用户需要打开前置类型的摄像头模组的场景中仍可以打开前置类型的摄像头模组,在用户需要打开后置类型的摄像头模组的场景中仍可以打开后置类型的摄像头模组,克服了因摄像头模组损坏造成的相机启动异常或者预览异常的问题,有助于提升用户的使用体验。
[0236]
上面已对本技术实施例的摄像头模组的映射关系调整方法进行了说明,下面对本技术实施例提供的执行上述摄像头模组的映射关系调整方法的装置进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本技术实施例提供的相关装置可以执行上述摄像头模组的映射关系调整方法中的步骤。
[0237]
图8为本技术实施例提供的一种摄像头模组的映射关系调整装置的结构示意图。如图8所示,该装置80包括:获取模块801、第一调整模块802、第二调整模块803;其中,
[0238]
获取模块801,用于获取摄像头模组的逻辑标识与框架层标识之间的映射关系;
[0239]
第一调整模块802,用于校验映射关系中第一框架层标识对应的逻辑标识所指示
的摄像头模组是否为后置类型,若否,则对第一框架层标识进行调整,以使得第一框架层标识与后置类型的摄像头模组的逻辑标识相对应;
[0240]
第二调整模块803,用于校验映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组是否为前置类型,若否,则对第二框架层标识进行调整,以使得第二框架层标识与前置类型的摄像头模组的逻辑标识相对应。
[0241]
在一种可能的实现方式中,第一调整模块802,具体用于:
[0242]
在映射关系中所包含的多个框架层标识中,获取大于第一框架层标识的多个框架层标识;
[0243]
在大于第一框架层标识的多个框架层标识中确定第一目标框架层标识,第一目标框架层标识对应的逻辑标识所指示的摄像头模组为后置类型;
[0244]
将第一框架层标识与第一目标框架层标识进行交换。
[0245]
在一种可能的实现方式中,第一目标框架层标识为多个后置类型的摄像头模组所对应的框架层标识中最小的。
[0246]
在一种可能的实现方式中,第二调整模块803,具体用于:
[0247]
在映射关系中所包含的多个框架层标识中,获取大于第二框架层标识的多个框架层标识;
[0248]
在大于第二框架层标识的多个框架层标识中确定第二目标框架层标识,第二目标框架层标识对应的逻辑标识所指示的摄像头模组为前置类型;
[0249]
将第二框架层标识与第二目标框架层标识进行交换。
[0250]
在一种可能的实现方式中,第二目标框架层标识为多个前置类型的摄像头模组所对应的框架层标识中最小的。
[0251]
在一种可能的实现方式中,第一框架层标识为相机通用编程规范中后置类型的主摄像头模组所对应的框架层标识,第二框架层标识为相机通用编程规范中前置类型的主摄像头模组所对应的框架层标识。
[0252]
在一种可能的实现方式中,第一框架层标识为0,第二框架层标识为1。
[0253]
在一种可能的实现方式中,装置还包括:
[0254]
输出模块,用于若映射关系中第一框架层标识对应的逻辑标识所指示的摄像头模组不为后置类型,或者,若映射关系中第二框架层标识对应的逻辑标识所指示的摄像头模组不为前置类型,则输出提示信息,提示信息用于提示摄像头模组异常。
[0255]
在一种可能的实现方式中,装置还包括:
[0256]
获取请求模块,用于在应用程序层获取针对第一摄像头模组的打开请求,打开请求中包括第一摄像头模组对应的框架层标识;
[0257]
发送模块,用于应用程序层将打开请求发送至应用程序框架层,以使得应用程序框架层将打开请求发送至hal层的相机服务单元;
[0258]
获取标识模块,用于相机服务单元根据打开请求,获取第一摄像头模组对应的框架层标识,并根据映射关系,获取与第一摄像头模组对应的框架层标识相对应的逻辑标识;
[0259]
启动模块,用于根据与第一摄像头模组对应的框架层标识相对应的逻辑标识,打开第二摄像头模组。
[0260]
本实施例提供的装置80,可用于执行上述方法实施例的技术方案,其实现原理和
技术效果类似,本实施例不再赘述。
[0261]
本技术实施例提供的摄像头模组的映射关系调整方法,可以应用在具备通信功能的电子设备中。电子设备包括终端设备,终端设备的具体设备形态等可以参照上述相关说明。
[0262]
本技术实施例提供一种终端设备,图9为本技术实施例提供的又一种终端设备的硬件结构示意图。
[0263]
如图9所示,该终端设备90包括:处理器901和存储器902;存储器902存储计算机执行指令;处理器901执行存储器902存储的计算机执行指令,使得终端设备90执行上述方法。
[0264]
当存储器902独立设置时,该终端设备90还包括总线903,用于连接所述存储器902和处理器901。
[0265]
本技术实施例提供一种芯片。芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
[0266]
本技术实施例还提供了一种计算机可读存储介质。计算机可读存储介质存储有计算机程序。计算机程序被处理器执行时实现上述方法。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或者在计算机可读介质上传输。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
[0267]
一种可能的实现方式中,计算机可读介质可以包括ram,rom,只读光盘(compact disc read-only memory,cd-rom)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(digital subscriber line,dsl)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,dsl或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(digital versatile disc,dvd),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
[0268]
本技术实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行上述方法。
[0269]
本技术实施例是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0270]
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细
说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
当前第1页1  
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图