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

一种终端设备和相机资源共享方法

文献发布时间:2023-06-19 11:32:36


一种终端设备和相机资源共享方法

技术领域

本申请涉及图像采集技术领域,特别涉及一种终端设备和相机资源共享方法。

背景技术

随着影像技术的不断发展以及终端设备的业务不断丰富,用户的需求也日渐增多。在一些场景中,用户可以使用外接摄像头来拓展终端设备的相机业务。终端设备连接外接摄像头后,外接摄像头与移动设备自带的内置摄像头使用相同的公共相机资源。

由于外接摄像头在使用过程中与用户界面的交互较少,因此通常在终端设备的后台运行。并且,外接摄像头的启动过程通常不经过Framework标准接口,而是通过自定义hal直接调用公共相机资源。所以,终端设备无法监测到外接摄像头正在运行。

在外接摄像头正在运行时,外接摄像头正在占用公共相机资源。此时,如果启动终端设备自带的内置摄像头,则相机应用再次调用公共相机资源,将导致公共相机资源冲突。如果公共相机资源发生冲突,则需要重新启动终端设备后,才能再次使用内置摄像头。

发明内容

本申请提供一种终端设备和相机资源共享方法,用以解决相关技术中存在的公共相机资源发生冲突导致需重启终端设备的问题。

第一方面,本申请实施例提供的一种终端设备,包括处理器、内置摄像头以及用于连接外接摄像头的外设接口;

若所述外设接口连接有外接摄像头,所述内置摄像头和所述外接摄像头在开启后均使用公共相机资源;

所述处理器被配置为:响应开启内置摄像头的操作,确定所述外接摄像头的状态;若所述外接摄像头处于开启状态,控制所述外接摄像头释放公共相机资源,并开启所述内置摄像头。

本申请实施例提供的终端设备,当外设接口连接有外接摄像头时,处理器响应开启内置摄像头的操作,先确定外接摄像头的状态。如果外接摄像头处于开启状态,控制外接摄像头释放公共相机资源,并开启内置摄像头,以避免外接摄像头正在占用公共相机资源时,内置摄像头再次调用公共相机资源,避免公共相机资源发生冲突。

在一种可能的实现方式中,所述内置摄像头由终端设备的自带相机应用控制开启或关闭;所述处理器还被配置为:

通过所述终端设备的自带相机应用响应开启内置摄像头的操作,通过读取所述外接摄像头对应的状态信息确定所述外接摄像头的状态,其中,所述外接摄像头对应的状态信息是在所述外接摄像头开启或关闭时设置的。

该实施例提供的终端设备,设置与外接摄像头对应的状态信息,在外接摄像头开启或关闭时设置该状态信息。当自带相机应用接收到开启内置摄像头的操作时,可以通过读取外接摄像头对应的状态信息确定外接摄像头的状态,进而确定公共相机资源是否被占用。

在一种可能的实现方式中,所述处理器还被配置为:

当通过所述自带相机应用响应开启内置摄像头的操作时,若所述外接摄像头处于开启状态,通过所述自带相机应用广播需用所述公共相机资源的系统广播,在等待预设时长后开启所述内置摄像头;并通过所述操作系统根据监听到的所述系统广播,控制所述外接摄像头释放所述公共相机资源。

该实施例提供的终端设备,优先满足自带相机应用使用公共相机资源的需求。当通过自带相机应用响应开启内置摄像头的操作时,若外接摄像头处于开启状态,通过自带相机应用广播需用公共相机资源的系统广播,操作系统在监听到系统广播后,控制外接摄像头释放公共相机资源。自带相机应用发送系统广播后,等待预设时长,以等待外接摄像头在预设时长内释放公共相机资源,然后开启内置摄像头。

在一种可能的实现方式中,在外接摄像头与所述终端设备连接后,所述处理器还被配置为:响应开启所述外接摄像头的操作,将所述外接摄像头对应的状态信息设置为开启状态,占用所述公共相机资源,并开启外接摄像头。

在一种可能的实现方式中,所述处理器还被配置为:

响应关闭所述外接摄像头的操作,释放所述公共相机资源,将所述外接摄像头对应的状态信息设置为关闭状态,并关闭外接摄像头。

