掌桥专利:专业的专利平台
掌桥专利
首页

一种回调流的处理方法及设备

文献发布时间:2023-06-19 10:11:51


一种回调流的处理方法及设备

技术领域

本申请实施例涉及电子技术领域,尤其涉及一种回调流的处理方法及设备。

背景技术

目前,电子设备上越来越多的应用程序(application,APP)加入了使用相机的功能。例如,APP可以使用相机进行拍照、扫码、视频聊天或增强现实(augmented reality,AR)等处理。用户通过APP使用相机的操作也越来越频繁。

其中,APP使用相机功能的场景一般涉及相机的预览流(previewStream),部分场景也涉及到回调流(callbackStream)。例如,扫码、视频聊天或AR等场景涉及回调流,可以称为回调流场景。

在现有技术中,对于回调流场景,参见图1A,APP可以调用openCamera()接口启动相机,而后APP可以调用startPreview()接口开始预览。在开始预览后,电子设备中的硬件抽象层(hardware abstraction layer,HAL)可以创建预览流。而后,APP还可以进行自动对焦等初始化处理。之后,APP可以设置回调函数。在设置回调函数之后,HAL层可以先停止之前的预览流,再创建一个新的预览流,并在该新的预览流成功创建后,再创建一个回调流。之后,APP在回调流创建成功后,通过回调函数获取回调流数据,并根据回调流数据进行处理。

在图1A所示的方案中,用户通过APP调用相机时,APP需要较长时间才能获取到回调流数据,从而才能根据回调流数据进行处理,因而APP的处理耗时较长,用户体验较差。

发明内容

本申请实施例提供一种回调流的处理方法及设备。在回调流场景下,电子设备可以并行设置预览流和回调流,从而提前拉起回调流并获取回调流数据。在应用程序设置回调函数后,电子设备可以直接将回调流数据通过回调函数返回给应用程序进行处理,从而可以缩短电子设备创建预览流和回调流的耗时,减少应用程序获取回调流数据的时间,减少应用程序的处理耗时和用户的等待时长,提高用户使用体验。

为达到上述目的,本申请实施例采用如下技术方案:

一方面,本申请实施例提供了一种回调流的处理方法,应用于电子设备,该方法包括:电子设备检测到用户使用第一应用程序的第一功能的第一操作。响应于第一操作,电子设备启动相机应用,并显示第一功能对应的第一界面。之后,电子设备并行创建预览流和第一回调流。然后,电子设备获取第一数据,该第一数据为第一回调流对应的回调流数据。电子设备设置回调函数,将第一数据通过回调函数提供给第一应用程序进行处理,以实现第一功能。

这样,与现有技术中电子设备串行创建预览流和回调流相比,电子设备可以并行创建预览流和回调流,从而可以减少电子设备创建预览流和回调流的耗时,减少第一应用程序获取回调流数据的时长,缩短第一应用程序对回调流数据进行处理从而实现第一功能的时长,从而减少了用户使用第一功能的等待时长,提高了用户体验。

可以理解的,第一应用程序仅仅是一个称呼,用于与其他应用程序区分,第一应用程序可以用目标应用程序、某一应用程序、特定应用程序、预设应用程序、微信、支付宝、QQ、facetime、skype、淘宝、美团或京东等应用程序代替。

可以理解的,第一功能仅仅用于与其他功能区分,第一功能可以用特定功能、预设功能、目标功能、某一功能、扫码功能,视频聊天功能、增强现实AR功能、智慧识物功能、扫题功能、扫银行卡功能或扫证件功能等功能代替。

可以理解的,第一操作仅仅是一个称呼,用于与其他操作区分。第一操作可以用输入操作、点击操作、手势输入操作、或者语音输入操作等操作代替。

在一种可能的实现方式中,电子设备包括参数匹配库,参数匹配库包括至少一个场景参数组,场景参数组包括应用程序的包名、活动名和页面名。在电子设备并行创建预览流和第一回调流之前,该方法还包括:电子设备获取第一界面对应的第一场景参数组。电子设备确定第一场景参数组与参数匹配库中的场景参数组匹配。

也就是说,电子设备在确定第一界面对应第一场景参数组与参数匹配库中的场景参数组匹配时,可以确定当前为回调流场景,从而可以并行创建预览流和第一回调流。

在另一种可能的实现方式中,在电子设备显示第一功能对应的第一界面之后,该方法还包括:电子设备获取第一界面对应的第一应用程序的第一包名。电子设备从参数匹配库中,查找包括第一包名的参考场景参数组。电子设备确定第一场景参数组与参数匹配库中的场景参数组匹配,包括:电子设备确定第一场景参数组与参考场景参数组匹配。

在该方案中,电子设备可以先从参数匹配库中大量的参考场景参数组,找出包括第一包名且数量较少的参考场景参数组,以便电子设备根据数量较少的参考场景参数组快速确定当前是否为回调流场景。

在另一种可能的实现方式中,参数匹配库中的至少一个场景参数组集成于第一应用程序的打包文件中。或者,参数匹配库中的至少一个场景参数组是服务器推送的。或者,参数匹配库中的至少一个参数组是电子设备学习获得的。

也就是说,电子设备可以通过多种方式获得该参数匹配库中的参考场景参数组。

在另一种可能的实现方式中,该方法还包括:若第一场景参数组与参数匹配库中的场景参数组不匹配,则电子设备创建预览流。若电子设备设置了回调函数,则电子设备创建第二回调流。而后,电子设备获取第二数据,第二数据为第二回调流对应的回调流数据。电子设备将第二数据通过回调函数提供给第一应用程序进行处理。电子设备将第一场景参数组保存到参数匹配库中。

在该方案中,电子设备在确定创建回调流后确定当前为回调流场景,从而可以将第一场景参数包括到参数匹配库中,以便后续电子设备根据参数匹配库中的该第一场景参数确定是否为回调流场景。

