CN117725941A - 扫码方法及电子设备 - Google Patents

扫码方法及电子设备 Download PDF

Info

Publication number
CN117725941A
CN117725941A CN202410145977.6A CN202410145977A CN117725941A CN 117725941 A CN117725941 A CN 117725941A CN 202410145977 A CN202410145977 A CN 202410145977A CN 117725941 A CN117725941 A CN 117725941A
Authority
CN
China
Prior art keywords
camera
code scanning
electronic device
function
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202410145977.6A
Other languages
English (en)
Other versions
CN117725941B (zh
Inventor
张赫
宋强强
王佳琦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202410145977.6A priority Critical patent/CN117725941B/zh
Publication of CN117725941A publication Critical patent/CN117725941A/zh
Application granted granted Critical
Publication of CN117725941B publication Critical patent/CN117725941B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Studio Devices (AREA)

Abstract

本申请公开了一种扫码方法及电子设备,涉及终端领域,该方法包括:电子设备接收打开扫码功能的第一操作。响应于第一操作,电子设备初始化第一摄像头。当确定启动扫码功能对应的摄像头时,电子设备判断扫码功能对应的摄像头是否为第一摄像头。若扫码功能对应的摄像头为第一摄像头,电子设备不再初始化第一摄像头,并通过第一摄像头采集图像。若扫码功能对应的摄像头为第二摄像头,电子设备初始化第二摄像头,并通过第二摄像头采集图像,其中,图像包括图形识别码。电子设备从图像中识别出图形识别码,执行图形识别码对应的功能。

Description

扫码方法及电子设备
技术领域
本申请涉及终端领域,尤其涉及一种扫码方法及电子设备。
背景技术
随着终端技术的发展,人们使用电子设备(例如手机、平板电脑等)处理日常事务的频率也越来越高。目前,用户经常利用电子设备扫描图形识别码(例如二维码、条形码等)来实现在线支付、下载第三方应用程序或访问网站等功能。当用户需要使用电子设备进行扫码时,电子设备可以接收到用户针对扫码控件的操作,并响应于该操作显示出扫码界面,调用摄像头采集包括图形识别码的图像,此时,该扫码界面可以显示出该图像。接下来,电子设备可以识别图像中的图形识别码,并执行该图形识别码对应的功能。
然而,当前电子设备在接收到用户针对扫码控件的操作之后,需要等待较长的时间才能在扫码界面中显示出包括图形识别码的图像并识别该图形识别码,导致扫码效率较低,扫码响应较慢的问题。
发明内容
本申请提供了一种扫码方法及电子设备,应用于包括多个摄像头的电子设备上,实现了优化电子设备的扫码性能,提高了扫码效率,加快了电子设备的扫码响应。
第一方面,本申请提供了一种扫码方法,应用于包括多个摄像头的电子设备,该多个摄像头包括第一摄像头和第二摄像头,该第一摄像头和该第二摄像头不相同,该方法包括:接收打开扫码功能的第一操作。响应于该第一操作,初始化第一摄像头。当确定启动该扫码功能对应的摄像头时,判断该扫码功能对应的摄像头是否为该第一摄像头。若该扫码功能对应的摄像头为该第一摄像头,不再初始化该第一摄像头,并通过该第一摄像头采集图像。其中,该图像包括图形识别码。若该扫码功能对应的摄像头为第二摄像头,初始化该第二摄像头,并通过该第二摄像头采集该图像。从该图像中识别出该图形识别码,执行该图形识别码对应的功能。这样,优化了电子设备的扫码性能,提高了扫码效率,加快了电子设备的扫码响应。
在一种可能的实现方式中,在接收打开扫码功能的第一操作之后,该方法还包括:显示扫码界面。在从该图像中识别出该图形识别码,执行该图形识别码对应的功能之前,该方法还包括:在该扫码界面中显示出该图像。
在一种可能的实现方式中,若该扫码功能对应的摄像头为该第一摄像头,不再初始化该第一摄像头,并通过该第一摄像头采集图像,具体包括:若该扫码功能对应的摄像头为该第一摄像头,判断该第一摄像头的初始化操作是否已完成。
在一种可能的实现方式中,该方法还包括:若该第一摄像头的初始化操作已完成,不再初始化该第一摄像头,并通过该第一摄像头采集图像。若该第一摄像头的初始化操作未完成但已启动,等待该第一摄像头初始化完成后,通过该第一摄像头采集图像。
在一种可能的实现方式中,若该扫码功能对应的摄像头为第二摄像头,初始化该第二摄像头,并通过该第二摄像头采集该图像,具体包括:若该扫码功能对应的摄像头为第二摄像头,判断该第一摄像头的初始化操作是否已完成或已启动。若该第一摄像头的初始化操作已完成或已启动,关闭该第一摄像头,初始化该第二摄像头,并通过该第二摄像头采集该图像。
在一种可能的实现方式中,若该第一摄像头的初始化操作已完成,不再初始化该第一摄像头,并通过该第一摄像头采集图像,具体包括:读取第一标志位。其中,该第一标志位用于指示该第一摄像头的初始化状态。若该第一标志位的值为第一值,确定该第一摄像头的初始化操作已完成,不再初始化该第一摄像头,并通过该第一摄像头采集图像。
在一种可能的实现方式中,若该第一摄像头的初始化操作未完成但已启动,等待该第一摄像头初始化完成后,通过该第一摄像头采集图像,具体包括:读取第一标志位。其中,该第一标志位用于指示该第一摄像头的初始化状态。若该第一标志位的值为第二值,确定该第一摄像头的初始化操作未完成但已启动,等待该第一摄像头初始化完成后,通过该第一摄像头采集图像。
在一种可能的实现方式中,响应于该第一操作,初始化第一摄像头,具体包括:响应于该第一操作,通过第一接口启动第一线程。该第一线程初始化该第一摄像头。
在一种可能的实现方式中,若该扫码功能对应的摄像头为该第一摄像头,不再初始化该第一摄像头,并通过该第一摄像头采集图像,具体包括:若该扫码功能对应的摄像头的标识和该第一摄像头的标识相同,则确定该扫码功能对应的摄像头为该第一摄像头,不再初始化该第一摄像头,并通过该第一摄像头采集图像。
在一种可能的实现方式中,该第一摄像头为后置主摄像头。
第二方面,本申请提供了一种电子设备,包括:多个摄像头、一个或多个处理器、一个或多个存储器和显示屏。该一个或多个存储器与该多个摄像头、该一个或多个处理器耦合,该一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当该一个或多个处理器和该多个摄像头执行该计算机指令时,使得该电子设备执行如上述第一方面中任一项可能的实现方式中的方法。这样,优化了电子设备的扫码性能,提高了扫码效率,加快了电子设备的扫码响应。
第三方面,本申请提供了一种计算机可读存储介质,包括计算机指令,当该计算机指令在电子设备上运行时,使得该电子设备执行如上述第一方面中任一项可能的实现方式中的方法。这样,优化了电子设备的扫码性能,提高了扫码效率,加快了电子设备的扫码响应。
第四方面,本申请提供了一种芯片系统,包括处理电路和接口电路,该接口电路用于接收代码指令并传输至该处理电路,该处理电路用于运行该代码指令以执行如上述第一方面中任一项可能的实现方式中的方法。这样,优化了电子设备的扫码性能,提高了扫码效率,加快了电子设备的扫码响应。
附图说明
图1A-图1E为本申请实施例提供的一组用户界面示意图;
图2A为本申请实施例提供的一种扫码启动的执行逻辑示意图;
图2B为本申请实施例提供的另一种扫码启动的执行逻辑示意图;
图3为本申请实施例提供的一种电子设备100的外观结构示意图;
图4为本申请实施例提供的一种电子设备100的硬件结构示意图;
图5为本申请实施例提供的一种电子设备100的装置架构示意图;
图6为本申请实施例提供的一种扫码方法的具体流程示意图;
图7为本申请实施例提供的一种扫码方法的层间交互示意图;
图8为本申请实施例提供的一种扫码方法的模块交互流程示意图;
图9为本申请实施例提供的又一种扫码启动的执行逻辑示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请得到说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指包含一个或多个所列出醒目的任何或所有可能组合。在本申请实施例中,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
首先,介绍本申请实施例涉及的一种扫码场景。
图1A-图1E为本申请实施例提供的一种扫码场景示意图。
本申请实施例中,“扫码”可以指的是电子设备(后续称电子设备100)识别图像中的图形识别码并执行该图形识别码对应的功能。图形识别码可以是二维码、条形码等,对应的功能可以是在线支付、下载第三方应用、浏览网页等,本申请并不做限制。执行扫码功能的应用可以称为扫码应用。
图1A-图1E以图形识别码是二维码,对应功能是在线支付,扫码应用为微信应用为例作说明。如图1A所示,电子设备100可以示出微信应用界面110。在该场景下,用户需要使用微信应用的扫码功能识别二维码140,以执行在线支付功能。该微信应用界面110可以显示一个或多个联系人(例如Henry、Lucy和David等)、更多控件111、搜索控件112等等。电子设备100可以接收到针对于更多控件111的触摸操作(例如点击),响应于该触摸操作,电子设备100在微信应用界面110中显示出列表113。
如图1B所示,该列表113可以包括一个或多个功能控件(例如,发起群聊控件、添加朋友控件、扫一扫控件113A、收付款控件等等),其中,扫一扫控件113A可以用于打开电子设备100的扫码功能,即,触发电子设备100针对二维码140进行扫码操作。电子设备100可以接收到针对于扫一扫控件113A上的触摸操作(例如点击),响应于该触摸操作,电子设备100可以显示出扫码界面120。
如图1C所示,该扫码界面120可以显示出一个或多个功能控件(例如我的二维码控件、相册控件、翻译页面切换控件、扫一扫页面切换控件等等)。该扫码界面120还可以显示出包括二维码140的图像。当电子设备100成功识别出该图像中的二维码140时,电子设备100可以执行该二维码140对应的在线支付功能,显示出支付界面130。
如图1D所示,该支付界面130可以包括一个或多个文本提示信息(例如“付款给Lily”、“输入金额”等等)、付款控件131。电子设备100可以接收到用户的金额输入操作以及针对付款控件131的触摸操作(例如点击),响应于上述操作,电子设备100可以执行金额支付操作。
在一种可能的实现方式中,如图1E所示,当电子设备100显示出扫码界面120,等待摄像头采集包括二维码140的图像期间,扫码界面120中并不显示出二维码140。
需要说明的是,图1A-图1E仅仅用于示例性说明本申请,在具体实现中,也可以有其他的扫码场景,本申请对此并不做限制。
在一些实现场景中,当用户需要使用电子设备100进行扫码时,电子设备100可以接收到用户打开扫码功能的操作(例如图1B所示针对扫一扫控件113A的触摸操作),并响应于该操作显示出扫码界面,调用摄像头采集包括图形识别码的图像,此时,该扫码界面可以显示出该图像。接下来,电子设备100可以识别图像中的图形识别码,并执行该图形识别码对应的功能。然而,电子设备100在接收到打开扫码功能的操作之后,需要等待较长的时间才能在扫码界面中显示出包括图形识别码的图像并识别该图形识别码,从而执行该图形识别码对应的功能,导致扫码效率较低,扫码响应较慢的问题。
下面,分析前述所说的在一些实现场景中导致扫码效率较低的原因。
首先,电子设备100从接收到用户打开扫码功能的操作,到在扫码界面中显示图形识别码这一过程,需要经历以下四个阶段:创建活动(activity)阶段、摄像头启动阶段(也称open阶段)、配置摄像头参数阶段(也称Configurestream阶段)、显示图像阶段(也称出帧阶段),其中,关于各阶段的说明以及作用可参见如下段落:
创建活动(activity)阶段:活动(activity)是一种包括用户界面的组件,主要用于电子设备100和用户进行交互。每一个活动(activity)可以对应一个用户界面。本申请实施例中,当电子设备100接收并响应于用户打开扫码功能的操作时,电子设备100可以创建扫码功能对应的活动(activity),并显示出扫码界面(例如图1C所示的扫码界面120)。本申请实施例中,该扫码功能对应的活动也可以称为扫码界面对应的活动。
摄像头启动阶段(open阶段):该阶段主要用于启动摄像头,例如对中央处理器(central processing unit,CPU)调频、管理摄像头状态、检测摄像头是否处于使用状态等等。可选的,在该阶段中,电子设备100可以调用open函数(也即函数open())对摄像头执行初始化操作(也称初始化摄像头)。初始化摄像头可以包括:将摄像头相关信息写入寄存器(即写寄存器)、为摄像头及相关器件接通电源并使其稳定工作(即摄像头上电)等。
配置摄像头参数阶段(也称Configurestream阶段):该阶段可以调用Configurestream函数,主要用于电子设备100根据调用摄像头的应用(本申请实施例为扫码应用)所指定的摄像头参数信息(例如图像分辨率大小、图像流的数量、图像的格式以及其他参数信息等),对摄像头及其相关器件、图像处理器(image signal processor,ISP)进行设置,例如根据指定图像分辨率设置对应的出图寄存器等。
显示图像阶段(也称出帧阶段):该阶段主要用于电子设备100通过摄像头基于前述Configurestream阶段的设置实时采集图像,然后,电子设备100显示出该采集到的图像。
如图2A所示,创建活动阶段的时间点T1和open阶段中调用open函数的时间点T2可以存在一定的时间间隔(例如50~200毫秒),open阶段中调用open函数的时间点T2和Configurestream阶段中调用Configurestream函数的时间点T3之间也可以存在一定的时间间隔(例如50~200毫秒),上述时间间隔可以用于扫码应用执行其他业务以及相机服务(Camera Server)执行摄像头其他相关线程的业务。并且,Configurestream阶段的部分操作需要在初始化摄像头完成后才可以执行。如图2A所示,初始化摄像头完成的时间点为Tf1,则在Tf1时Configurestream阶段后续的部分操作才开始执行。
如图2B所示,在一些场景中,当电子设备100调用open函数对摄像头进行初始化时,若部分摄像头的器件的初始化时间较长(例如,300毫秒及以上),则Configurestream阶段的部分操作在执行之前需要等待的时间也较长,如图2B所示,初始化摄像头完成的时间点Tf1较晚,Configurestream阶段后续的部分操作开始执行的时间点较晚,因此Configurestream阶段完成的时间点也较晚,从而导致扫码界面显示图形识别码较慢,降低了电子设备100的扫码性能,造成电子设备100的扫码效率低,扫码响应过慢的问题。
因此,本申请实施例提供了一种扫码方法,该方法可以包括:当响应于用户打开扫码应用的扫码功能,且在调用open函数之前,电子设备100可以对后置主摄像头进行初始化。当电子设备100在open阶段调用open函数时,open函数可以获取到扫码应用执行扫码功能时对应摄像头的标识。若该摄像头的标识为后置主摄像头的标识,则电子设备100通过open函数判断后置主摄像头是否初始化完成。若后置主摄像头的初始化已完成,则open函数不必再执行初始化摄像头的操作,而是继续执行后续流程。当电子设备100完成摄像头启动阶段和配置摄像头参数阶段之后,电子设备100可以通过摄像头采集包括图形识别码的图像,并在扫码界面中显示出该图像。接下来,电子设备100可以通过扫码应用识别出该图像中的图形识别码,并执行该图形识别码对应的功能。
从上述方法可以看出,电子设备100将初始化摄像头的操作提前到了open阶段之前,而不是在open阶段调用open函数时才执行。由于初始化摄像头的执行时间提前,因此Configurestream阶段的部分操作的执行时间点也可以提前,因此Configurestream阶段完成的时间点也提前,电子设备100可以更快地显示出图形识别码,这样,优化了电子设备100的扫码性能,提高了扫码效率,加快了电子设备100的扫码响应。
下面,介绍本申请实施例涉及的一种电子设备100的外观结构。
图3为本申请实施例提供的一种电子设备100的外观结构示意图。
本申请实施例中,电子设备100可以包括一个或多个摄像头。如图3中的(a)所示,电子设备100的背面(即没有设置显示屏的一面)可以包括:后置主摄像头、景深摄像头、超广角摄像头和长焦摄像头。如图3中的(b)所示,可选的,电子设备100的正面(即设置了显示屏的一面)可以包括前置摄像头。其中,每一个摄像头对应有各自的标识。例如,后置主摄像头对应有标识A,景深摄像头对应有标识B,超广角摄像头对应有标识C,长焦摄像头对应有标识D,前置摄像头对应有标识E。
需要说明的是,图3仅仅用于示例性解释本申请,在具体实现中,电子设备100的背面/正面可以设置有不同于图3所示的摄像头,摄像头的排列布局也可以不同于图3,本申请对此不作限制。
接下来,介绍本申请实施例提供的一种电子设备100的硬件结构。
图4为本申请实施例提供的一种电子设备100的硬件结构示意图。
本申请实施例中,电子设备100可以是手机、平板电脑、PC、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personaldigitalassistant,PDA)等电子设备。本申请对该电子设备100的具体类型不作任何限制。
如图4所示,电子设备100可以包括处理器401、存储器402、无线通信模块403(可选的)、显示屏404、摄像头405、音频模块406(可选的)和麦克风407(可选的)。其中,处理器401、存储器402、无线通信模块403、显示屏404、摄像头405、音频模块406和麦克风407可以通过总线连接。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100还可以包括比图4所示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图4所示的部件可以以硬件,软件或软件和硬件的组合来实现。
处理器401可以包括一个或多个处理器单元,例如处理器401可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器401中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器401中的存储器为高速缓冲存储器。该存储器可以保存处理器401刚用过或循环使用的指令或数据。如果处理器401需要再次使用该指令或数据,可以从所述存储器中直接调用。避免了重复存取,减少了处理器401的等待时间,因而提高了系统的效率。
在一些实施例中,处理器401可以包括一个或多个接口。接口可以包括集成电路(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)接口,和/或USB接口等。
存储器402与处理器401耦合,用于存储各种软件程序和/或多组指令。具体实现中,存储器402可以包括易失性存储器(volatile memory),例如随机存取存储器(randomaccess memory,RAM);也可以包括非易失性存储器(non-vlatile memory),例如ROM、快闪存储器(flash memory)、硬盘驱动器(Hard Disk Drive,HDD)或固态硬盘(Solid StateDrives,SSD);存储器402还可以包括上述种类的存储器的组合。存储器402还可以存储一些程序代码,以便于处理器401调用存储器402中存储的程序代码,以实现本申请实施例在电子设备100中的实现方法。存储器402可以存储操作系统,例如uCOS、VxWorks、RTLinux等嵌入式操作系统。
无线通信模块403可以提供应用在电子设备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)等无线通信的解决方案。无线通信模块403可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块403经由天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器401。无线通信模块403还可以从处理器401中接收待发送的信号,对其进行调频、放大,经天线转为电磁波辐射出去。在一些实施例中,电子设备100还可以通过无线通信模块403中的蓝牙模块(图4未示出)、WLAN模块(图4未示出)发射信号探测或扫描在电子设备100附近的设备,并与该附近的设备建立无线通信连接以传输数据。其中,蓝牙模块可以提供包括经典蓝牙(basic rate/enhanced data rate,BR/EDR)或蓝牙低功耗(bluetooth low energy ,BLE)中一项或多项蓝牙通信的解决方案,WLAN模块可以提供包括Wi-Fi direct、Wi-Fi LAN或Wi-Fi softAP中一项或多项WLAN通信的解决方案。
显示屏404可以用于显示图像、视频等。显示屏404可以包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dotlight emitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏404,N为大于1的正整数。
摄像头405用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头405,N为大于1的正整数。
音频模块406可以用于将数字音频信息转换成模拟音频信号输出,也可以用于将模拟音频输入转换成数字音频信号。音频模块406还可以用于对音频信号编码和解码。在一些实施例中,音频模块406还可以设置于处理器401中,或将音频模块406的部分功能模块设置于处理器401中。
麦克风407,也可以称“话筒”,“传声器”, 可以用于采集电子设备周围环境中的声音信号,再将该声音信号转换为电信号,再将该电信号经过一系列处理,例如模数转换等,得到电子设备的处理器401可以处理的数字形式的音频信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风407发声,将声音信号输入到麦克风407。电子设备100可以设置至少一个麦克风407。在另一些实施例中,电子设备100可以设置两个麦克风407,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风407,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
需要说明的是,图4中示出的电子设备100仅仅用于示例性解释本申请所提供的电子设备的硬件结构,并不对本申请构成具体限制。
下面,介绍本申请实施例提供的一种电子设备100的装置架构。
图5为本申请实施例提供的一种电子设备100的装置架构示意图。
如图5所示,电子设备100的装置架构可以包括:应用程序层、应用程序框架层、硬件抽象层(hardware abstraction layer,HAL)、内核层和硬件层。其中:
如图5所示,应用程序层可以包括一系列应用程序包,例如相机、日历、备忘录、图库和浏览器等。
本申请实施例中,应用程序层还可以包括扫码应用(例如支付宝应用、微信应用等)。扫码应用指的是可以识别图形识别码并执行该图形识别码对应功能的应用。不限于上述举例,在具体实现中扫码应用也可以是其他应用程序,本申请对此不作限制。
如图5所示,应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。示例性的,应用程序框架层可以包括窗口管理器,内容提供器,电话管理器,资源管理器,通知管理器等,其中:
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
本申请实施例中,应用程序框架层还可以包括:活动管理服务(activitymanagerservice,AMS)、相机服务(Camera Server)和系统服务(System Server)。其中,活动管理服务可以用于统一调度各应用进程,创建各种类型的活动;相机服务可以用于和应用程序层中的各应用进行交互(例如对各应用提供摄像头相关的接口等),也可以用于和硬件抽象层进行交互(例如将应用下发的数据信息传递给硬件抽象层等);系统服务中可以运行有智慧场景线程(也可称IAware),该智慧场景线程可以用于识别活动对应的场景类型(例如识别出扫码场景等)。
如图5所示,硬件抽象层位于内核层和应用程序框架层之间,起着承上启下的作用。硬件抽象层可以用于将电子设备100上的硬件器件抽象化,也即是将硬件驱动程序进行封装,向硬件抽象层以上的层级(例如应用程序框架层、应用程序层等)提供接口,屏蔽硬件驱动程序的实现细节。本申请实施例中,硬件抽象层可以包括相机硬件抽象层(CameraHAL),该Camera HAL定义了一套标准接口,可以用于相机服务进行调用,并协调内核层中的摄像头驱动,以控制摄像头模块正常工作。在其他实施例中,硬件抽象层还可以包括指纹硬件抽象层(图5未示出)、接近光硬件抽象层(图5未示出)等等,本申请对此不作限制。
如图5所示,内核层是硬件和软件之间的层。内核层至少可以包括显示驱动、传感器驱动、音频驱动和摄像头驱动等。显示驱动可以用于控制显示器正常工作,传感器驱动可以用于控制传感器模块正常工作,音频驱动可以用于控制音频模块正常工作,摄像头驱动可以用于控制摄像头模块正常工作。
如图5所示,硬件层可以包括设置于电子设备100中的多个硬件模块,例如显示器、传感器模块、音频模块和摄像头模块等等。
需要说明的是,图5仅仅用于示例性解释本申请,并不对本申请构成任何限制。
接下来,介绍本申请实施例提供的一种扫码方法的具体流程。
图6为本申请实施例提供的一种扫码方法的具体流程示意图。
如图6所示,该扫码方法的具体流程可以包括:
阶段一:初始化扫码功能对应的摄像头。
S601:响应于用户打开扫码功能的操作,电子设备100显示出扫码应用的扫码界面。
具体的,电子设备100接收并响应于用户打开扫码功能的操作(也称操作1、第一操作),可以显示出扫码应用的扫码界面(如图1C所示的扫码界面120)。并且,电子设备100可以创建扫码界面对应的活动(activity)。其中,该扫码界面对应的活动可以有相应的标识。
其中,“用户打开扫码功能的操作”可以是如图1B所示针对于扫一扫控件113A上的触摸操作,也可以是打开扫码功能的手势操作、发出触发扫码功能的语音指令等。
S602:电子设备100对后置主摄像头执行初始化操作。
其中,对后置主摄像头(也可以称为第一摄像头)执行初始化操作可以包括:写寄存器和后置主摄像头上电。
在一些实现方式中,扫码应用使用后置主摄像头执行扫码功能的概率较大,因此,在启动扫码功能对应的摄像头之前,电子设备100可以提前对后置主摄像头执行初始化操作,由此在需要等待后置主摄像头初始化完成后才能执行的操作的时间也可以提前,因此可以提高电子设备100的扫码效率。若在另一些实现方式中,扫码应用使用除后置主摄像头之外的其他摄像头(例如前述的长焦摄像头、景深摄像头、超广角摄像头、前置摄像头等)执行扫码功能,则电子设备100在提前对后置主摄像头执行初始化操作之后,可以关闭已提前初始化的后置主摄像头,然后初始化其他摄像头。因关闭后置主摄像头的速度较快,初始化其他摄像头的时间也较短,因此提前初始化后置主摄像头对扫码性能的影响也较小。
S603:当确定启动扫码功能对应的摄像头时,电子设备100判断扫码功能对应的摄像头是否为后置主摄像头。
当确定启动扫码功能对应的摄像头时,电子设备100可以比较扫码功能对应的摄像头的标识(也可以称为标识1)和后置主摄像头的标识。若标识1与后置主摄像头的标识相同,则电子设备100确定扫码功能对应的摄像头为后置主摄像头;若标识1与后置主摄像头的标识不相同,则电子设备100确定扫码功能对应的摄像头不是后置主摄像头,而是除后置主摄头之外的其他摄像头(可以称为第二摄像头,例如前述示例中的景深摄像头、长焦摄像头等等)。
情况一:当扫码功能对应的摄像头为后置主摄像头时。
S604A:电子设备100判断后置主摄像头是否已完成初始化。
具体的,电子设备100可以设置提前初始化标志位,该提前初始化标志位可以用于指示后置主摄像头的初始化状态。电子设备100可以根据提前初始化标志位的值,判断后置主摄像头是否已完成初始化。具体实现方式后续实施例将详细描述。
S605A:若后置主摄像头已完成初始化,则电子设备100不再初始化后置主摄像头。
S605B:若后置主摄像头尚未完成初始化,则电子设备100判断后置主摄像头的初始化操作是否已启动。
具体的,电子设备100可以根据前述提前初始化标志位的值,判断是否已启动后置主摄像头的初始化操作,具体实现方式后续实施例将详细描述。
S606A:若后置主摄像头的初始化操作尚未完成但已启动,电子设备100等待后置主摄像头初始化完成。
当后置主摄像头的初始化操作尚未完成但已启动时,电子设备100可以等待后置主摄像头初始化完成,然后,再执行后续操作(例如,配置摄像头参数阶段等)。
S606B:若尚未启动后置主摄像头的初始化操作,电子设备100初始化后置主摄像头。
情况二:当扫码功能对应的摄像头不是后置主摄像头时。
S604B:电子设备100判断后置主摄像头的初始化操作是否已完成或是否已启动。
S605C:若后置主摄像头的初始化操作已完成或已启动,则电子设备100关闭后置主摄像头,初始化扫码功能对应的摄像头。
S605D:若尚未启动后置主摄像头的初始化操作,则电子设备100初始化扫码功能对应的摄像头。
阶段二:基于扫码功能对应的摄像头执行扫码功能。
S607:在启动扫码功能对应的摄像头之后,电子设备100可以通过该摄像头采集包括图形识别码的图像,并在扫码界面显示出该图像。
具体的,在启动扫码功能对应的摄像头之后,电子设备100还可以执行前述实施例描述的配置摄像头参数阶段,然后,电子设备100可以通过扫码功能对应的摄像头采集到包括图形识别码的图像。其中,扫码功能对应的摄像头可以是后置主摄像头,也可以是除后置主摄头之外的其他摄像头(例如前述示例中的景深摄像头、长焦摄像头等等)。
S608:电子设备100从图像中识别出图形识别码,并执行该图形识别码对应的功能。
示例性的,电子设备100可以通过扫码应用(例如支付宝应用、微信应用等)从扫码界面的图像中识别出图形识别码。该图形识别码对应的功能可以是在线支付、下载第三方应用、浏览网页等等。
进一步的,对图6所示扫码方法的具体流程的一些步骤作具体说明。
步骤S601:
当电子设备100接收到操作1,并响应于该操作1时,电子设备100可以显示出扫码界面,并且,电子设备100可以调用活动管理服务(AMS)中的StartActivity()函数创建扫码界面对应的活动。需要说明的是,此时扫码功能对应的摄像头尚未正常工作,也即是电子设备100不能通过该摄像头采集包括图形识别码的图像,因此在该步骤中,扫码界面没有显示出图形识别码。
当电子设备100调用活动管理服务(AMS)中的StartActivity()函数创建扫码界面对应的活动时,函数reportData可以通过打桩的方法,在活动管理服务(AMS)中获取到扫码界面对应的活动(也可以称为活动1)的标识。然后,函数reportData可以将活动1的标识发送给运行于系统服务(System Server)中的智慧场景线程(也称IAware)。接下来,IAware可以调用函数getSceneMode(),判断白名单中是否记录有上述活动1的标识。若白名单中记录有上述活动1的标识,则电子设备100确定当前场景为扫码场景;若白名单中没有记录上述活动1的标识,则电子设备100确定当前场景不是扫码场景。其中,白名单可以是电子设备100预先存储的,该白名单可以记录有扫码场景对应的一个或多个活动的标识。
步骤S602:
当电子设备100通过IAware调用函数getSceneMode()确定当前场景是扫码场景时,电子设备100可以通过运行在Camera HAL中的sendCommand()接口(可以称为第一接口)获取到IAware传递的扫码场景指示信息。当sendCommand()接口获取到扫码场景指示信息时,sendCommand()接口可以启动提前初始化线程(可以称为OpenCamera(0)、线程1、第一线程)。该提前初始化线程可以判断后置主摄像头是否已启动。若确定后置主摄像头未启动,则提前初始化线程可以调用MAKE_HaleSensorList()获取到记录有各硬件模块句柄的列表,然后,调用函数CreateSensor()基于上述列表获取到后置主摄像头的句柄,该后置主摄像头的句柄用于控制后置主摄像头。接下来,提前初始化线程可以调用函数powerOn()基于上述后置主摄像头的句柄初始化后置主摄像头(包括写寄存器和后置主摄像头上电)。
在一种可能的实现方式中,若确定后置主摄像头已启动,则提前初始化线程退出(即终止运行),不对后置主摄像头进行初始化。
在一种可能的实现方式中,若IAware调用函数getSceneMode()确定当前场景不是扫码场景,则电子设备100终止本申请所提供的扫码方法的流程。
示例性的,扫码场景指示信息中的参数可以包括以下至少一项:1、模式指示参数cmd=COMMAND_CAN_SCENE-MODE,用于指示当前的一个或多个参数用于指明不同类型的场景。2、参数sceneModeType,用于指示当前场景的类型。其值为0时,用于指示为扫码场景。3、参数sceneModeStatus,用于指示当前场景是否已开启。其值是1时为已开启,其值是0为已关闭。例如sceneModeType=0,sceneModeStatus=1,即指示扫码场景已开启,也即是当前场景是扫码场景。
需要说明的是,上述描述的扫码场景指示信息中的参数仅为示例,在具体实现中,扫码场景指示信息中的参数也可以不同于示例,本申请不作限制。
步骤S603:
当电子设备100通过StartActivity()函数创建扫码界面对应的活动之后,电子设备100可以确定启动扫码功能对应的摄像头,即通过扫码应用调用函数connect(),将摄像头启动指令发送给相机服务(Camera Server),其中,该摄像头启动指令可以携带扫码功能对应的摄像头的标识(可以称为标识1)。然后,相机服务(Camera Server)中运行的函数initializelmpl可以调用运行在Camera HAL中的函数open()(即前述的open函数)。相机服务(Camera Server)可以将扫码功能对应的摄像头的标识发送给函数open()。然后,函数open()可以启动摄像头判断线程(可以称为线程2),该摄像头判断线程可以判断扫码功能对应的摄像头的标识是否为后置主摄像头的标识。若是,则线程2可以确定扫码功能对应的摄像头为后置主摄像头;若否,则线程2可以确定扫码功能对应的摄像头不是后置主摄像头。
需要说明的是,电子设备100确定启动扫码功能对应的摄像头以及判断扫码功能对应的摄像头是否为后置主摄像头,与电子设备100判断当前场景是否为扫码场景及初始化后置主摄像头,这两者之间互相不干扰,可以并发执行。也即是说,电子设备100可以在判断当前场景是否为扫码场景及初始化后置主摄像头时,执行确定启动扫码功能对应的摄像头以及判断扫码功能对应的摄像头是否为后置主摄像头的操作。
步骤S604A、S605A、S605B、S606A和S606B:
电子设备100可以设置提前初始化标志位(可以称为第一标志位),并根据后置主摄像头的初始化状态为提前初始化标志位赋予不同的值。电子设备100可以通过线程2根据提前初始化标志位的值,确定后置主摄像头的初始化操作是否已完成,或者是否已启动。也即是说,提前初始化标志位可以用于指示后置主摄像头的初始化状态。其中,提前初始化标志位可以设置于提前初始化线程中,也可以设置于其他位置,本申请对此不作限制。
示例性的:(1).当提前初始化标志位的值为null时,指示后置主摄像头的初始化操作尚未启动。当提前初始化线程退出时,电子设备100可以通过提前初始化线程/sendCommand()接口将提前初始化标志位赋值为null。(2).当提前初始化标志位的值为init(也可以称为第二值)时,指示后置主摄像头的初始化已启动但未完成。当电子设备100通过sendCommand()接口接收到扫码场景指示信息时,电子设备100可以通过提前初始化线程/sendCommand()接口将提前初始化标志位赋值为init。(3).当提前初始化标志位的值为finish(可以称为第一值)时,指示后置主摄像头的初始化已完成。当电子设备100完成后置主摄像头的初始化时,电子设备100可以通过提前初始化线程/sendCommand()接口将提前初始化标志位赋值为finish。
当电子设备100通过线程2读取到提前初始化标志位的值为finish,确定后置主摄像头的初始化操作已完成时,则电子设备100不再初始化后置主摄像头。
当电子设备100通过线程2读取到提前初始化标志位的值为init,确定后置主摄像头的初始化操作已启动但未完成时,则电子设备100阻塞当前线程,等待提前初始化线程完成后置主摄像头的初始化操作。
通常的,电子设备100对后置主摄像头执行初始化操作的时间点发生在电子设备100调用open函数的时间点之前,但在一些实现中,由于CPU调度或线程阻塞等原因,导致电子设备100对后置主摄像头执行初始化操作的时间点发生在电子设备100调用open函数的时间点之后,因此,电子设备100可以通过线程2检测到此时尚未启动后置主摄像头的初始化操作。当电子设备100通过线程2读取到提前初始化标志位的值为null,确定尚未启动后置主摄像头的初始化操作时,电子设备100可以通过线程2启动初始化线程(可以称为线程3),然后,该初始化线程可以初始化后置主摄像头。
需要说明的是,上述提前初始化标志位的值仅用于示例性解释本申请,在具体实现中,指示后置主摄像头的初始化操作尚未启动、指示后置主摄像头的初始化已启动但未完成、指示后置主摄像头的初始化已完成的值可以不同于上述示例,本申请不作限制。
步骤S604B、步骤S605C、步骤S605D:
其中,电子设备100通过线程2根据提前初始化标志位的值,确定后置主摄像头的初始化操作是否已完成,或者是否已启动的实现方式可以参考前述步骤S605A、S606A、S606B、S607A和S607B的具体描述。
当电子设备100通过线程2确定后置主摄像头的初始化操作已完成,或者已启动但未完成时,则线程2启动初始化线程,然后,该初始化线程可以关闭后置主摄像头,并初始化扫码功能对应的摄像头(包括写寄存器以及对该摄像头上电)。
当电子设备100通过线程2确定尚未启动后置主摄像头的初始化操作时,电子设备100可以通过线程2启动初始化线程,然后,该初始化线程可以初始化扫码功能对应的摄像头。
在一种可能的实现方式中,电子设备100可以通过open函数设置open函数标志位,并根据open函数不同的调用状态赋予该标志位不同的值。该open函数标志位可以用于指示open函数的调用状态。open函数的调用状态可以包括以下至少一项:(1).open函数未调用。(2). open函数调用成功。(3) .open函数调用失败。
当电子设备100通过提前初始化线程完成后置主摄像头的初始化操作时,电子设备100可以将提前初始化标志位的值设置为指示后置主摄像头的初始化已完成的值(例如前述的finish),并通过提前初始化线程读取open函数标志位,其中:
当open函数标志位的值为指示open函数未调用的值时,则提前初始化线程在指定时长T1(例如1.5秒等)内持续读取open函数标志位。若在指定时长T1(例如1.5秒等)内读取到open函数调用成功的值时,则电子设备100将提前初始化标志位的值设置为指示后置主摄像头的初始化操作尚未启动的值(例如前述的null),并退出提前初始化线程。若在指定时长T1(例如1.5秒等)内没有读取到open函数调用成功的值时,则电子设备100通过提前初始化线程关闭后置主摄像头,并将提前初始化标志位的值设置为指示后置主摄像头的初始化操作尚未启动的值(例如前述的null),退出提前初始化线程。
当open函数标志位的值为指示open函数调用成功的值时,则电子设备100将提前初始化标志位的值设置为指示后置主摄像头的初始化操作尚未启动的值(例如前述的null),并退出提前初始化线程。
当open函数标志位的值为指示open函数调用失败的值时,则电子设备100通过提前初始化线程关闭后置主摄像头,并将提前初始化标志位的值设置为指示后置主摄像头的初始化操作尚未启动的值(例如前述的null),退出提前初始化线程。
在一种可能的实现方式中,若在提前初始化线程初始化后置主摄像头之前,open函数在执行过程中出错,则电子设备100可以通过open函数,将open函数标志位的值设置为指示open函数调用失败的值。提前初始化线程初始化后置主摄像头完成时,可以读取到open函数标志位中用于指示open函数调用失败的值,然后执行前述实施例中描述的相关操作。
在一种可能的实现方式中,若在提前初始化线程初始化后置主摄像头的过程中出错,则提前初始化线程可以向open函数发送初始化触发信号。open函数接收到该初始化触发信号时,可以启动线程3,该线程3可以基于扫码功能对应的摄像头的标识,初始化扫码功能对应的摄像头。
下面,介绍本申请实施例提供的一种扫码方法的层间交互。
图7为本申请实施例提供的一种扫码方法的层间交互示意图。
如图7所示,层间交互可以分为三个部分:
(一).提前初始化后置主摄像头:
扫码应用可以接收到打开扫码功能的操作1。响应于该操作1,扫码应用可以调用AMS中的StartActivity()函数创建扫码功能对应的活动1。当AMS通过StartActivity()函数创建活动1时,reportData()函数可以通过打桩的方式,获取到活动1的标识,并将活动1的标识发送给智慧场景线程(IAware)。其中,该IAware可以运行在System Server(图7未示出)中。然后,当获取到活动1的标识时,IAware可以通过getSceneMode()函数基于活动1的标识判断当前场景是否为扫码场景。若当前场景为扫码场景,运行在Camera HAL中的sendCommand()接口可以获取到智慧场景线程(IAware)传递的扫码场景指示信息。当接收到扫码场景指示信息时,sendCommand()接口可以启动提前初始化线程(即线程1),该提前初始化线程中可以设置提前初始化标志位。提前初始化线程可以初始化摄像头模块中的后置主摄像头。具体实现方式可以参考前述实施例的说明。
(二).启动扫码功能对应的摄像头:
在AMS通过StartActivity()函数创建活动1之后,扫码应用可以通过connect()函数将扫码功能对应的摄像头的标识1下发给Camera Server。Camera Server可以运行initializelmpl函数,并通过initializelmpl函数调用运行在Camera HAL中的函数open()。Camera Server可以将标识1下发给函数open()。函数open()可以启动线程2,该线程2可以基于标识1,判断扫码功能对应的摄像头是否为后置主摄像头,并读取提前初始化标志位的值判断初始化后置主摄像头是否完成。在一些可能的实现方式中,线程2可以启动线程3,该线程3可以对后置主摄像头/扫码功能对应的摄像头执行初始化操作。具体实现方式可以参考前述实施例的说明。
需要说明的是,图7没有示出启动扫码功能对应的摄像头的全部操作,例如,除图7所示的层间交互之外,启动扫码功能对应的摄像头还包括对CPU调频、管理扫码功能对应的摄像头状态、检测扫码功能对应的摄像头是否处于使用状态等,这些流程图7并未示出。
需要说明的是,提前初始化后置主摄像头和启动扫码功能对应的摄像头,这两者互不干扰,可以是并发执行的,在执行时序上本申请并不做限制。
(三). 配置摄像头参数阶段:
扫码应用可以通过startPreview()函数,将扫码功能对应的摄像头参数信息下发给Camera Server。Camera Server可以通过initializelmpl函数调用运行在Camera HAL中的函数Configurestream()(即前述的Configurestream函数)。Camera Server可以将扫码功能对应的摄像头参数信息下发给函数Configurestream()。函数Configurestream()可以基于该摄像头参数信息,对扫码功能对应的摄像头进行配置。
在一种可能的实现方式中,函数open()可以运行在Camera HAL的配置服务(configuration Server,cfg Server)模块中(图7未示出),函数Configurestream()可以运行在Camera HAL的相机设备(CameraDevice3)模块中(图7未示出)。
接下来,介绍本申请实施例提供的一种扫码方法的模块交互流程。
图8为本申请实施例提供的一种扫码方法的模块交互流程示意图。
如图8所示,该模块交互流程具体可以包括:
阶段一:初始化扫码功能对应的摄像头。
S801:扫码应用接收到打开扫码功能的操作1。
该步骤的说明可以参考前述S601的描述。
S802:扫码应用响应于操作1,显示出扫码界面。
该步骤的说明可以参考前述S601的相关描述。
S803:扫码应用调用活动管理服务(AMS)中的函数StartActivity()。
S804:活动管理服务(AMS)通过函数StartActivity()创建扫码界面对应的活动1。
S805:活动管理服务(AMS)将活动1的标识发送给IAware。
具体的,当活动管理服务(AMS)中的StartActivity()函数创建扫码界面对应的活动时,AMS中的函数reportData可以通过打桩的方式获取到活动1的标识。然后,函数reportData可以将活动1的标识发送给IAware。其中,IAware运行在系统服务(SystemServer)中。
S806:IAware基于活动1的标识,判断当前场景是否为扫码场景。
该步骤的说明可以参考前述S601中具体的相关描述。
S807:若当前场景是扫码场景时,Camera HAL获取到IAware传递的扫码场景指示信息。
该步骤的说明可以参考前述S602的相关描述。
S808:当接收到扫码场景指示信息时,Camera HAL初始化摄像头模块中的后置主摄像头。
该步骤的说明可以参考前述S602的相关描述。
S809:扫码应用向Camera Server下发扫码功能对应的摄像头的标识1。
S810:Camera Server调用Camera HAL中的open函数,并向open函数下发标识1。
S811:open函数通过线程2,基于标识1判断扫码功能对应的摄像头是否为后置主摄像头。
该步骤的说明可以参考前述S603的相关描述。
情况一:当扫码功能对应的摄像头为后置主摄像头时。
S812:线程2判断初始化后置主摄像头是否已完成。
该步骤的说明可以参考前述S604A的相关描述。
S813:若后置主摄像头已完成初始化,则线程2不再初始化后置主摄像头。
该步骤的说明可以参考前述S605A的相关描述。
S814:若后置主摄像头尚未完成初始化,则线程2判断后置主摄像头的初始化操作是否已启动。
该步骤的说明可以参考前述S605B的相关描述。
S815:若后置主摄像头尚未完成初始化但初始化后置主摄像头的操作已启动,则线程2等待初始化后置主摄像头完成。
该步骤的说明可以参考前述S606A的相关描述。
S816:若尚未启动后置主摄像头的初始化操作,则线程2启动线程3初始化摄像头模块中的后置主摄像头。
该步骤的说明可以参考前述S606B的相关描述。
情况二:当扫码功能对应的摄像头不是后置主摄像头时。
S817:线程2判断后置主摄像头是否已完成初始化,或者是否已启动后置主摄像头的初始化操作。
该步骤的说明可以参考前述S604B的相关描述。
S818:若后置主摄像头已完成初始化或已启动后置主摄像头的初始化操作,则线程2启动线程3关闭后置主摄像头,初始化扫码功能对应的摄像头。
该步骤的说明可以参考前述S605C的相关描述。
S819:若尚未启动后置主摄像头的初始化操作,则线程2启动线程3初始化扫码功能对应的摄像头。
该步骤的说明可以参考前述S605D的相关描述。
阶段二:基于扫码功能对应的摄像头执行扫码功能。
S820:摄像头模块采集包括图形识别码的图像。
具体的,摄像头模块通过扫码功能对应的摄像头采集包括图形识别码的图像。关于该步骤的说明可以参考前述S607的相关描述。
S821:摄像头模块通过Camera HAL、Camera Server向扫码应用发送包括图形识别码的图像。
S822:扫码应用在扫码界面显示包括图形识别码的图像。
该步骤的说明可以参考前述S607的相关描述。
S823:扫码应用从该图像中识别出图形识别码并执行对应的功能。
该步骤的说明可以参考前述S608的相关描述。
在一些实现中,当Camera HAL中的sendCommand()接口获取到IAware传递的扫码场景指示信息时,sendCommand()接口可以向IAware返回调用通知1,用于向IAware指示sendCommand()接口已调用。
在一些实现中,当Camera Server调用函数open()时,函数open()可以向CameraServer返回调用通知2,用于向Camera Server指示函数open()已调用。
实施本申请提供的扫码方法,可以提高电子设备100的扫码效率。如图9中的(a)所示,如果没有实施本申请提供的扫码方法,调用open函数时初始化摄像头。Configurestream中的部分操作需要等待初始化摄像头完成后才执行,即,当初始化摄像头在Tf1完成时,Configurestream中后续的部分操作才开始执行。因此,等待时间越长,Configurestream中部分操作执行的时间点越晚,扫码效率越低。然而,如图9中的(b)所示,在实施本申请提供的扫码方法时,初始化摄像头的时间点可以提前至创建活动阶段和open阶段之间的时间间隔内,完成初始化摄像头的时间点Tf1也可以提前,这样,Configurestream中的部分操作执行的时间点也可以提前,优化了电子设备100的扫码性能,提高扫码效率,加快了电子设备100的扫码响应。在一些实现中,实施本申请提供的扫码方法,完成初始化摄像头的时间点Tf1也可以在T3之前(即调用Configurestream函数之前),图9中未示出。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