该实施例提供的终端设备,当外接摄像头的状态发生变化时,对外接摄像头对应的状态信息进行设置,当外设接口连接有外接摄像头时,以使终端设备在需要开启内置摄像头时,可以根据外接摄像头对应的状态信息确定外接摄像头是否处于开启状态。如果外接摄像头处于开启状态,控制外接摄像头释放公共相机资源,并开启内置摄像头,以避免外接摄像头正在占用公共相机资源时,内置摄像头再次调用公共相机资源,避免公共相机资源发生冲突。

第二方面,本申请实施例提供的一种相机资源共享方法,应用于终端设备;所述方法包括:

若接收到开启内置摄像头的操作,并且检测到所述终端设备上连接有外接摄像头,确定所述外接摄像头的状态;

若所述外接摄像头处于开启状态,控制所述外接摄像头释放公共相机资源,并开启所述内置摄像头;所述公共相机资源是所述内置摄像头和所述外接摄像头在开启后使用的相机资源。

在一种可能的实现方式中,确定所述外接摄像头的状态,包括:

所述终端设备的自带相机应用响应开启内置摄像头的操作,通过读取所述外接摄像头对应的状态信息确定所述外接摄像头的状态;其中,所述外接摄像头对应的状态信息是在所述外接摄像头开启或关闭时设置的。

在一种可能的实现方式中,所述自带相机应用响应开启内置摄像头的操作;

若所述外接摄像头处于开启状态,控制所述外接摄像头释放公共相机资源,并开启所述内置摄像头,包括:

若所述外接摄像头处于开启状态,所述自带相机应用广播需用所述公共相机资源的系统广播,并等待预设时长后开启所述内置摄像头;

所述操作系统根据监听到的所述系统广播,控制所述外接摄像头释放所述公共相机资源。

在一种可能的实现方式中,在外接摄像头与所述终端设备连接后,所述方法还包括:

响应开启所述外接摄像头的操作,将所述外接摄像头对应的状态信息设置为开启状态,占用所述公共相机资源,并开启外接摄像头。

在一种可能的实现方式中,开启外接摄像头之后,所述方法还包括:

响应关闭所述外接摄像头的操作,释放所述公共相机资源,将所述外接摄像头对应的状态信息设置为关闭状态,并关闭外接摄像头。

第二方面中任意一种实现方式所带来的技术效果可参见第一方面中对应的实现方式所带来的技术效果,此处不再赘述。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种终端设备的硬件配置框图;

图2为本申请实施例提供的一种终端设备与外接摄像头连接的结构示意图;

图3为本申请实施例提供的一种终端设备的软件结构框图;

图4为本申请实施例提供的一种终端设备上的用户界面的示意图;

图5为本申请实施例提供的一种外接摄像头的硬件配置框图;

图6为本申请实施例提供的一种相机资源共享方法的交互流程图;

图7为本申请实施例提供的另一种相机资源共享方法的交互流程图;

图8为本申请实施例提供的一种相机资源共享方法的流程图;

图9为本申请实施例提供的另一种相机资源共享方法的流程图;

图10为本申请实施例提供的另一种相机资源共享方法的流程图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

下面对文中出现的一些词语进行解释:

1、本申请实施例中属于“终端设备”指可以安装各类应用程序,包括终端设备自带的应用和第三方应用,并且能够将已安装的应用程序中提供的对象进行显示的设备,该终端设备可以是移动的,也可以是固定的。例如,手机、平板电脑、各类可穿戴设备、车载设备、个人数字助理(personal digital assistant,PDA)、销售终端(point of sales,POS)或其它能够实现上述功能的终端设备等。

2、本申请实施例中术语“内置摄像头”指终端设备自带的摄像头,可以包括一个或多个摄像头。内置摄像头可以被终端设备的自带相机应用或提供拍摄功能的第三方应用调用。

3、本申请实施例中术语“外接摄像头”指可以通过终端设备的外设接口连接在终端设备上的摄像头,当连接在终端设备上的外接设置头开启后,与终端设备的内置摄像头使用相同的公共相机资源。