在另一种可能的实现方式中,在电子设备获取第一数据之前,该方法还包括:电子设备通过相机应用进行对焦。

这样,电子设备可以将完成对焦后获取到的清晰的图像所对应的回调流数据,返回给第一应用程序,以便第一应用程序根据该回调流数据进行处理,从而实现第一功能。

在另一种可能的实现方式中,第一功能为扫码功能,视频聊天功能、增强现实AR功能、智慧识物功能、扫题功能、扫银行卡功能或扫证件功能。

也就是说,电子设备可以通过上述回调流处理方法实现多种与相机相关的功能。

在另一种可能的实现方式中,电子设备的操作系统包括相机服务,在电子设备确定第一场景参数组与参数匹配库中的场景参数组匹配之后,该方法还包括:相机服务设置标识信息。电子设备并行创建预览流和第一回调流,包括:第一应用程序指示开始预览。相机服务根据标识信息,并行创建预览流和第一回调流。相机服务在创建第一回调流之后,删除标识信息。

也就是说,电子设备可以通过操作系统和标识信息,并行创建预览流和回调流。

在另一种可能的实现方式中,电子设备获取第一数据,包括:相机服务获取第一数据。电子设备设置回调函数,包括:第一应用程序设置回调函数。电子设备将第一数据通过回调函数提供给第一应用程序进行处理,包括:相机服务将第一数据通过回调函数提供给第一应用程序进行处理。

也就是说,电子设备具体可以通过内部的相机服务、第一应用程序等模块,创建回调流并获取回调流数据。

另一方面,本申请实施例提供了一种扫描二维码的方法,应用于电子设备,该方法包括:电子设备在检测到用户对扫码功能的第一操作后,响应于第一操作,启动相机应用。电子设备显示扫码功能对应的第一界面,该电子设备相机的摄像头对准二维码。电子设备在并行创建预览流和回调流之后,根据预览流获取第一数据。电子设备根据第一数据显示二维码的第一图像。电子设备在完成对焦后,根据回调流获取第二数据,第二数据与第一数据具有不同的数据格式。而后,电子设备根据第二数据完成扫码识别,显示扫码成功后的第二界面。

这样,与电子设备串行创建预览流和回调流相比,电子设备可以并行创建预览流和回调流,从而可以减少电子设备创建预览流和回调流的耗时,减少第一应用程序获取回调流数据的时长,缩短第一应用程序对回调流数据进行处理从而实现扫描二维码功能的时长,从而减少了用户使用扫码功能的等待时长,提高了用户体验。

在一种可能的实现方式中,在电子设备完成对焦之前,该方法还包括:电子设备根据回调流获取第三数据,并且电子设备丢弃第三数据。

其中,该第三数据是电子设备在完成对焦之前根据回调流获取的回调流数据。由于在完成对焦之前获取的回调流数据不会上报给APP,因而电子设备可以丢弃该回调流数据。

在另一种可能的实现方式中,在电子设备完成对焦之后,该方法还包括:电子设备根据预览流获取第四数据;电子设备根据第四数据显示二维码的第二图像;第一图像和第二图像中像素点的像素值不同。

其中,该第四数据是电子设备在完成对焦之前根据预览流获取的预览流数据。电子设备在完成对焦之前获取的回调流数据描述的二维码的第一图像通常是模糊的,在完成对焦之后获取的回调流数据描述的二维码的第二图像通常是清晰的,第一图像和第二图像中像素点的像素值不同。

另一方面,本申请实施例提供了一种电子设备,包括:屏幕,用于显示界面;一个或多个处理器;以及存储器,存储器中存储有代码。当代码被电子设备执行时,使得电子设备执行以下步骤:检测到用户使用第一应用程序的第一功能的第一操作;响应于第一操作,启动相机应用;显示第一功能对应的第一界面;并行创建预览流和第一回调流;获取第一数据,第一数据为第一回调流对应的回调流数据;设置回调函数;将第一数据通过回调函数提供给第一应用程序进行处理,以实现第一功能。

在一种可能的实现方式中,电子设备包括参数匹配库,该参数匹配库包括至少一个场景参数组,场景参数组包括应用程序的包名、活动名和页面名。当代码被电子设备执行时,还使得电子设备执行以下步骤:在并行创建预览流和第一回调流之前,获取第一界面对应的第一场景参数组;确定第一场景参数组与参数匹配库中的场景参数组匹配。

在另一种可能的实现方式中,当代码被电子设备执行时,还使得电子设备执行以下步骤:在显示第一功能对应的第一界面之后,获取第一界面对应的第一应用程序的第一包名。从参数匹配库中,查找包括第一包名的参考场景参数组。确定第一场景参数组与参数匹配库中的场景参数组匹配,包括:确定第一场景参数组与参考场景参数组匹配。

在另一种可能的实现方式中,参数匹配库中的至少一个场景参数组集成于第一应用程序的打包文件中;或者,参数匹配库中的至少一个场景参数组是服务器推送的;或者,参数匹配库中的至少一个参数组是电子设备学习获得的。

在另一种可能的实现方式中,当代码被电子设备执行时,还使得电子设备执行以下步骤:若第一场景参数组与参数匹配库中的场景参数组不匹配,则创建预览流;若设置了回调函数,则创建第二回调流;获取第二数据,第二数据为第二回调流对应的回调流数据;将第二数据通过回调函数提供给第一应用程序进行处理;将第一场景参数组保存到参数匹配库中。

在另一种可能的实现方式中,当代码被电子设备执行时,还使得电子设备执行以下步骤:在获取第一数据之前,通过相机应用进行对焦。

