一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

相机控制方法及系统、存储装置与流程

2022-06-08 22:04:10 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体涉及一种相机控制方法及系统、存储装置。


背景技术:

2.在android等程序开发领域,android原生系统、或诸如miui等基于android二次开发的系统、或诸如鸿蒙os等兼容android应用程序的系统,这些系统框架通常提供了一套标准api(application programming interface,应用程序接口)用于控制相机,以实现诸如预览、录制、拍照等其他相机功能。
3.经研究发现,在存在多个相机使用请求等复杂场景下,直接采用原生系统框架所提供的api极易发生相机失控,从而导致相机无法正常使用等异常情况。有鉴于此,如何提高相机控制的稳定性成为亟待解决的问题。


技术实现要素:

4.本发明主要解决的问题是提供一种相机控制方法及系统、存储装置,能够提高相机控制的稳定性。
5.为解决上述技术问题,本发明采用的技术方案是提供一种相机控制方法,该程序运行方法包括:将至少一个相机使用请求以预设数据结构进行暂存;响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道;通过通信通道,控制相机按照相机使用请求的内容进行工作。
6.为解决上述技术问题,本发明采用的另一技术方案是提供一种相机控制系统,包括相机、存储器和处理器,相机、存储器耦接至处理器,其中,处理器用于控制存储器将至少一个相机使用请求以预设数据结构进行暂存,处理器用于响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道,处理器还用于通过通信通道,控制相机按照相机使用请求的内容进行工作。
7.为解决上述技术问题,本发明采用的又一技术方案是提供一种存储装置,存储有能够被处理器运行的程序指令,程序指令用于实现上述相机控制方法。
8.通过上述方案,本发明的有益效果是:通过将至少一个相机使用请求以预设数据结构进行暂存,从而响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道,并通过通信通道,控制相机按照相机使用请求的内容进行工作。故此,通过以预设数据结构将相机使用请求进行暂存,能够有利于实现相机使用请求的集中管理,从而即使在存在多个相机使用请求等复杂场景下,也能够对多个相机使用请求进行统一维护、管控,进而能够降低相机控制复杂度,提高相机控制稳定性。
附图说明
9.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
10.图1是本发明提供的相机控制方法一实施例的流程示意图;
11.图2是本发明提供的相机控制方法另一实施例的流程示意图;
12.图3是本发明提供的相机控制方法又一实施例的流程示意图;
13.图4是本发明提供的相机控制系统一实施例的框架示意图;
14.图5是本发明提供的存储装置一实施例的框架示意图。
具体实施方式
15.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
16.参阅图1,图1是本发明提供的相机控制方法一实施例的结构示意图。具体而言,可以包括如下步骤:
17.步骤s11:将至少一个相机使用请求以预设数据结构进行暂存。
18.在一个实施场景中,相机使用请求可以包括但不限于:录制请求、预览请求、拍照请求等,在此不做限定。需要说明的是,录制请求表示与拍摄视频相关的请求,预览请求表示与在显示界面显示相机视场范围的景象有关的请求,拍照请求表示与拍摄照片相关的请求,也就是说,相机使用请求可以视为用于使相机按照相机使用请求采集图像数据。
19.在一个具体的实施场景中,录制请求具体可以包括:开始录制请求、停止录制请求,预览请求具体可以包括:开启预览请求、关闭预览请求,拍照请求具体可以包括:开始拍照请求、停止拍照请求。需要说明的是,开始录制请求表示请求相机开始拍摄视频,而关闭录制请求表示请求相机停止视频拍摄;类似地,开启预览请求表示请求在显示界面显示相机视场范围的景象,而关闭预览请求表示请求取消在显示界面显示相机视场范围的景象;类似地,开始拍照请求表示请求相机拍摄照片,而停止拍照请求表示请求相机取消拍摄照片。
20.在另一个具体的实施场景中,相机使用请求具体可以是由具有拍摄功能的应用程序发出的。例如,在接收到用户对上述应用程序中的“录制”按钮的点击操作之后,应用程序可以发出开始录制请求,而当再次接收到用户对上述“录制”按钮的点击操作之后,应用程序可以发出停止录制请求,具体可以根据应用程序的实际情况而设置,再次不再一一举例。
21.在一个实施场景中,预设数据结构可以包括但不限于:列表(list)、堆栈(stack)、队列(queue)、链表(link list)等,在此不做限定。
22.在一个具体的实施场景中,相机使用请求具体可以封装为消息,并以预设数据结构进行暂存,从而可以进一步便于多个相机使用请求的暂存,使得相同类型或不同类型的相机使用请求可以共存,进而能够尽可能地降低相机使用请求相互干扰的可能性,并极大方便了相机使用请求在类型、数量层面的扩展。
23.在另一个具体的实施场景中,以android为例,可以采用android的原生类将相机使用请求封装为消息,android的原生类是android系统自带的类,具体可以包括但不限于:
message类,在此不做限定;此外,也可以用户也可以自定义类,并采用自定义类将相机使用请求封装为消息。需要说明的是,类可以理解为类型,基于类可以实例化任意对象。类似地,在诸如miui等基于android二次开发的系统、或诸如鸿蒙os等兼容android应用程序的系统中,可以采用系统的原生类将相机使用请求封装为消息,也可以采用用户自定义类将相机使用请求封装为消息,在此不做限定。
24.在又一个具体的实施场景中,相机使用请求具体可以采用message list暂存。在具有拍摄功能的应用程序发出相机使用请求之后,可以将相机使用请求封装为message并添加至list中,从而能够有利于高效地实现多个相机使用请求的集中管理,以便于后续同时对多个相机使用请求进行处理,从而能够有利于提高处理效率。并行处理多个相机使用请求的具体方式可以参阅下述相关描述,在此暂不追赘述。
25.步骤s12:响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道。
26.在一个实施场景中,如前所述,相机使用请求可以视为用于使相机按照相机使用请求采集图像数据。为了标识图像数据的存储空间,相机使用请求具体可以包括:图像数据的存储空间标识。仍以android为例,相机使用请求包括一个surface,用于指示一块内存空间,从而便于相机将捕捉到的图像数据暂存到该surface所指示的内存空间。此外,为了标识相机使用请求具体的请求内容,相机使用请求还可以包括:相机使用请求的相机使用类型,例如:开始录制、停止录制、开启预览、关闭预览等等,在此不做限定。仍以android为例,具体可以从已暂存的相机使用请求中取出所有surface组成一个surface列表以创建cameracapturesession(即相机捕获会话),需要说明的是,cameracapturesession是一个事务,用于向相机发送获取图像数据的请求。此外,cameracapturesession主要有setrepeatingrequest(即设置重复请求)和capture(即捕获)两个方法,其中,setrepeatingrequest用于重复请求获取图像数据(如,预览、连拍等),capture用于单张拍照。在此基础上,在cameracapturesession配置完成之后,可以认为通信通道建立完成。需要说明的是,cameracapturesession、request、setrepeatingrequest、capture等都是android的相机接口程序(即camera api)中所定义的程序,其具体程序代码在此不再赘述。也就是说,在利用已暂存的相机使用请求配置完成cameracapturesession之后,这些已暂存的相机使用请求均对应于同一个cameracapturesession,在此基础上,即可基于该cameracapturesession所建立的通信通道,控制相机按照上述已暂存的相机使用请求所请求的内容进行工作。
27.在一个实施场景中,本公开实施例步骤s12及其后续步骤,具体可以在检测到相机状态为预设状态下执行。具体地,相机状态可以包括:已开启、已关闭、正在开启、正在关闭,预设状态可以为已开启。仍以android为例,相机状态(即cameradevice的状态)具体包括:opening(即正在开启)、opened(即已开启)、closing(即正在关闭)、closed(即已关闭)。需要说明的是,上述cameradevice(即相机设备)是android中所定义的一个抽象类,可用于表示相机。上述方式,能够在检测到相机状态为预设状态的情况下,再响应于已暂存的相机使用请求建立与相机的通信通道,从而能够提高建立通信通道的成功率。
28.在另一个实施场景中,在检测到相机状态不为上述预设状态,且已暂存的相机使用请求不少于一个的情况下,可以自动切换相机状态至预设状态,再执行本公开实施例中
的步骤s12以及后续步骤。仍以android为例,在检测到相机状态不为上述预设状态,且已暂存的相机使用请求不少于一个的情况下,可以通过opencamera(即打开相机)将cameradevice切换至opened状态。需要说明的是,opencamera也是android的相机接口程序(即camera api)中所定义的程序,其主要用于用于打开相机,其具体程序代码在此不再赘述。上述,能够在检测到相机状态不为上述预设状态,且已暂存的相机使用请求不少于一个的情况下,自动切换相机状态至预设状态,再响应于已暂存的相机使用请求建立与相机的通信通道,从而能够提高响应相机使用请求的速度,提高用户体验。
29.在一个实施场景中,在除已暂存的相机使用请求之外,还可以在控制相机的整个过程中,还可能获取到新的相机使用请求,新的相机使用请求也可以按照前述描述暂存至预设数据结构。在此基础上,若获取到新的相机使用请求,则可以响应于新的相机使用请求,关闭已创建的通信通道,并响应于已暂存的相机使用请求和新的相机使用请求,利用相机接口程序重新建立通信通道。上述方式,可以进一步提高对相机使用请求的响应速率。此外,由于响应于已暂存的相机使用请求和新的相机使用请求重新建立通信通道,有利于提高后续控制相机按照新的相机使用请求的内容进行工作的成功率。需要说明的是,如前所述,相机使用请求用于使相机按照相机使用请求采集图像数据,且相机使用请求包括图像数据的存储空间标识,且前述所指的新的相机使用请求的存储空间标识不同于已暂存的相机使用请求的存储空间标识。
30.在一个具体的实施场景中,在获取到新的相机使用请求之后,可以检测该新的相机使用请求所包含的存储空间标识是否已包含于已暂存的相机使用请求所包含的存储空间标识中,若否,则可以关闭已创建的通信通道,并响应于已暂存的相机使用请求和新的相机使用请求,利用相机接口程序重新建立通信通道。仍以android为例,已暂存的相机使用请求包括:开启预览请求、开始录制请求,则对应地,已暂存的相机使用请求所包含的存储空间标识,即surface列表可以表示为[a,b],其中,a指示开启预览请求所包含的存储空间标识,b指示开始录制请求所包含的存储空间标识,若新的相机使用请求为开始拍照请求,则新的相机使用请求理论上不同于surface列表[a,b]所包含的任一存储空间标识,例如可以记为c,由于未包含于surface列表[a,b]中,若后续通过仍然通过已创建的通信通道,控制相机按照该开始拍照请求的内容进行工作,将导致相机暂停工作,故此可以关闭已创建的通信通道,并响应于更新后的surface列表[a,b,c]重新建立与相机的通信通道,能够有利于提高后续控制相机按照新的相机使用请求的内容进行工作的成功率。
[0031]
在另一个具体的实施场景中,新的相机使用请求的存储空间标识也可能与已暂存的相机使用请求的存储空间标识相同。在此情况下,检测到新的相机使用请求所包含的存储空间标识已包含于已暂存的相机使用请求所包含的存储空间标识中,可以将新的相机使用请求暂存至上述预设数据结构,并继续执行本公开实施例中的下述步骤s13,即可以直接利用已创建的通信通道,而无需关闭已创建的通信通道。仍以android为例,已暂存的相机使用请求包括:开启预览请求、开始录制请求,则对应地,已暂存的相机使用请求所包含的存储空间标识,即surface列表可以表示为[a,b],其中,a指示开启预览请求所包含的存储空间标识,b指示开始录制请求所包含的存储空间标识,若新的相机使用请求为已暂存的开启预览请求对应的关闭预览请求,则新的相机使用请求所包含的存储空间标识也为a,即新的相机使用请求所包含的存储空间标识包含于已暂存的相机使用标识所包含的存储空间
标识内,此时,可以将新的相机使用请求(即关闭预览请求)添加至预设数据结构中,即此时,预设数据结构中已暂存的相机使用请求更新为包括:开启预览请求、开始录制请求、关闭预览请求。
[0032]
步骤s13:通过通信通道,控制相机按照相机使用请求的内容进行工作。
[0033]
在与相机之间的通信通道建立完成之后,即可通过该通信通道,控制相机按照相机使用请求的内容进行工作。仍以android为例,具体可以将暂存的相机使用请求所包含的surface列表作为参数向cameracapturesession发出repeating request,并分别解析每个相机使用请求,控制相机按照相机使用请求的内容进行工作。例如,对于开启录制请求,可以从中解析出mediarecorder,并调用mediarecorder接口启动录制。其他情况可以以此类推,在此不再一一举例。
[0034]
在一个具体的实施场景中,本公开实施例以及本发明其他公开实施例所公开的步骤可以通过诸如java、c、c 等编程语言编写为程序,并集成于具有拍摄功能的应用程序中;或者,本公开实施例以及本发明其他公开实施例所公开的步骤可以通过诸如java、c、c 等编程语言编写为程序,并作为与具有拍摄功能的应用程序相互独立的程序,从而使其能够被多个具有拍摄功能的应用程序复用,在此不做限定。
[0035]
在另一个具体的实施场景中,预设数据结构(如,前述message list)中可能暂存有多个相机使用请求,为了提高相机使用请求的处理效率,可以通过通信通道,同时按照多个相机使用请求的内容进行工作。
[0036]
例如,可以屏幕上可以对应设有多个界面,多个界面可以用于分别显示执行不同存储空间标识对应的相机使用请求所采集到的图像数据。仍以android为例,屏幕上以2行*2列的排列方式,对应设置有界面1、界面2、界面3和界面4,如前所述,surface列表为[a,b,c],其中,存储空间标识a对应于相机使用请求:开启预览请求,存储空间标识b对应于相机使用请求:开始录制请求,存储空间标识c对应于相机使用请求:开始拍照请求,则界面1可以显示执行相机使用请求“开启预览请求”所采集到的图像数据,界面2可以显示执行相机使用请求“开始录制请求”所采集到的图像数据,界面3可以显示执行相机使用请求“开始拍照请求”所采集到的图像数据。其他情况可以以此类推,在此不再一一举例。
[0037]
或者,还可以对应有多个显示屏幕,多个显示屏幕用于分别显示执行不同存储空间标识对应的相机使用请求所采集到的图像数据。仍以android为例,可以设置有4块显示屏幕,如前所述,surface列表为[a,b,c],其中,存储空间标识a对应于相机使用请求:开启预览请求,存储空间标识b对应于相机使用请求:开始录制请求,存储空间标识c对应于相机使用请求:开始拍照请求,则显示屏幕1可以显示执行相机使用请求“开启预览请求”所采集到的图像数据,显示屏幕2可以显示执行相机使用请求“开始录制请求”所采集到的图像数据,显示屏幕3可以显示执行相机使用请求“开始拍照请求”所采集到的图像数据。其他情况可以以此类推,在此不再一一举例。
[0038]
上述方案,通过将相机使用请求暂存,从而响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道,并通过通信通道,控制相机按照相机使用请求的内容进行工作。故此,通过将相机使用请求暂存,能够有利于实现相机使用请求的集中管理,从而即使在存在多个相机使用请求等复杂场景下,也能够对多个相机使用请求进行统一维护、管控,进而能够降低相机控制复杂度,提高相机控制稳定性。
[0039]
请参阅图2,图2是本发明提供的相机控制方法另一实施例的流程示意图。本公开实施例中,相机使用请求用于使相机按照相机使用请求采集图像数据,相机使用请求包括:图像数据的存储空间标识和相机使用请求的相机使用类型,关于存储空间标识和相机使用类型具体可以参阅前述公开实施例中的相关描述,在此不再赘述。本公开实施例具体可以包括如下步骤:
[0040]
步骤s21:将相机使用请求暂存。
[0041]
具体可以参阅前述公开实施例中的步骤,在此不再赘述。
[0042]
步骤s22:响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道。
[0043]
具体可以参阅前述公开实施例中的步骤,在此不再赘述。
[0044]
步骤s23:将存储空间标识相同且相机使用类型相反的一对相机使用请求,作为目标使用请求对。
[0045]
本公开实施例中,可以采用存储空间标识来辨别相机使用请求所指向的对象。仍以android为例,如前述公开实施例所描述,相机使用请求包括一个surface,用于指示一块内存空间,从而便于相机将捕捉到的图像数据暂存到该surface所指示的内存空间,故此,若两个相机使用请求的surface相同,可以认为两个相机使用请求指向同一对象。例如,某一开启预览请求所包含的surface和某一关闭预览请求所包含的surface相同,即可以认为上述开启预览请求和关闭预览请求指向的是同一预览界面;或者,某一开始录制请求所包含的surface和某一停止录制请求所包含的surface相同,即可以认为上述开始录制请求和停止录制请求指向同一录制界面,其他情况可以以此类推,在此不再一一举例。
[0046]
需要说明的是,本公开实施例所指的相机使用类型相反是指完全相反的使用行为。不失一般性地,相反的相机使用类型可以包括:开始录制和停止录制、开启预览和关闭预览等等,在此不再一一举例。
[0047]
在一个具体的实施场景中,仍以前述公开实施例中的surface列表[a,b,c]为例,如前所述,a指示开启预览请求所包含的存储空间标识,b指示开始录制请求所包含的存储空间标识,c指示开始拍照请求所包含的存储空间标识,由此可见,这三个相机使用请求中,不存在存储空间标识相同且相机使用类型相反的目标使用请求对;或者,以surface列表[a,b,a]为例,第一个a指示开启预览请求所包含的存储空间标识,b指示开始录制请求所包含的存储空间标识,第二个a指示关闭预览请求所包含的存储空间标识,由此可见,这三个相机使用请求中,开启预览请求和关闭预览请求满足存储空间标识相同且相机使用类型相反,故此可以将开启预览请求和关闭预览请求,作为目标使用请求对。其他情况可以以此类推,在此不再一一举例。
[0048]
步骤s24:在已暂存的相机使用请求中,删除目标使用请求对。
[0049]
在确定已暂存的相机使用请求中的所包含的目标使用请求对之后,可以将在已暂存的相机使用请求中,删除目标使用请求对,从而能够多个相机使用请求中,抵消相机使用类型相反且存储空间标识相同的相机使用请求,特别在快速连续开关某个预览界面(或某个录制)等情况下,能够直接抵消这些快速连续开关过程中的中间过程请求,从而能够确保预览界面的开关状态(或录制的开关状态)与最后一次开/关操作一致。
[0050]
在一个实施场景中,上述步骤s23和步骤s24也可以在建立通信通道之前执行,即
在建立通信通道之前,先对已暂存的相机使用请求进行分析,确定其中所包含的目标使用请求对,并将其从已暂存的相机使用请求中删除,在此基础上,再响应于删除目标使用请求你对之后所暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道。上述方式,可以在连续快速的相机使用请求的速度超过通信通道建立的速度的情况下,直接抵消中间过程的相机使用请求,从而能够确保诸如预览界面的开关状态(或录制的开关状态)与最后一次开/关操作一致。
[0051]
步骤s25:通过通信通道,控制相机按照相机使用请求的内容进行工作。
[0052]
具体可以参阅前述公开实施例中的步骤,在此不再赘述。
[0053]
区别于前述公开实施例,在通过通信通道,控制相机按照相机使用请求的内容进行工作之前,将存储空间标识相同且相机使用类型相反的一对相机使用请求,作为目标使用请求对,并在已暂存的相机使用请求中,删除目标使用请求对,从而能够多个相机使用请求中,抵消相机使用类型相反且存储空间标识相同的相机使用请求,特别在快速连续开关某个预览界面(或某个录制)等情况下,能够直接抵消这些快速连续开关过程中的中间过程请求,从而能够确保诸如预览界面的开关状态(或录制的开关状态)与最后一次开/关操作一致,进而能够有利于进一步提高相机控制的稳定性。
[0054]
请参阅图3,图3是本发明提供的相机控制方法又一实施例的流程示意图。本公开实施例中,初始的相机状态默认为已关闭,例如,在android中,cameradevice为closed状态。需要说明的是,图3中圆角矩形表示相机状态,直角矩形和菱形表示具体执行步骤。本公开实施例具体可以包括如下步骤:
[0055]
步骤s301:在检测到相机使用请求的情况下,将相机使用请求预设数据结构进行暂存,并将相机状态切换至已开启。
[0056]
在检测到相机使用请求的情况下,可以将相机使用请求暂存,并将相机状态切换至已开启。此外,在未检测到相机使用请求的情况下,可以维持相机状态为已关闭。
[0057]
在一个实施场景中中,相机使用请求可以封装为消息,并以预设数据结构进行暂存,具体可以参阅前述公开实施例中相关描述,在此不再赘述。本公开实施例中,将相机使用请求暂存可以先于将相机状态切换至已开启执行,再在相机状态切换至已开启之后,响应已暂存的相机使用请求,从而能够随时随地无差别地发出相机使用请求,而无需等待相机状态切换至已开启。
[0058]
请结合参阅图3,相机状态在已关闭的状态下,切换至已开启,需经历正在开启这一状态。以android为例,通过调用opencamera可以切换至正在开启(即opening)状态,并由正在开启状态切换至已开启状态。
[0059]
在一个实施场景中,在相机控制的整个过程中,若在预设时长内获取到对相机的多个相机开关指令,则可以响应于获取到的多个相机开关指令,将相机状态切换至与最后一个相机开关指令对应的相机状态。例如,预设时长内获取到如下相机开关指令:相机开启指令、相机关闭指令、相机开启指令、相机关闭指令,在此情形下,若一一对上述四个相机开关指令予以响应,可能会拖慢相机响应速度,则可以直接将相机状态切换至最后一个相机开关指令(即相机关闭指令)对应的相机状态,从而可以直接将中间过程所涉及的前三个指令(即,相机开启指令、相机关闭指令、相机开启指令)进行抵消,提高相机响应速度。上述方式,可以将预设时长内来不及立即的开和关抵消,提高相机响应速度。
[0060]
在一个具体的实施场景中,相机开关指令包括以下任一种:相机开启指令、相机关闭指令,相机开启指令对应的相机状态为已开启,相机关闭指令对应的相机状态为已关闭。
[0061]
在另一个具体的实施场景中,预设时长可以根据实际情况进行设置。例如,在对相机响应速度要求较高的情况下,预设时长可以设置地较小,而在对相机响应速度要求相对宽松的情况下,预设时长可以设置地稍大。
[0062]
在又一具体的实施场景中,若相机状态切换至已开启,则可以响应于切换至已开启,获取已暂存的相机使用请求,并执行下述步骤s303以及后续步骤,即执行响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道的步骤以及后续步骤;或者,若相机状态切换至已关闭,则可以删除已暂存的相机使用请求。上述方式,能够有利于将相机使用请求的流程管理与相机状态的开关管理进行解耦,从而能够有利于简化相机控制,提高相机控制的稳定性。
[0063]
在又一个具体的实施场景中,当由于具有拍摄功能的应用程序出现错误等原因而导致相机状态切换至已关闭时,可以重新将相机状态切换至已开启,并获取关闭前已暂存的相机使用请求,从而重新执行下述步骤s303以及后续步骤,即执行响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道的步骤以及后续步骤。
[0064]
步骤s302:检测预设数据结构中是否有相机使用请求,若是,则执行步骤s303,否则执行步骤s310。
[0065]
如前所述,在相机控制的整个过程中,若在预设时长内获取到对相机的多个相机开关指令,则可以响应于获取到的多个相机开关指令,将相机状态切换至与最后一个相机开关指令对应的相机状态。故此,为了提高相机控制的鲁棒性,在建立通信通道之前,需要再次检测预设数据结构中是否有相机使用请求,若是,则执行下述步骤s303以及后续步骤,若否,则可以直接执行下述步骤s310,即将相机状态切换至空闲状态。
[0066]
步骤s303:响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道。
[0067]
具体可以参阅前述公开实施例中的步骤,在此不再赘述。例如,仍以android为例,可以解析message list获取已暂存的相机使用请求的存储空间标识surface,并基于存储空间标识surface,创建cameracapturesession,具体可以参阅前述公开实施例中的相关描述,在此不再赘述。
[0068]
步骤s304:通过通信通道,控制相机按照相机使用请求的内容进行工作。
[0069]
具体可以参阅前述公开实施例中的步骤,在此不再赘述。例如,仍以android为例,可以通过调用repeatingrequest方法来实现控制相机按照相机使用请求的内容进行工作,具体可以参阅前述公开实施例中的相关描述,在此不再赘述。
[0070]
步骤s305:检测是否有新的相机使用请求,若是,则执行步骤s306,若否,则执行步骤s308。
[0071]
在控制相机按照相机使用请求的内容进行工作的过程中,还可以检测是否有新的相机使用请求,若存在新的相机使用请求,则可以执行下述步骤s306,若未检测到新的相机使用请求,则可以执行下述步骤s308。需要说明的是,如前所述公开实施例所述,相机使用请求用于使相机按照相机使用请求采集图像数据,且相机使用请求包括图像数据的存储空间标识,且前述所指的新的相机使用请求的存储空间标识不同于已暂存的相机使用请求的
存储空间标识。
[0072]
步骤s306:关闭已创建的通信通道,并基于已有的相机使用请求,利用相机接口程序重新建立通信通道。
[0073]
具体可以参阅前述公开实施例中的步骤,在此不再赘述。
[0074]
步骤s307:重新执行步骤s304以及后续步骤。
[0075]
在重建建立通信通道之后,可以通过新的通信通道,控制相机按照相机使用请求的内容进行工作。
[0076]
步骤s308:检测是否有与已暂存的相机使用请求的存储空间标识相同的相机使用请求未被执行,若是,则执行步骤s309,否则执行步骤s310。
[0077]
在控制相机按照相机使用请求的内容进行工作的过程中,还可以检测是否所有与已暂存的相机使用请求的存储空间标识相同的相机使用请求未被执行,若是,则执行步骤s309,否则执行步骤s310。
[0078]
步骤s309:重新执行步骤s304以及后续步骤。
[0079]
在检测到尚有与已暂存的相机使用请求的存储空间标识相同的相机使用请求未被执行的情况下,可以基于已创建的通信通道,继续执行上述步骤s304以及后续步骤。
[0080]
步骤s310:将相机状态切换至空闲状态。
[0081]
在既没有新的相机使用请求,又没有与已暂存的相机使用请求的存储空间标识相同的相机使用请求未被执行的情况下,可以将相机状态切换至空闲状态。
[0082]
在一个实施场景中,如图3所示,在相机状态为空闲状态的情况下,还可以检测是否有新的相机使用请求,若存在新的相机使用请求,则可以执行上述步骤s306以及后续步骤,即可以响应于获取到新的相机使用请求,利用相机接口程序重新建立通信通道,并控制相机按照新的相机使用请求的内容进行工作。
[0083]
区别于前述实施例,通过将相机使用请求暂存,能够有利于实现相机使用请求的集中管理,从而即使在存在多个相机使用请求等复杂场景下,也能够对多个相机使用请求进行统一维护、管控,进而能够降低相机控制复杂度,提高相机控制稳定性。
[0084]
请参阅图4,图4是本发明提供的相机控制系统40一实施例的框架示意图。相机控制系统40包括存储器41、处理器42和相机43,存储器41和相机43耦接至处理器42。具体地,相机控制系统40可以包括但不限于:手机、平板电脑等带具有拍摄功能的电子设备。特别地,相机控制系统40还可以包括行车记录仪、用于监控驾驶员的安全监控设备等等,在此不做限定。
[0085]
具体地,处理器42还可以称为cpu(central processing unit,中央处理单元)。处理器42可能是一种集成电路芯片,具有信号的处理能力。处理器42还可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器42可以由多个集成电路芯片共同实现。
[0086]
本公开实施例中,处理器42用于控制存储器41将至少一个相机使用请求以预设数据结构进行暂存;处理器42用于响应于已暂存的相机使用请求,利用相机接口程序建立与
相机43之间的通信通道;处理器42用于通过通信通道,控制相机43按照相机使用请求的内容进行工作。
[0087]
上述方案,通过将至少一个相机使用请求以预设数据结构进行暂存,从而响应于已暂存的相机使用请求,利用相机接口程序建立与相机之间的通信通道,并通过通信通道,控制相机按照相机使用请求的内容进行工作。故此,通过以预设数据结构将相机使用请求进行暂存,能够有利于实现相机使用请求的集中管理,从而即使在存在多个相机使用请求等复杂场景下,也能够对多个相机使用请求进行统一维护、管控,进而能够降低相机控制复杂度,提高相机控制稳定性。
[0088]
在一些公开实施例中,处理器42用于检测到相机状态为预设状态,执行响应于已暂存的相机使用请求,利用相机接口程序建立与相机43之间的通信通道的步骤以及后续步骤。
[0089]
区别于前述实施例,能够在检测到相机状态为预设状态的情况下,再响应于已暂存的相机使用请求建立与相机的通信通道,从而能够提高建立通信通道的成功率。
[0090]
在一些公开实施例中,处理器42用于检测到相机状态不为预设状态,且已暂存的相机使用请求不少于一个,切换相机状态至预设状态,并执行响应于已暂存的相机使用请求,利用相机接口程序建立与相机43之间的通信通道的步骤以及后续步骤。
[0091]
区别于前述实施例,能够在检测到相机状态不为上述预设状态,且已暂存的相机使用请求不少于一个的情况下,自动切换相机状态至预设状态,再响应于已暂存的相机使用请求建立与相机的通信通道,从而能够提高响应相机使用请求的速度,提高用户体验。
[0092]
在一些公开实施例中,相机状态包括:已开启、已关闭、正在开启、正在关闭,预设状态为已开启。
[0093]
在一些公开实施例中,处理器42用于响应于在预设时长内获取对相机43的多个相机开关指令,将相机状态切换至与最后一个相机开关指令对应的相机状态;其中,相机开关指令包括以下任一种:相机开启指令、相机关闭指令,相机开启指令对应的相机状态为已开启,相机关闭指令对应的相机状态为已关闭。
[0094]
区别于前述实施例,通过响应于在预设时长内获取对相机的多个相机开关指令,将相机状态切换至与最后一个相机开关指令对应的相机状态,可以将预设时长内来不及立即的开和关抵消,提高相机响应速度。
[0095]
在一些公开实施例中,处理器42用于响应于切换至已开启,获取已暂存的相机使用请求,并执行响应于已暂存的相机使用请求,利用相机接口程序建立与相机43之间的通信通道的步骤以及后续步骤;和/或,处理器42用于响应于切换至已关闭,删除已暂存的相机使用请求。
[0096]
区别于前述实施例,能够有利于将相机使用请求的流程管理与相机状态的开关管理进行解耦,从而能够有利于简化相机控制,提高相机控制的稳定性。
[0097]
在一些公开实施例中,处理器42用于响应于获取到新的相机使用请求,关闭已创建的通信通道,并响应于已暂存的相机使用请求和新的相机使用请求,利用相机接口程序重新建立通信通道。
[0098]
区别于前述实施例,通过响应于获取到新的相机使用请求,关闭已创建的通信通道,并响应于已暂存的相机使用请求和新的相机使用请求,利用相机接口程序重新建立通
信通道,可以进一步提高对相机使用请求的响应速率。此外,由于响应于已暂存的相机使用请求和新的相机使用请求重新建立通信通道,有利于提高后续控制相机按照新的相机使用请求的内容进行工作的成功率。
[0099]
在一些公开实施例中,相机使用请求用于使相机按照相机使用请求采集图像数据,相机使用请求包括:图像数据的存储空间标识,新的相机使用请求的存储空间标识不同于已暂存的所述相机使用请求的存储空间标识。
[0100]
区别于前述实施例,相机使用请求用于使相机按照相机使用请求采集图像数据,且相机使用请求包括:图像数据的存储空间标识,新的相机使用请求的存储空间标识不同于已暂存的所述相机使用请求的存储空间标识,能够有效区分是否需要创建新的通信通道,有利于提高相机控制的鲁棒性。
[0101]
在一些公开实施例中,相机使用请求用于使相机43按照相机使用请求采集图像数据,相机使用请求包括:图像数据的存储空间标识和相机使用请求的相机使用类型,处理器42用于将存储空间标识相同且相机使用类型相反的一对相机使用请求,作为目标使用请求对,处理器42用于在已暂存的相机使用请求中,删除目标使用请求对。
[0102]
区别于前述实施例,将存储空间标识相同且相机使用类型相反的一对相机使用请求,作为目标使用请求对,并在已暂存的相机使用请求中,删除目标使用请求对,从而能够多个相机使用请求中,抵消相机使用类型相反且存储空间标识相同的相机使用请求,特别在快速连续开关某个预览界面(或某个录制)等情况下,能够直接抵消这些快速连续开关过程中的中间过程请求,从而能够确保诸如预览界面的开关状态(或录制的开关状态)与最后一次开/关操作一致,进而能够有利于进一步提高相机控制的稳定性。
[0103]
请参阅图5,图5是本发明提供的存储装置50一实施例的框架示意图。存储装置50存储有能够被处理器运行的程序指令501,程序指令501用于实现上述任一相机控制方法实施例中的步骤。
[0104]
上述方案,能够通过以预设数据结构将相机使用请求进行暂存,能够有利于实现相机使用请求的集中管理,从而即使在存在多个相机使用请求等复杂场景下,也能够对多个相机使用请求进行统一维护、管控,进而能够降低相机控制复杂度,提高相机控制稳定性。
[0105]
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0106]
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
[0107]
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
[0108]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的
部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
[0109]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0110]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献