4、本申请实施例术语“公共相机资源”指内置摄像头和外接摄像头在开启后使用的相机资源,公共相机资源可以包括硬件资源或软件资源。硬件资源可以是但不限于GPU(Graphics Processing Unit,图形处理单元)、ISP(Image Signal Processor,图像信号处理器)等,软件资源可以是但不限于用于进行图像信号处理的软件程序等。

本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。其中,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在一些应用场景中,用户可以使用外接摄像头来拓展终端设备的相机业务。例如,一些对热衷摄影的用户,可以将专业摄影摄像头连接在终端设备上;在另外的应用中,也可以将具有其它专项功能的外接摄像头连接在终端设备上。

随着当前影像技术的应用不断延伸到各个领域,除了终端设备的自带相机应用外,许多第三方应用中的部分功能,如图像处理,视频聊天,人脸识别,扫描支付等,在使用过程中也需要调用相机资源,因此,在支持外接摄像头的终端设备上,处理好外接摄像头与其他相机应用的资源矛盾,是保证该类终端设备能够投产使用的重中之重。

终端设备连接外接摄像头后,外接摄像头与移动设备自带的内置摄像头使用相同的公共相机资源。在现有的外接摄像头运行方案中,一方面,由于外接摄像头在使用过程中与用户界面的交互较少,因此通常在终端设备的后台运行,外接摄像头在运行时,用户可能无察觉;另一方面,外接摄像头的启动可以通过自定义hal直接调用公共相机资源,启动过程不经过Framework标准接口。所以,终端设备无法监测到外接摄像头正在运行。

在外接摄像头正在运行时,外接摄像头正在占用公共相机资源。此时,如果启动终端设备自带的内置摄像头,则相机应用再次调用公共相机资源,将导致公共相机资源冲突。如果公共相机资源发生冲突,再次启动内置摄像头,公共相机资源无法使用,会引起DeviceError错误,导致终端设备的显示界面黑屏,严重影响用户体验。需要重新启动终端设备后,才能再次使用内置摄像头。

鉴于此,本申请实施例提出一种终端设备、外接摄像头及相机资源共享方法,当终端设备连接有外接摄像头时,若接收到开启内置摄像头的操作,先确定外接摄像头的状态。如果外接摄像头处于开启状态,控制外接摄像头释放公共相机资源,并开启内置摄像头;或者,忽略开启内置摄像头的操作,不开启内置摄像头,以避免外接摄像头正在占用公共相机资源时,内置摄像头再次调用公共相机资源,避免因外接摄像头和内置摄像头同时使用公共相机资源,而发生资源冲突,避免因公共相机资源发生冲突而必须重启手机的情况,增强用户体验。

图1示出了本申请实施例提供的一种终端设备100的结构示意图。

下面以终端设备100为例对本申请实施例进行具体说明。应该理解的是,图1所示终端设备100仅是一个范例,并且终端设备100可以具有比图1中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。

图1中示例性示出了根据示例性实施例中终端设备100的硬件配置框图。如图1所示,终端100包括:射频(radio frequency,RF)电路110、存储器120、显示单元130、内置摄像头140、传感器150、音频电路160、无线保真(Wireless Fidelity,Wi-Fi)模块170、处理器180、蓝牙模块181、外设接口182以及电源190等部件。

RF电路110可用于在收发信息或通话过程中信号的接收和发送,可以接收基站的下行数据后交给处理器180处理;可以将上行数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等器件。

存储器120可用于存储软件程序及数据。处理器180通过运行存储在存储器120的软件程序或数据,从而执行终端设备100的各种功能以及数据处理。存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器120存储有使得终端设备100能运行的操作系统。本申请中存储器120可以存储操作系统及各种应用程序,还可以存储执行本申请实施例所述方法的代码。

显示单元130可用于接收输入的数字或字符信息,产生与终端设备100的用户设置以及功能控制有关的信号输入,具体地,显示单元130可以包括设置在终端设备100正面的触摸屏131,可收集用户在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。

显示单元130还可用于显示由用户输入的信息或提供给用户的信息以及终端设备100的各种菜单的图形用户界面(graphical user interface,GUI)。具体地,显示单元130可以包括设置在终端设备100正面的显示屏132。其中,显示屏132可以采用液晶显示器、发光二极管等形式来配置。显示单元130可以用于显示本申请中所述的各种图形用户界面。