在另一种可能的实现方式中,电子设备的操作系统包括相机服务,当代码被电子设备执行时,还使得电子设备执行以下步骤:在确定第一场景参数组与参数匹配库中的场景参数组匹配之后,相机服务设置标识信息。并行创建预览流和第一回调流,具体包括:第一应用程序指示开始预览;相机服务根据标识信息,并行创建预览流和第一回调流;相机服务在创建第一回调流之后,删除标识信息。

在另一种可能的实现方式中,获取第一数据,具体包括:相机服务获取第一数据。设置回调函数,具体包括:第一应用程序设置回调函数。将第一数据通过回调函数提供给第一应用程序进行处理,具体包括:相机服务将第一数据通过回调函数提供给第一应用程序进行处理。

在另一种可能的实现方式中,第一功能为扫码功能,视频聊天功能、增强现实AR功能、智慧识物功能、扫题功能、扫银行卡功能或扫证件功能。

另一方面,本申请实施例提供了一种电子设备,包括:屏幕,用于显示界面;一个或多个处理器;以及存储器,存储器中存储有代码。当代码被电子设备执行时,使得电子设备执行以下步骤:检测到用户对扫码功能的第一操作;响应于第一操作,启动相机应用;显示扫码功能对应的第一界面,该电子设备相机的摄像头对准二维码;并行创建预览流和回调流,根据预览流获取第一数据;根据第一数据显示二维码的第一图像;在电子设备完成对焦之后,根据回调流获取第二数据,第二数据与第一数据具有不同的数据格式;根据第二数据完成扫码识别,显示扫码成功后的第二界面。

在一种可能的实现方式中,当代码被电子设备执行时,还使得电子设备执行以下步骤:在电子设备完成对焦之前,根据回调流获取第三数据;丢弃第三数据。

在另一种可能的实现方式中,当代码被电子设备执行时,还使得电子设备执行以下步骤:在电子设备完成对焦之后,根据预览流获取第四数据;根据第四数据显示二维码的第二图像;第一图像和第二图像中像素点的像素值不同。

另一方面,本申请实施例提供了一种回调流处理装置,该装置包含在电子设备中。该装置具有实现上述方面及可能的设计中任一方法中电子设备行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括至少一个与上述功能相对应的模块或单元。例如,应用程序模块/单元,框架模块/单元,相机模块/单元,场景识别模块/单元等。

另一方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;以及存储器,存储器中存储有代码。当代码被电子设备执行时,使得电子设备执行上述任一方面或任一种可能的实现方式中的回调流处理方法或扫描二维码的方法。

另一方面,本申请实施例提供了一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述任一方面或任一种可能的实现方式中的回调流处理方法或扫描二维码的方法。

又一方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机使得电子设备执行上述任一方面或任一种可能的实现方式中的回调流处理方法或扫描二维码的方法。

另一方面,本申请实施例提供了一种芯片系统,芯片系统应用于电子设备;芯片系统包括一个或多个接口电路和一个或多个处理器;接口电路和处理器通过线路互联;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行上述任一方面或任一种可能的实现方式中的回调流处理方法或扫描二维码的方法。

上述其他方面对应的有益效果,可以参见关于方法方面的有益效果的描述,此处不予赘述。

附图说明

图1A-图1C为现有技术提供的一种创建预览流和回调流的示意图;

图2为本申请实施例提供的一种电子设备的结构示意图;

图3为本申请实施例提供的另一种电子设备的结构示意图;

图4为本申请实施例提供的一种扫描流程图;

图5为本申请实施例提供的一组界面示意图;

图6为本申请实施例提供的另一组界面示意图;

图7A为本申请实施例提供的一种创建预览流和回调流的示意图;

图7B为本申请实施例提供的另一种创建预览流和回调流的示意图;

图7C为本申请实施例提供的另一种创建预览流和回调流的示意图;

图7D为本申请实施例提供的一种扫码界面示意图;

图7E为本申请实施例提供的另一种扫码界面示意图;

图8A为现有技术提供的一种处理回调流请求的时序图;

图8B为本申请实施例提供的一种处理回调流请求的时序图;

图9为本申请实施例提供的一种扫码成功后的界面示意图;

图10A-图10B为本申请实施例提供的一种创建预览流和回调流的示意图;

图11A为现有技术提供的一种扫描过程中的界面示意图;

图11B为本申请实施例提供的一种扫描过程中的界面示意图;

图12为本申请实施例提供的另一种电子设备的结构示意图;

图13为本申请实施例提供的一种回调流处理流程图;

图14为本申请实施例提供的另一种界面示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。

在回调流场景下,不同APP根据自身的业务逻辑,在创建预览流之后再创建回调流的具体时机不同。例如,在一些现有技术中,参见图1B,在APP设置回调函数之后,HAL层可以更新之前的预览流,而后开始创建回调流。之后,APP通过回调函数获取回调流数据,并根据回调流数据进行处理。在其他一些现有技术中,参见图1C,APP在设置回调函数之前,可以不进行对焦或初始化等处理,而直接停止预览流或更新预览流,进行开始创建回调流。

其中,预览流是一个数据流,预览流数据包括相机采集到的图像的数据信息。预览流用于将相机采集的预览画面返回给APP,以便APP在屏幕上显示预览图像。

回调流也是一个数据流,回调流数据包括相机采集到的图像的数据信息。回调流数据用于将相机采集到的图像的数据信息返回给APP,以便APP根据相机采集的图像数据进行处理,以实现特定的功能。例如,电子设备可以根据回调流数据进行扫码时的识别处理,或者视频聊天时的视频编解码及上传处理等,以实现扫码或视频聊天的功能。

例如,在扫码场景下,预览流数据和回调流数据可以包括相机采集到的二维码图像的数据信息。并且,在预览流创建完成后,预览流数据是持续获取并更新的;在回调流创建完成后,回调流数据是持续获取并更新的。

需要说明的是,由于预览流和回调流的功能不同,预览流和回调流返回给APP后的处理方式不同,因而预览流和回调流中包括的相机采集到的二维码图像的数据信息的具体数据格式也可以不同。示例性的,预览流的数据格式可以为format 33HAL_PIXEL_FORMAT_BLOB,或format 34HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED。回调流的数据格式可以为format 35HAL_PIXEL_FORMAT_YCbCr_420_888。

还需要说明的是,在创建预览流和回调流时,电子设备上层的APP需要调用下层的接口,下层的接口还需要通知底层的硬件进行相应的设置,从而才能完成预览流和回调流的创建,获取到预览流数据和回调流数据。因而,预览流和回调流的创建过程需要一定的时间。

在图1A-图1C所示的现有技术中,在回调流场景下,电子设备通过APP启动相机后,串行创建预览流和回调流,并且在创建预览流后经过较长时间才能创建回调流,从而才能获取到回调流数据。因此,APP需要较长时间才能根据回调流数据进行处理,实现APP与相机相关的功能。

举例来说,在图1A-图1C中,启动相机大概需要110ms左右,创建和停止预览流大概各需要100ms左右,更新预览流大概需要50ms左右,创建回调流大概需要300ms左右,自动对焦大概需要360ms左右。这样,在图1A中,电子设备通过APP启动相机到成功创建预览流和回调流的时长,以及电子设备通过APP启动相机到APP获取到回调流数据的时长,均大概可以为1070ms。在图1B中,电子设备通过APP启动相机到成功创建预览流和回调流的时长,以及电子设备通过APP启动相机到APP获取到回调流数据的时长,均大概可以为920ms。在图1C中,电子设备通过APP启动相机到成功创建预览流和回调流的时长,以及电子设备通过APP启动相机到APP获取到回调流数据的时长,均大概可以为560ms。

本申请实施例提供了一种回调流的处理方法,可以应用于电子设备。电子设备通过APP启动相机后,若确定当前为回调流场景,则在APP指示创建预览流时,操作系统也可以创建回调流,即电子设备可以并行设置预览流和回调流,从而提前拉起回调流并获取回调流数据。而后,在APP设置回调函数后,电子设备可以直接将提前获取的回调流数据通过回调函数返回给APP进行处理。因而,与现有技术中串行创建预览流和回调流相比,本申请实施例提供的并行创建预览流和回调流的方法,可以减少电子设备创建预览流和回调流的耗时,减少APP获取回调流数据的耗时,从而减少APP根据回调流数据进行处理以实现相机相关功能的时长,减少用户的等待时长,提高用户的使用体验。

其中,APP调用相机获取回调流可以实现的相机相关的功能可以包括:扫码(二维码、条形码等)、视频聊天、AR、智慧识物、扫题、扫银行卡或扫证件等。例如,该APP可以是微信、支付宝、QQ、facetime、skype、淘宝、美团或京东等。

例如,该电子设备可以是手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personaldigital assistant,PDA)、智能家居设备等。本申请实施例对电子设备的设备类型不作具体限定。

示例性的,图2示出了电子设备100的一种结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。

可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。

在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。

I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。

I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。

PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。I2S接口和PCM接口都可以用于音频通信。

UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。

MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。

GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。

USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。

可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。

电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。

电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。

调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。

无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。

在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。

电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。

在本申请的实施例中,显示屏194可以用于显示应用程序的界面,显示应用程序启动相机后的界面等。

电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。

ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。

摄像头193也称相机,用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。

在本申请的实施例中,相机可以捕获图像数据,并向电子设备100返回预览流和回调流。

数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。

NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。

外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。

在本申请的实施例中,处理器110可以运行存储在内部存储器121的指令,在应用程序调用相机时,在回调流场景下,并行创建预览流和回调流,从而提前拉起回调流并获取回调流数据;后续在应用程序设置回调函数后,直接将提前获取的回调流数据通过回调函数返回给应用程序进行处理,从而可以减少创建预览流和回调流的耗时,减少应用程序获取回调流数据的时间。

电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。

音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。

扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。

受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。

麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。

耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。

压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。

陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。

气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。

磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。

加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。

距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。

接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。

环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。

指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。

温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。

触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。

例如,触摸传感器180K可以检测到用户的触摸操作,该操作用于使用应用程序的与相机相关的功能,该功能需要启动相机来实现。

骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。

按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。

马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。

指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。

SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。

在本申请的实施例中,触摸传感器180K或其他检测部件可以检测到用户使用应用程序与相机相关的功能的操作,该功能需要启动相机。在应用程序启动相机后,处理器110在确定当前为回调流场景时,可以并行创建预览流和回调流,从而提前拉起回调流并获取回调流数据;后续在应用程序设置回调函数后,可以直接将提前获取的回调流数据通过回调函数返回给应用程序进行处理,从而可以减少电子设备创建预览流和回调流的耗时,减少应用程序获取回调流数据的时间,减少应用程序实现相机相关功能的操作时长,减少用户的等待时长,提高用户使用体验。

可以理解的是,为了实现电子设备的回调流处理功能,电子设备包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

例如,在一种划分方式中,参见图3,电子设备可以包括应用程序层,应用程序框架层,HAL层,内核层以及硬件层。其中,应用程序层、应用程序框架层、HAL层和内核层为软件层。

其中,应用程序层可以包括一系列应用程序包。例如,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。

在本申请的实施例中,应用程序层包括可以调用相机以实现第一功能的第一APP。并且,第一APP在调用相机时需要创建回调流。例如,第一APP可以是具有扫码、视频聊天、AR、智慧识物、扫题、扫银行卡或扫证件等功能的应用程序。比如,第一APP可以是支付宝、微信、QQ、facetime或skype等。

应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。

应用程序框架层可以包括活动线程(ActivityThread),相机服务(CameraService)和场景识别系统。