Claims (13)

1.一种扫码方法,其特征在于,应用于包括多个摄像头的电子设备,所述多个摄像头包括第一摄像头和第二摄像头,所述第一摄像头和所述第二摄像头不相同,所述方法包括:
接收打开扫码功能的第一操作;
响应于所述第一操作,初始化第一摄像头;
当确定启动所述扫码功能对应的摄像头时,判断所述扫码功能对应的摄像头是否为所述第一摄像头;
若所述扫码功能对应的摄像头为所述第一摄像头,不再初始化所述第一摄像头,并通过所述第一摄像头采集图像;其中,所述图像包括图形识别码;
若所述扫码功能对应的摄像头为第二摄像头,初始化所述第二摄像头,并通过所述第二摄像头采集所述图像;
从所述图像中识别出所述图形识别码,执行所述图形识别码对应的功能。
2.根据权利要求1所述的方法,其特征在于,在接收打开扫码功能的第一操作之后,所述方法还包括:
显示扫码界面;
在从所述图像中识别出所述图形识别码,执行所述图形识别码对应的功能之前,所述方法还包括:
在所述扫码界面中显示出所述图像。
3.根据权利要求1所述的方法,其特征在于,若所述扫码功能对应的摄像头为所述第一摄像头,不再初始化所述第一摄像头,并通过所述第一摄像头采集图像,具体包括:
若所述扫码功能对应的摄像头为所述第一摄像头,判断所述第一摄像头的初始化操作是否已完成。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述第一摄像头的初始化操作已完成,不再初始化所述第一摄像头,并通过所述第一摄像头采集图像;
若所述第一摄像头的初始化操作未完成但已启动,等待所述第一摄像头初始化完成后,通过所述第一摄像头采集图像。
5.根据权利要求1所述的方法,其特征在于,若所述扫码功能对应的摄像头为第二摄像头,初始化所述第二摄像头,并通过所述第二摄像头采集所述图像,具体包括:
若所述扫码功能对应的摄像头为第二摄像头,判断所述第一摄像头的初始化操作是否已完成或已启动;
若所述第一摄像头的初始化操作已完成或已启动,关闭所述第一摄像头,初始化所述第二摄像头,并通过所述第二摄像头采集所述图像。
6.根据权利要求4所述的方法,其特征在于,若所述第一摄像头的初始化操作已完成,不再初始化所述第一摄像头,并通过所述第一摄像头采集图像,具体包括:
读取第一标志位;其中,所述第一标志位用于指示所述第一摄像头的初始化状态;
若所述第一标志位的值为第一值,确定所述第一摄像头的初始化操作已完成,不再初始化所述第一摄像头,并通过所述第一摄像头采集图像。
7.根据权利要求4所述的方法,其特征在于,若所述第一摄像头的初始化操作未完成但已启动,等待所述第一摄像头初始化完成后,通过所述第一摄像头采集图像,具体包括:
读取第一标志位;其中,所述第一标志位用于指示所述第一摄像头的初始化状态;
若所述第一标志位的值为第二值,确定所述第一摄像头的初始化操作未完成但已启动,等待所述第一摄像头初始化完成后,通过所述第一摄像头采集图像。
8.根据权利要求1所述的方法,其特征在于,响应于所述第一操作,初始化第一摄像头,具体包括:
响应于所述第一操作,通过第一接口启动第一线程;
所述第一线程初始化所述第一摄像头。
9.根据权利要求1所述的方法,其特征在于,若所述扫码功能对应的摄像头为所述第一摄像头,不再初始化所述第一摄像头,并通过所述第一摄像头采集图像,具体包括:
若所述扫码功能对应的摄像头的标识和所述第一摄像头的标识相同,则确定所述扫码功能对应的摄像头为所述第一摄像头,不再初始化所述第一摄像头,并通过所述第一摄像头采集图像。
10.根据权利要求1所述的方法,其特征在于,所述第一摄像头为后置主摄像头。
11.一种电子设备,其特征在于,包括:多个摄像头、一个或多个处理器、一个或多个存储器和显示屏;所述一个或多个存储器与所述多个摄像头、所述一个或多个处理器耦合,所述一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当所述一个或多个处理器和所述多个摄像头执行所述计算机指令时,使得所述电子设备执行如权利要求1-10中的任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中的任一项所述的方法。
13.一种芯片系统,其特征在于,包括处理电路和接口电路,所述接口电路用于接收代码指令并传输至所述处理电路,所述处理电路用于运行所述代码指令以执行如权利要求1-10中任一项所述的方法。
CN202410145977.6A 2024-02-02 2024-02-02 扫码方法及电子设备 Active CN117725941B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410145977.6A CN117725941B (zh) 2024-02-02 2024-02-02 扫码方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410145977.6A CN117725941B (zh) 2024-02-02 2024-02-02 扫码方法及电子设备