其中,触摸屏131可以覆盖在显示屏132之上,也可以将触摸屏131与显示屏132集成而实现终端设备100的输入和输出功能,集成后可以简称触摸显示屏。本申请中显示单元130可以显示应用程序以及对应的操作步骤。

终端设备100还可以包括至少一种传感器150,比如加速度传感器151、距离传感器152、指纹传感器153、温度传感器154。终端设备100还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。

音频电路160、扬声器161、麦克风162可提供用户与终端设备100之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出。终端设备100还可配置音量按钮,用于调节声音信号的音量。另一方面,麦克风162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出至RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。本申请中麦克风162可以获取用户的语音。

Wi-Fi属于短距离无线传输技术,终端设备100可以通过Wi-Fi模块170帮助用户收发电子邮件、浏览网页和访问流媒体等,它为用户提供了无线的宽带互联网访问。

处理器180是终端设备100的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的软件程序,以及调用存储在存储器120内的数据,执行终端设备100的各种功能和处理数据。在一些实施例中,处理器180可包括一个或多个处理单元;处理器180还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器180中。本申请中处理器180可以运行操作系统、应用程序、用户界面显示及触控响应,以及本申请实施例所述的相机资源共享方法。另外,处理器180与显示单元130耦接。

蓝牙模块181,用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端设备100可以通过蓝牙模块181与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。

内置摄像头140可用于捕获静态图像或视频。内置摄像头140可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器180转换成数字图像信号。

内置摄像头140可以由终端设备100的自带相机应用或安装在终端设备100上的第三方应用控制开启或关闭。内置摄像头140开启时,占用公共相机资源。公共相机资源包括GPU处理器,在一些实施例中,GPU处理器可以集成在处理器180中。

外设接口182可以是USB接口,用于连接外接摄像头。图2示出了终端设备100通过外设接口182连接外接摄像头的结构示意图。与外设接口182连接的外接摄像头200可以由终端设备100上设置的控制按键控制开启或关闭。外接摄像头200开启时,也占用公共相机资源。在本申请实施例中,外接摄像头200对应设置有状态信息,当外接摄像头200的状态发生变化,则对该状态信息进行设置。例如,可以在存储器120的指定区域设置外接摄像头对应的状态信息cameraInuse,该状态信息cameraInuse用于指示外接摄像头的开启或关闭状态,也可以说,该状态信息用于指示外接摄像头是否正在占用公共相机资源。当外接摄像头200开启时,外接摄像头的状态由关闭状态变化为开启状态,此时,将cameraInuse的值设置为true;当外接摄像头200关闭时,外接摄像头的状态由开启状态变化为关闭状态,此时,将cameraInuse的值设置为false。当终端设备100需要开启内置摄像头140时,可以根据状态信息cameraInuse的值确定外接摄像头是否正在占用公共相机资源。

处理器180响应开启内置摄像头的操作,确定外接摄像头200的状态。若外接摄像头200处于开启状态,控制外接摄像头200释放公共相机资源,并开启内置摄像头140;或,忽略开启内置摄像头的操作。

其中,内置摄像头140可以由终端设备的自带相机应用或第三方应用控制开启或关闭。点击自带相机应用,即可通过自带相机应用开启内置摄像头140。自带相机应用响应开启内置摄像头的操作,通过读取外接摄像头对应的状态信息确定外接摄像头200的状态。例如,自带相机应用可以通过读取外接摄像头对应的状态信息cameraInuse的值确定外接摄像头200的状态。状态信息cameraInuse的值为true,说明外接摄像头200处于开启状态,外接摄像头正在占用公共相机资源;状态信息cameraInuse的值为flase,说明外接摄像头200处于关闭状态,外接摄像头没有占用公共相机资源。如果外接摄像头200处于关闭状态,则正常开启内置摄像头140。如果外接摄像头200处于开启状态,可以忽略开启内置摄像头的操作,并通过显示单元130显示相机资源被占用的提示信息;或者,可以广播需用公共相机资源的系统广播,在等待预设时长后再开启内置摄像头140。如果自带相机应用广播需用公共相机资源的系统广播,终端设备的操作系统即可以监听到该系统广播,操作系统根据监听到的系统广播,控制外接摄像头释放公共相机资源。

如果第三方应用触发开启内置摄像头140的操作,许多第三方应用软件中的功能,如图像处理,视频聊天,人脸识别,扫描支付等功能等,在使用过程中均需调用相机资源。示例性地,用户通过即时通讯应用调用内置摄像头140拍摄视频,此时,终端设备100的操作系统响应第三方应用开启内置摄像头的操作,通过读取外接摄像头对应的状态信息确定外接摄像头200的状态。同样,终端设备100的操作系统可以通过读取外接摄像头对应的状态信息cameraInuse的值确定外接摄像头200的状态。状态信息cameraInuse的值为true,说明外接摄像头200处于开启状态,外接摄像头正在占用公共相机资源;状态信息cameraInuse的值为flase,说明外接摄像头200处于关闭状态,外接摄像头没有占用公共相机资源。如果外接摄像头200处于关闭状态,则响应第三方应用的需求,正常开启内置摄像头140。如果外接摄像头200处于开启状态,可以忽略开启内置摄像头的操作,并通过显示单元130显示相机资源被占用的提示信息。

通过设置外接摄像头对应的状态信息,可以使外接摄像头和内置摄像头合理共享公共相机资源,实现相机冲突的规避。

终端设备100还包括给各个部件供电的电源190(比如电池)。电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电以及功耗等功能。终端设备100还可配置有电源按钮,用于终端的开机和关机,以及锁屏等功能。

图3是本申请实施例的终端设备100的软件结构框图。

分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。

应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。其中,相机可以理解为终端设备的自带相机应用。自带相机应用可以通过调用下文所述的Framework应用程序框架层中的openCamere()接口开启内置摄像头140。

应用程序层还可以包括安装在终端设备上的第三方应用,第三方应用也可以通过调用Framework层中的openCamere()接口开启内置摄像头140。

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

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

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

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

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

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

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

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

Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。

核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。

应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。

系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。其中,三维图形处理库和2D图形引擎均属于公共相机资源。

表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。

媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。

三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。

2D图形引擎是2D绘图的绘图引擎。

内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。

图4以手机为例,示出了终端设备100上的用户界面的示意图。在一些具体实施中,用户通过触摸用户界面上的应用图标可以打开相应的应用程序,或者通过触摸用户界面上的文件夹图标可以打开相应的文件夹。

下面结合终端设备100软件以及硬件的工作流程,示例性地说明自带相机应用的启动过程。

如果用户触摸用户界面上的应用图标,触摸屏131接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。

根据该触摸操作的触摸坐标可以确定所对应的控件为自带相机应用的图标的控件,自带相机应用通过读取外接摄像头对应的状态信息cameraInuse的值确定外接摄像头200的状态。状态信息cameraInuse的值为true,说明外接摄像头200处于开启状态,外接摄像头正在占用公共相机资源;状态信息cameraInuse的值为flase,说明外接摄像头200处于关闭状态,外接摄像头没有占用公共相机资源。

如果外接摄像头处于关闭状态,自带相机应用可以调用Framework层中的openCamere()接口,通过调用内核层启动摄像头驱动,进而开启内置摄像头140,通过内置摄像头140捕获静态图像或视频。

如果外接摄像头处于开启状态,自带相机应用可以广播需用公共相机资源的系统广播,在等待预设时长后再通过调用Framework层中的openCamere()接口开启内置摄像头140。如果自带相机应用广播需用公共相机资源的系统广播,终端设备的操作系统即可以监听到该系统广播,操作系统根据监听到的系统广播,控制外接摄像头200释放公共相机资源。

本申请实施例中的终端设备100可以为手机、平板电脑、可穿戴设备、笔记本电脑以及电视等。

图5示出了本申请实施例提供的一种外接摄像头200的结构示意图。如图5所示,该外接摄像头200可以包括存储器201、处理器202和连接接口203。

其中,连接接口203用于与终端设备100连接。

存储器201,用于存储处理器202执行的计算机程序。存储器201可以存储至少一个功能所需的应用程序,如相机资源共享方法的应用程度等。

处理器202,可以包括一个或多个单片机、微处理器或者数字处理单元等等。处理器202用于调用所述存储器201中存储的计算机程序时实现上述相机资源共享方法。如:在外接摄像头200与终端设备100连接后,若外接摄像头200的状态发生变化,比如,外接摄像头由开启状态变化为关闭状态,或者由关闭状态变化为开启状态时,对外接摄像头200对应的状态信息进行设置,如对上述的状态信息cameraInuse进行设置,以使终端设备100在需要开启内置摄像头140,且外接摄像头200处于开启状态时,控制外接摄像头200释放公共相机资源,并开启内置摄像头140,或忽略开启内置摄像头的操作。

本申请实施例中不限定上述存储器201、处理器202和连接接口203之间的具体连接介质。本申请实施例在图5中,存储器201、处理器202和连接接口203之间通过总线204连接,总线204在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线204可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

针对上述场景,以下结合流程图对本申请实施例提供的相机资源共享方法做进一步详细描述。

图6示出了在相机资源共享过程中,外接摄像头、终端设备的操作系统与自带相机应用的交互过程。如图6所示,本申请实施例的一种相机资源共享方法,具体包括以下步骤:

步骤S601,响应开启外接摄像头的操作,设置外接摄像头对应的状态信息为开启状态,并占用公共相机资源。

当外接摄像头与终端设备连接后,可以通过外接摄像头或终端设备上的控制按键控制外接摄像头的开启和关闭。若接收到通过控制按键开启外接摄像头的操作,响应该操作,设置外接摄像头对应的状态信息为开启状态,并通过连接服务占用公共相机资源。

在一种可选的实施例中,设置外接摄像头对应的状态信息为开启状态之前,可以先确定终端设备的内置摄像头的状态,以确定终端设备的内置摄像头是否正在占用公共相机资源。例如,如果内置摄像头开启,操作系统的应用程序框架可以将内置摄像头对应的状态位设置为开启状态。当内置摄像头关闭时,操作系统的应用程序框架可以将内置摄像头对应的状态位设置为关闭状态。外接摄像头通过读取内置摄像头对应的状态位确定内置摄像头的状态。如果内置摄像头处于开启状态,可以不响应开启外接摄像头的操作。如果内置摄像头处于关闭状态,则执行设置外接摄像头对应的状态信息为开启状态,并占用公共相机资源的步骤。

一般情况下,如果内置摄像头处于开启状态,会在终端设备的显示界面上显示进入拍摄视野的画面,此时,用户一般不会再开启外接摄像头。因此,用户开启外接摄像头时,一般内置摄像头均处于关闭状态。

步骤S602,开启外接摄像头。

可以通过硬件抽象层(hal层)调用相机驱动,开启外接摄像头。

步骤S603,自带相机应用响应开启内置摄像头的操作,通过读取外接摄像头的状态信息确定外接摄像头的状态。

如果外接摄像头处于关闭状态,说明外接摄像头未占用公共相机资源,则可以直接通过应用程序框架调用打开相机接口,占有公共相机资源,开启内置摄像头。

步骤S604,自带相机应用确定外接摄像头处于开启状态。

步骤S605,自带相机应用广播需用公共相机资源的系统广播。

如果外接摄像头处于开启状态,说明外接摄像头正在占有公共相机资源,自带相机应用广播需用公共相机资源的系统广播。

步骤S606,终端设备的操作系统根据接收到的系统广播,向外接摄像头发送释放公共相机资源的指令。

步骤S607,外接摄像头释放公共相机资源,设置外接摄像头对应的状态信息为关闭状态,并关闭外接摄像头。

外接摄像头接收到释放公共相机资源的指令,通过释放服务释放公共相机资源,并设置外接摄像头对应的状态信息为关闭状态,关闭外接摄像头。

步骤S608,等待预设时长后,开启内置摄像头。

自带相机应用在发送系统广播之后,等待预设时长。该预设时长为操作系统控制外接摄像头释放公共相机资源的时间,可以根据需要进行设定,例如,可以设定为300ms。等待预设时长后,自带相机应用通过应用程序框架调用打开相机接口,设置内置摄像头对应的状态位为开启状态,占用公共相机资源,开启内置摄像头。

图7示出了在相机资源共享过程中,终端设备的操作系统与第三方应用的交互过程。如图7所示,本申请实施例的一种相机资源共享方法,具体包括以下步骤:

步骤S701,第三方应用触发开启内置摄像头的操作。

当用户使用第三方应用中的拍摄相关功能时,第三方应用触发开启内置摄像头的操作,向终端设备的操作系统发送开启内置摄像头的请求。

步骤S702,终端设备的操作系统通过读取外接摄像头的状态信息确定外接摄像头的状态。

终端设备的操作系统接收到第三方应用发送的开启内置摄像头的请求,响应第三方应用触发开启内置摄像头的操作,通过读取外接摄像头的状态信息确定外接摄像头的状态。

如果外接摄像头处于关闭状态,说明外接摄像头未占用公共相机资源,则可以直接通过应用程序框架调用打开相机接口,占有公共相机资源,开启内置摄像头。

步骤S703,终端设备的操作系统确定外接摄像头处于开启状态。

步骤S704,向第三方应用返回提示信息。

如果外接摄像头处于开启状态,说明外接摄像头正在占有公共相机资源,则忽略第三方应用开启内置摄像头的操作,向第三方应用返回公共相机资源正在被占用的提示信息,第三方应用将公共相机资源正在被占用的提示信息通过用户界面展示给用户。

在一种实施例中,终端设备控制外接摄像头开启或关闭时执行的操作如图8所示,包括如下步骤:

步骤S801,响应开启外接摄像头的操作,设置外接摄像头对应的状态信息为开启状态,并占用公共相机资源。

当外接摄像头与终端设备连接后,若接收到通过控制按键开启外接摄像头的操作,响应该操作,设置外接摄像头对应的状态信息为开启状态,即将外接摄像头对应的状态信息cameraInuse的属性值设置为true,并通过bindService(连接服务)占用公共相机资源。

在一种可选的实施例中,设置外接摄像头对应的状态信息为开启状态之前,可以先确定终端设备的内置摄像头的状态,以确定终端设备的内置摄像头是否正在占用公共相机资源。如果内置摄像头处于开启状态,可以不响应开启外接摄像头的操作。如果内置摄像头处于关闭状态,则执行设置外接摄像头对应的状态信息为开启状态,并占用公共相机资源的步骤。

步骤S802,开启外接摄像头。

可以通过硬件抽象层(hal层)调用相机驱动,开启外接摄像头。

步骤S803,当接收到释放公共相机资源的指令时,释放公共相机资源。

步骤S804,设置外接摄像头对应的状态信息为关闭状态,并关闭外接摄像头。

当接收到终端设备的操作系统发送的释放公共相机资源的指令时,通过unbindService(释放服务)释放公共相机资源,设置外接摄像头对应的状态信息为关闭状态,即将外接摄像头对应的状态信息cameraInuse的属性值设置为false,并关闭外接摄像头。

如果在外接摄像头的使用过程中,未接收到终端设备的操作系统发送的释放公共相机资源的指令。当用户通过控制按键关闭外接摄像头时,接收到关闭外接摄像头的操作,通过释放服务释放公共相机资源,将外接摄像头对应的状态信息cameraInuse的属性值设置为false,并关闭外接摄像头。

在外接摄像头与终端设备连接后,图8所示的相机资源共享方法可以由外接摄像头的处理器执行,也可以由终端设备的处理器执行。

在上述过程中,外接摄像头与终端设备连接后,若外接摄像头的状态发生变化,则对外接摄像头对应的状态信息进行设置,以使终端设备在需要开启内置摄像头,且外接摄像头处于开启状态时,控制外接摄像头释放公共相机资源,并所述内置摄像头,或忽略开启内置摄像头的操作;以避免外接摄像头正在占用公共相机资源时,内置摄像头再次调用公共相机资源,避免公共相机资源发生冲突。

在一种实施例中,终端设备的自带相机应用(如Vision Camera)执行的操作如图9所示,包括如下步骤:

步骤S901,响应开启内置摄像头的操作,通过读取外接摄像头的状态信息确定外接摄像头的状态。