其中,应用程序启动后,操作系统会在应用程序框架层提供相应的活动线程来支持该应用程序的相关调度,执行活动,广播,以及活动管理请求的相关操作等。

相机服务可以用于管理相机,包括相机的启动和停止,预览流和回调流的创建,预览流数据和回调流数据的获取,以及通过回调函数向上层应用程序上报回调流数据等。

场景识别系统,用于识别当前应用场景是否为回调流场景。

其中,应用程序框架层中的API接口可以包括活动线程与场景识别系统之间的第一API接口,以及活动线程与相机服务之间的第二API接口等。

此外,应用程序框架层还可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器或通知管理器等。

窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。

内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。

视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。

电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。

资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。

通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。

HAL层用于将底层硬件抽象化,以为上层提供抽象后的统一的相机服务。

内核层是硬件和软件之间的层。内核层包括相机驱动,显示驱动,音频驱动,以及传感器驱动等。

硬件层包括相机,显示屏,扬声器,以及传感器等硬件。其中,相机用于捕获静态图像或视频。例如,在扫码场景下,相机可以采集二维码的图像画面。物体通过镜头生成光学图像投射到感光元件。感光元件可以是CCD或CMOS光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。例如,该相机可以为图2所示的摄像头193。

以下将以电子设备为具有图2和图3所示结构的手机,第一功能为扫码功能,第一APP为微信为例,对本申请实施例提供的回调流的处理方法进行阐述。

在一些实施例中,第一API接口和第二API接口可以为软件开发工具包(softwaredevelopment kit,SDK)的形式。例如,第一API接口可以为HWSDK接口,第二API接口可以为CameraSDK(或称相机SDK)接口。

参见图4,本申请实施例提供的回调流处理方法可以包括:

401、在手机检测到用户打开微信的操作后,操作系统生成微信对应的活动线程。

用户可以通过多种方式指示打开微信,例如可以点击微信的图标打开微信,可以通过语音指令打开微信,或者可以通过隔空手势指示打开微信等。

示例性的,参见图5中的(a),用户打开微信的操作可以为用户点击微信图标501的操作。

手机在检测到用户打开微信的操作后,手机的操作系统可以生成微信对应的活动线程。

402、屏幕显示微信的界面。

其中,该屏幕可以是图2所示的显示屏194,也可以为显示屏194与触控传感器180K组合成的触控屏。示例性的,手机显示的微信的界面可以参见图5中的(b)。

403、活动线程将微信对应的第一包名(packageName),通过HWSDK接口发送给场景识别系统。

其中,包名为应用程序的标识信息,用于唯一标识一个应用程序。在手机打开微信后,活动线程可以获取到微信对应的第一包名,并发送给手机中的场景识别系统。

404、场景识别系统查找与第一包名对应的参考场景参数组。

场景识别系统包括参数匹配库,该参数匹配库包括回调流场景对应的至少一个场景参数组。该参数匹配库中的场景参数组描述的场景为回调流场景。每个场景参数组均包括一个包名。

场景识别系统中可能保存有大量的场景参数组,场景识别系统可以从大量的场景参数组中,选出数量较少的包括第一包名的参考场景参数组。

其中,场景识别系统中的参数匹配库可以集成在第一APP的打包文件中,并随着第一APP的下载获得。

或者,服务器可以通过人工智能AI进行训练和学习,从而得到回调流场景对应的参数匹配库。手机也可以向服务器请求获取该参数匹配库。或者,该参数匹配库还可以是服务器周期性地推送给手机的,也可以是服务器在回调流场景对应的场景参数组有更新时推送给手机的。

再或者,该参数匹配库也可以是手机在使用过程,通过自身识别到回调流场景时保存的。并且,该参数匹配库还可以随着手机对回调流场景的不断训练和学习进行更新。

405、微信启动相机。

微信在接收到用户使用微信扫码功能的第一操作后,可以调用openCamera接口来启动相机(即相机应用),以通过相机进行扫码操作。

微信在启动相机后,可以执行步骤412以指示开始预览。微信从启动相机到指示开始预览之间需要经过时间t1,例如t1可以为上百毫秒。

微信在启动相机后,还可以执行步骤406-步骤411以确定当前是否为回调流场景。其中,微信从启动相机到获得当前是否为回调流场景的结果之间需要的时长为t2,且t2小于t1。例如,t2可以为几个毫秒。这样,手机可以在确定当前为回调流场景之后,再执行步骤412及后续步骤,从而并行创建预览流和第一回调流。

406、在手机检测到用户使用微信扫码功能的第一操作后,屏幕响应于第一操作显示扫码功能对应的第一界面。

示例性的,参见图5中的(c),用户使用微信扫码功能的第一操作,可以为用户点击扫一扫控件502的操作。

示例性的,参见图5中的(d),第一界面可以为手机开启扫码功能后的扫码界面。

407、活动线程获取第一界面对应的第一场景参数组。

其中,第一场景参数组用于描述第一界面当前所处的场景和状态。其中,每个场景参数组除了可以包括包名以外,还可以包括活动名(activityName)。活动名可以用于标识当前所显示的界面对应的活动(Activity)。不同包名和活动名的组合,可以描述不同的界面场景。例如,第一界面对应的第一场景参数组包括第一包名和第一活动名。

在一些实施例中,同一包名和同一活动名可能对应多个回调流场景的界面,不能唯一标识一个回调流场景的界面,因而场景参数组还可以包括片段名(fragmentName),也称页面名。示例性的,在另一APP中,扫码对应的第一界面可以参见图6中的(a),AR对应的第一界面对应的第一界面可以参见图6中的(b)。扫码对应的第一界面,与AR对应的第一界面对应同一包名和同一活动名,但对应不同的页面名。因而,第一界面对应的第一场景参数组包括第一包名、第一活动名和第一页面名。

408、第一活动线程通过HWSDK接口将第一场景参数组发送给场景识别系统。

409、场景识别系统确定第一场景参数组与参数匹配库中的场景参数组是否匹配。

第一活动线程可以将第一界面对应的第一场景参数组发送给场景识别系统,以便场景识别系统确定第一场景参数组与参数匹配库中的场景参数组是否匹配。

其中,在步骤403-步骤404中已经查找到包括第一包名的,数量较少的参考场景参数组的基础上,场景识别系统可以便捷、快速地确定参考场景参数组是否包括第一场景参数组,即确定第一场景参数组与参数匹配库中的场景参数组是否匹配。

在一些实施例中,手机也可以不执行上述步骤403-步骤404,手机在步骤410中可以依次判定第一场景参数组与参数匹配库中的场景参数组是否匹配。

410、若场景识别系统确定第一场景参数组与参数匹配库中的场景参数组匹配,则通过第一API接口通知活动线程当前为回调流场景。

若第一场景参数组与参数匹配库中的场景参数组匹配,则可以表明第一界面对应的场景为回调流场景。

若第一界面对应的场景为回调流场景,则手机可以开启回调流优化流程,从而提前拉起回调流。

411、活动线程通过CameraSDK接口向相机服务指示第一信息。

其中,该第一信息可以用于表示当前为回调流场景,且指示相机服务开启回调流优化流程,提前拉起回调流。

412、微信通过CameraSDK接口指示开始预览。

微信可以调用CameraSDK接口中的startPreview()接口指示开始预览。

413、相机服务在微信指示开始预览后,根据第一信息并行创建预览流和第一回调流,并通过HAL层下发创建预览流和第一回调流的请求至相机驱动。

微信可以调用startPreview()接口指示开始预览,并通过代码内部处理逻辑通知到相机服务。相机服务根据活动线程指示的第一信息确定当前为回调流场景,从而开启回调流优化处理流程,并行创建预览流和第一回调流。这样,在微信设置回调函数之前,操作系统可以提前拉起第一回调流。

其中,相机服务并行创建预览流和第一回调流包括,如图7A所示,相机服务同时创建预览流和第一回调流。

或者,相机服务并行创建预览流和第一回调流包括,相机服务在开始创建预览流之后,在预览流创建完成之前开始创建第一回调流,即预览流和第一回调流的创建过程在时间上有交叠。示例性的,参见图7B,开始创建第一回调流的时刻与开始创建预览流的时刻之间间隔了时长T,且T小于预览流的创建过程所需的时长,即预览流和第一回调流的创建过程在时间上有交叠。

或者,相机服务并行创建预览流和第一回调流包括,相机服务在开始创建第一回调流之后,在第一回调流创建完成之前开始创建预览流,即预览流和第一回调流的创建过程在时间上有交叠。示例性的,参见图7C,开始创建预览流的时刻与开始创建第一回调流的时刻之间间隔了时长T,且T小于第一回调流的创建过程所需的时长,即预览流和第一回调流的创建过程在时间上有交叠。

在一些实施例中,步骤411中的第一信息可以是标志位(flag);手机在步骤413中根据该标志位设置第一回调流;在步骤413之后,手机可以删除该标志位,以避免下次在非回调流场景中,相机服务直接根据该标志位提前拉起回调流。

414、相机驱动下发创建预览流和第一回调流的请求至相机硬件。

415、相机硬件针对预览流进行相应设置,获取预览流数据,并通过HAL层向相机服务返回预览流和预览流创建成功的通知消息。

其中,预览流从开始创建到创建成功需要一定的创建时间,例如可以为100ms左右。可以理解的是,在预览流创建成功后,预览流数据是持续获取的。

416、相机硬件针对第一回调流进行相应设置,获取第一回调流对应的回调流数据,并通过HAL层向相机服务返回第一回调流的回调流数据和第一回调流创建成功的通知消息。

其中,第一回调流从开始创建到创建成功也需要一定的创建时间,例如可以为300ms左右。可以理解的是,在第一回调流创建成功后,第一回调流的回调流数据是持续获取的。

417、相机服务将预览流数据返回给微信。

相机服务将预览流数据返回给微信,以便微信根据预览流数据进行相关处理。例如,微信可以根据预览流数据在第一界面上显示第一图像。示例性的,显示第一图像后的第一界面可以参见图7D。

可选地,手机还可以根据自身的业务逻辑进行对焦等初始化处理。例如,该方法还可以包括步骤418:

418、微信通过CameraSDK接口指示进行对焦处理。

其中,微信可以调用CameraSDK接口中的autoFocus()接口指示进行自动对焦处理,并通过代码内部处理逻辑通知到相机服务。相机服务可以通过HAL层指示相机硬件进行对焦处理。

在对焦完成后,微信可以通过第一界面向用户展示对焦后的清晰的预览图像,即预览流中最新的预览流数据为相机硬件采集到的清晰的图像的数据信息。示例性的,对焦处理后屏幕在第一界面上显示的第二图像可以参见图7E。

在对焦完成之后,微信根据预览流数据显示的第二图像包括清晰的二维码图像。而在对焦完成之前,微信根据预览流数据显示的第一图像可能包括模糊的二维码图像,还可能仅包括部分二维码图像,也可能包括较为清晰的二维码图像。相对应的,第一图像和第二图像中二维码的像素点的像素值是不同的。

419、微信通过CameraSDK接口设置回调函数。

微信可以根据自身的业务逻辑确定设置回调函数的时机(例如在对焦处理后),并在该时机调用CameraSDK接口中的回调函数接口来设置回调函数。例如,该回调函数接口可以包括setCallback()接口、setPreviewCallback()接口、setOneShotPreviewCallback()接口或addCallbackBuffer()接口等。

420、相机服务直接将创建第一回调流后获取的回调流数据,通过回调函数返回给微信。

微信调用回调函数接口后,可以通过代码内部处理逻辑通知到相机服务。若相机服务确定当前未创建有回调流,则开始创建回调流。而在本申请的实施例中,相机服务确定之前已经创建了第一回调流,因而不再创建回调流,也不需要向底层下发创建回调流的请求,而可以直接将提前创建的第一回调流获取的回调流数据通过回调函数返回给微信,以便微信进行处理。因而,微信设置回调函数后,相机服务并未再创建回调流,未产生再次创建回调流的耗时。

值得说明的是,在第一回调流创建成功后,在对焦完成前/后,第一回调流的回调流数据均是持续获取并更新的。在扫码场景下,由于对焦完成前获取的回调流数据可能是模糊的二维码图像对应的无效信息;还可能仅包含部分的二维码信息;也可能与对焦完成后获取的预览流数据一样,包括完整的二维码信息。但在对焦完成之前,由于回调流数据不会上报给APP,因此相机服务获取的回调流数据可以丢弃;在对焦完成之后,相机服务获取的最新的回调流数据可以上报给微信进行处理。

可以理解的是,在视频聊天等不需要对焦的场景下,回调流数据是持续返回给视频聊天应用程序的,不会被舍弃。

这样,手机在通过微信启动相机后,若确定当前为回调流场景,则可以在微信指示创建预览流时并行创建第一回调流,从而可以提前拉起第一回调流并获取回调流数据。后续,在微信设置回调函数后,相机服务不再创建回调流,而直接将提前获取的回调流数据通过回调函数返回给微信。从而,与现有技术中串行创建预览流和回调流相比,手机并行创建预览流和第一回调流,减少了手机创建预览流和回调流的耗时,从而减少了微信获取回调流数据的时长。

示例性的,图8A和图8B分别示出了现有技术和本申请实施例分别对应的,使用手机性能分析工具获取到的手机处理器的工作时序图。其中,位置1表示相机启动后申请内存的操作;位置2表示处理回调流创建请求的操作。对比图8A和图8B可知,现有技术中在相机启动后很长时间后,才开始创建回调流;而本申请实施例提供的方法在相机启动后,很快就预先创建了回调流。

421、微信对获取到的回调流数据进行处理,实现扫码功能。

微信在获取到回调流数据后,可以进行识别等处理,从而实现微信的扫码功能。其中,二维码是用特定的几何图形按照一定的规律在平面(二维方向)上分布的黑白相间的图形来记录数据符号信息的。微信可以对回调流数据描述的二维码图像的黑白像素矩阵进行解析,获得黑白像素矩阵对应的数据符号信息,从而根据该数据符号信息进行识别、链接等进一步处理。

422、屏幕显示扫码成功后的第二界面。

示例性的,手机扫描的是华为招聘公众号的二维码,扫码成功后的第二界面可以为如图9所示的华为招聘的公众号页面。

在步骤401-步骤422描述的方案中,手机并行设置了预览流和第一回调流。在微信指示设置回调函数后,相机服务不需要再创建回调流,而可以直接将之前创建的回调流的回调流数据返回给微信。手机创建预览流和回调流的耗时较短,微信获取到回调流数据的时间较短。而在现有技术中,手机在创建预览流后串行设置了回调流,且串行创建预览流和创建回调流之间可能间隔了较长时间,因而微信获取到回调流数据的时间较长。

举例来说,对比图1A和图1B所示的回调流处理流程,本申请实施例提供的回调流处理流程可以参见图10A。在图10A所示情况下,手机通过应用程序启动相机到成功创建预览流和回调流的时长大概可以为410ms;手机通过应用程序启动相机到应用程序获取到回调流数据的时长,大概可以为570ms;410ms和570ms均明显小于1070ms和920ms。

对比图1C所示的回调流处理流程,本申请实施例提供的回调流处理流程可以参见图10B。在图10B所示情况下,手机通过应用程序启动相机到成功创建预览流和回调流的时长,以及手机通过应用程序启动相机到应用程序获取到回调流数据的时长,大概可以为410ms,明显小于560ms。

可见,与现有技术中串行设置预览流和回调流相比,本申请实施例通过并行设置预览流和回调流,可以节省创建预览流和回调流的时长,使得应用程序获取到回调流数据的时间更短,从而可以使得扫码过程更快。

示例性的,在扫码场景下,现有技术对应的扫码过程的时序图可以参见图11A;本申请实施例提供的方法对应的扫码过程的时序图可以参见图11B。对比,图11A和图11B可知,采用本申请实施例提供的方法可以使得扫码耗时更短,扫码速度更快。

因而,在本申请实施例提供的方案中,手机在通过微信启动相机后,若确定当前为回调流场景,则手机在微信指示创建预览流时也并行创建了第一回调流,从而可以预先获取回调流数据。后续,在微信根据自身业务处理逻辑设置回调函数后,相机服务不用再创建回调流,而可以直接将之前获取的回调流数据通过回调函数返回给微信。因而,与现有技术中串行创建预览流和回调流相比,手机通过并行创建预览流和回调流,减少了微信创建预览流和回调流的时长,从而减少了微信获取回调流数据的时长,缩短了微信根据回调流数据进行处理从而实现扫码等回调流业务的时长,减少了用户使用扫码等功能时的等待时间,提高了用户的使用体验。

此外,若手机上的参数匹配库为空(例如手机上未设置有参数匹配库);或者,参数匹配库未包括第一场景参数组,则场景识别系统在上述步骤409中确定第一场景参数组与参数匹配库中的场景参数组不匹配。此时,手机可以按照现有技术中的流程创建预览流或者创建预览流和第二回调流,进而根据获取的数据实现相关功能。

在后续流程中,若第一APP根据自身的业务逻辑创建了第二回调流,则可以表明第一界面为回调流业务场景,手机之前可能未经过训练和学习,或者参数匹配库未学习到第一场景参数组。因而,手机可以将第一场景参数组保存至参数匹配库中,以便下次根据参数匹配库中保存的该第一场景参数组,确定第一场景参数组对应的界面场景为回调流场景,从而提前、快速拉起回调流。

以上主要是以回调流场景为扫码场景为例进行说明的。本申请实施例提供的回调流的处理方法还可以应用于其他回调流场景。例如,在skype的视频聊天场景中,采用本申请实施例提供的回调流的处理方法,同样可以减少手机创建预览流和回调流的耗时,减少skype应用程序获取回调流数据的时间,从而使得skype应用程序能够更快地对回调流数据进行编码、压缩和上传等处理,减少skype的处理时长,使得聊天对端能够快速接收到本端发送的图像数据,使得聊天过程中对端显示的图像的实时性更好,用户体验也更好。

再例如,在另一种划分方式中,参见图12,电子设备可以包括应用程序、框架模块、相机模块和场景识别模块。

其中,该应用程序可以为上述第一APP。框架模块可以包括多种API接口,可以为应用程序提供基础框架,且各模块之间的协作流程均在框架模块完成。

具体的,应用程序可以调用框架模块的API接口来启动相机。框架模块可以将当前界面场景传递给场景识别模块,获取是否为回调流场景的场景识别结果。框架模块根据场景识别结果,确定是否开启回调流优化流程。若确定开启回调流优化流程,则框架模块通知相机模块开启回调流优化流程。此外,框架模块还可以接收相机模块上传的预览数据流和回调数据流,并上传给应用程序进行使用和处理。

场景识别模块可以包括AI模块和识别模块。AI模块可以用于对回调流场景的场景参数组进行训练,并将训练结果存放在参数匹配库中。识别模块可以用于根据框架模块提供的第一场景参数组,结合参数匹配库中的场景参数组,进行回调流场景的识别,并返回对应的识别结果给框架模块。

相机模块可以包括相机服务、HAL层以及驱动和硬件。相机模块用于实现应用程序与相机相关的功能的图像和数据的抓取,并返回给框架模块;以及实现回调流的优化处理流程。

回调流的优化处理流程包括:当相机服务接收到框架模块开启优化的通知后,设置标识信息。当框架模块进入预览流程后,相机服务开启回调流优化流程,并行化创建预览流和回调流,然后将预览流和回调流的创建请求通过HAL层发送到驱动中,等待预览流数据和回调流数据的返回。

以上主要是从电子设备各模块的角度,来描述本申请实施例提供的回调流处理方法的。电子设备各模块执行的操作也就是电子设备执行的操作。从电子设备的角度来说,电子设备可以采用如图13所示的流程,执行本申请以上实施例提供的回调流的处理方法。该方法可以包括:

1301、电子设备显示第一应用程序的界面。

示例性的,第一应用程序可以为微信,第一应用程序的界面可以为图5中的(b)所示的界面。

1302、电子设备检测到用户使用第一应用程序的第一功能的第一操作。

示例性的,第一应用程序可以为微信,第一功能可以为扫码功能,第一操作可以为用户点击图5中的(c)所示的扫一扫控件502的操作。

1303、电子设备响应于第一操作,启动相机应用。

1304、电子设备显示第一功能对应的第一界面。

示例性的,该第一界面可以为图5中的(d)所示的扫码界面。

1305、电子设备并行创建预览流和第一回调流。

1306、电子设备获取第一数据,第一数据为第一回调流对应的回调流数据。

1307、电子设备设置回调函数。

1308、电子设备将第一数据通过回调函数提供给第一应用程序进行处理,以实现第一功能。

在一些实施例中,该方法还可以包括:

1309、电子设备在实现第一功能后显示第二界面。

示例性的,该第二界面可以为图9所示的扫码成功后的界面。在视频聊天或其他回调流场景中,在实现第一功能后,可能不会再显示第二界面。

其中,关于步骤1303-步骤1309的说明,可以参见上述步骤405-步骤422的相关描述,此处不予赘述。

在其他一些实施例中,手机也可以在不显示第一应用程序的界面的情况下,响应于用户使用第一应用程序的第一功能的第一操作,显示第一功能对应的第一界面。该第一界面为第一应用程序与相机功能相关的界面。即,手机可以不执行步骤1301,直接执行步骤1302-步骤1309。

示例性的,参见图14,用户使用第一应用程序的第一功能的第一操作,可以为用户点击微信扫一扫的快捷图标1401的操作,第一界面可以为图5中的(d)所示的界面。

在图13所示流程描述的方案中,电子设备在通过第一应用程序启动相机后,若确定当前为回调流场景,则在第一应用程序指示创建预览流时电子设备也并行创建第一回调流,从而可以预先获取回调流数据。后续,在第一应用程序根据自身业务处理逻辑设置回调函数后,电子设备可以不再创建回调流,而直接将之前获取的回调流数据通过回调函数返回给第一应用程序。因而,与电子设备串行创建预览流和回调流相比,电子设备通过并行创建预览流和回调流,可以减少电子设备创建预览流和回调流的耗时,从而可以减少第一应用程序获取回调流数据的时长,缩短第一应用程序对回调流数据进行处理从而实现第一功能的时长,减少了用户使用第一功能的等待时长,提高了用户体验。

另外,本申请实施例还提供了一种电子设备,包括一个或多个处理器;存储器;以及一个或多个计算机程序。一个或多个计算机程序被存储在存储器中,一个或多个计算机程序包括指令。当指令被一个或多个处理器执行时,使得电子设备执行上述实施例中的各个步骤,以实现上述回调流的处理方法。

本申请的实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的回调流的处理方法。

本申请的实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中电子设备执行的回调流的处理方法。

另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中电子设备执行的回调流的处理方法。

其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种回调流的处理方法及设备
  • 一种电镀废水回用设备及其处理方法
技术分类

06120112452056