Publications (2)

Publication Number Publication Date
CN117725941A true CN117725941A (zh) 2024-03-19
CN117725941B CN117725941B (zh) 2024-06-25

Family

ID=90209098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410145977.6A Active CN117725941B (zh) 2024-02-02 2024-02-02 扫码方法及电子设备

Country Status (1)

Country Link
CN (1) CN117725941B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004260471A (ja) * 2003-02-25 2004-09-16 Casio Comput Co Ltd 電子カメラ、及び電子カメラの起動方法、プログラム
WO2020119413A1 (zh) * 2018-12-10 2020-06-18 维沃移动通信有限公司 摄像头的启动方法、终端及计算机可读存储介质
CN111526232A (zh) * 2020-05-13 2020-08-11 青岛海信移动通信技术股份有限公司 一种基于双屏终端的摄像头控制方法及双屏终端
CN112489322A (zh) * 2020-11-18 2021-03-12 上海商米科技集团股份有限公司 一种用于pos机产品的快速扫码方法
CN114970589A (zh) * 2021-02-27 2022-08-30 华为技术有限公司 一种扫码方法及终端
CN115022495A (zh) * 2021-12-30 2022-09-06 荣耀终端有限公司 拍摄方法、可读介质和电子设备
WO2023015956A1 (zh) * 2021-08-09 2023-02-16 荣耀终端有限公司 控制摄像头的方法、电子设备及计算机可读存储介质
CN116563830A (zh) * 2022-01-27 2023-08-08 北京小米移动软件有限公司 识别码的识别方法、装置及存储介质
CN116720533A (zh) * 2022-09-19 2023-09-08 荣耀终端有限公司 扫码方法、电子设备及可读存储介质
CN117278850A (zh) * 2023-10-30 2023-12-22 荣耀终端有限公司 一种拍摄方法及电子设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004260471A (ja) * 2003-02-25 2004-09-16 Casio Comput Co Ltd 電子カメラ、及び電子カメラの起動方法、プログラム
WO2020119413A1 (zh) * 2018-12-10 2020-06-18 维沃移动通信有限公司 摄像头的启动方法、终端及计算机可读存储介质
CN111526232A (zh) * 2020-05-13 2020-08-11 青岛海信移动通信技术股份有限公司 一种基于双屏终端的摄像头控制方法及双屏终端
CN112489322A (zh) * 2020-11-18 2021-03-12 上海商米科技集团股份有限公司 一种用于pos机产品的快速扫码方法
CN114970589A (zh) * 2021-02-27 2022-08-30 华为技术有限公司 一种扫码方法及终端
WO2023015956A1 (zh) * 2021-08-09 2023-02-16 荣耀终端有限公司 控制摄像头的方法、电子设备及计算机可读存储介质
CN115022495A (zh) * 2021-12-30 2022-09-06 荣耀终端有限公司 拍摄方法、可读介质和电子设备
CN116563830A (zh) * 2022-01-27 2023-08-08 北京小米移动软件有限公司 识别码的识别方法、装置及存储介质
CN116720533A (zh) * 2022-09-19 2023-09-08 荣耀终端有限公司 扫码方法、电子设备及可读存储介质
CN117278850A (zh) * 2023-10-30 2023-12-22 荣耀终端有限公司 一种拍摄方法及电子设备