如果外接摄像头处于关闭状态,即外接摄像头对应的状态信息cameraInuse的属性值为false,说明外接摄像头未占用公共相机资源,则可以直接通过应用程序框架Framework层设置内置摄像头对应的状态位为开启状态,调用打开相机接口openCamera(),占有公共相机资源,开启内置摄像头。

步骤S902,如果外接摄像头处于开启状态,广播需用公共相机资源的系统广播。

步骤S903,等待预设时长后,开启内置摄像头。

如果外接摄像头处于开启状态,即外接摄像头对应的状态信息cameraInuse的属性值为true,说明外接摄像头正在占用公共相机资源,则广播需用公共相机资源的系统广播。自带相机应用在发送系统广播之后,等待预设时长,然后通过应用程序框架Framework层调用打开相机接口openCamera(),设置内置摄像头对应的状态位为开启状态,占用公共相机资源,开启内置摄像头。

步骤S904,响应关闭内置摄像头的操作,关闭内置摄像头。

若接收到关闭内置摄像头的操作,如用户输入的退出自带相机应用的操作等,响应关闭内置摄像头的操作,释放公共相机资源,设置内置摄像头对应的状态位为关闭状态,关闭内置摄像头。

内置摄像头在开启或关闭时,设置内置摄像头对应的状态位,以使外接摄像头在开启时,根据内置摄像头对应的状态位确定公共相机资源是否正在被占用。

在一种实施例中,终端设备的操作系统执行的操作如图10所示,包括如下步骤:

步骤S1001,响应第三方应用触发开启内置摄像头的操作,确定外接摄像头的状态。

当用户使用第三方应用中的拍摄相关功能时,第三方应用触发开启内置摄像头的操作,向终端设备的操作系统发送开启内置摄像头的请求。终端设备的操作系统接收到第三方应用发送的开启内置摄像头的请求,响应第三方应用触发开启内置摄像头的操作,通过读取外接摄像头的状态信息cameraInuse确定外接摄像头的状态。

如果外接摄像头处于关闭状态,即外接摄像头对应的状态信息cameraInuse的属性值为flase,说明外接摄像头未占用公共相机资源,则可以直接通过应用程序框架Framework层调用hal层打开相机接口openCamera(),设置内置摄像头对应的状态位为开启状态,占有公共相机资源,开启内置摄像头。

步骤S1002,如果外接摄像头处于开启状态,忽略第三方应用开启内置摄像头的操作。

步骤S1003,向第三方应用返回提示信息。

如果外接摄像头处于开启状态,即外接摄像头对应的状态信息cameraInuse的属性值为true,说明外接摄像头正在占有公共相机资源,在一种实施例中,可以忽略第三方应用开启内置摄像头的操作,直接返回,或向第三方应用返回公共相机资源正在被占用的提示信息,第三方应用将公共相机资源正在被占用的提示信息通过用户界面展示给用户。在另一种实施例中,可以控制外接摄像头释放公共相机资源,在外接摄像头释放公共相机资源之后,再开启内置摄像头。内置摄像头开启后,若接收到第三方应用关闭内置摄像头的请求,则释放公共相机资源,设置内置摄像头对应的状态位为关闭状态,关闭内置摄像头。

在一些实施例中,终端设备的操作系统还执行如下步骤,若接收到需用公共相机资源的系统广播,响应该系统广播,向外接摄像头发送释放公共相机资源的指令,以使外接摄像头释放公共相机资源。

在上述方法中,当外设接口连接有外接摄像头时,处理器响应开启内置摄像头的操作,先确定外接摄像头的状态。如果外接摄像头处于开启状态,控制外接摄像头释放公共相机资源,并开启内置摄像头;或者,忽略开启内置摄像头的操作,不开启内置摄像头,以避免外接摄像头正在占用公共相机资源时,内置摄像头再次调用公共相机资源,避免公共相机资源发生冲突,从而避免资源冲突导致相机无法使用后而必须要重启手机,提升用户的使用体验。

本申请实施例还提供一种计算机可读非易失性存储介质,包括程序代码,当所述程序代码在计算终端上运行时,所述程序代码用于使所述计算终端执行上述任意一种相机资源共享方法的步骤。

以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。

相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 一种终端设备和相机资源共享方法
  • 一种资源共享方法、装置、终端设备及存储介质
技术分类

06120112961658