Also Published As

Publication number Publication date
CN117725941B (zh) 2024-06-25

Similar Documents

Publication Publication Date Title
CN112291764B (zh) 一种内容接续系统
KR20210092795A (ko) 음성 제어 방법 및 전자 장치
US20210152685A1 (en) Method for Quickly Opening Application or Application Function, and Terminal
WO2021121052A1 (zh) 一种多屏协同方法、系统及电子设备
CN110910872A (zh) 语音交互方法及装置
WO2022100304A1 (zh) 应用内容跨设备流转方法与装置、电子设备
WO2021135734A1 (zh) 应用中传输文件的方法、电子设备及系统
CN112130788A (zh) 一种内容分享方法及其装置
CN114079691B (zh) 一种设备识别方法及相关装置
CN114442970B (zh) 一种应用窗口的投屏方法与电子设备
CN114356195B (zh) 一种文件传输的方法及相关设备
WO2022228065A1 (zh) 功能跳转方法及电子设备
WO2023222128A1 (zh) 一种显示方法和电子设备
CN117077703A (zh) 图像处理方法及电子设备
CN117725941B (zh) 扫码方法及电子设备
WO2022088963A1 (zh) 一种电子设备解锁方法和装置
CN117135448B (zh) 拍摄的方法和电子设备
CN116069723B (zh) 文件迁移方法、电子设备及存储介质
WO2024037542A1 (zh) 一种触控输入的方法、系统、电子设备及存储介质
WO2023116511A1 (zh) 内容分享方法和终端设备
CN114006969B (zh) 一种窗口启动方法和电子设备
CN117998195B (zh) 一种相机启动方法、电子设备及可读存储介质
US20240126897A1 (en) Access control method and related apparatus
CN117093119B (zh) 一种应用页面切换方法
WO2022247265A1 (zh) 创建聊天界面的方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant