CN116366957B - 一种虚拟化相机使能的方法、电子设备及协同工作系统 - Google Patents

一种虚拟化相机使能的方法、电子设备及协同工作系统 Download PDF

Info

Publication number
CN116366957B
CN116366957B CN202310173134.2A CN202310173134A CN116366957B CN 116366957 B CN116366957 B CN 116366957B CN 202310173134 A CN202310173134 A CN 202310173134A CN 116366957 B CN116366957 B CN 116366957B
Authority
CN
China
Prior art keywords
camera
callback function
function registration
electronic device
virtual camera
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.)
Active
Application number
CN202310173134.2A
Other languages
English (en)
Other versions
CN116366957A (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
Publication of CN116366957A publication Critical patent/CN116366957A/zh
Application granted granted Critical
Publication of CN116366957B publication Critical patent/CN116366957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/665Control of cameras or camera modules involving internal camera communication with the image sensor, e.g. synchronising or multiplexing SSIS control signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44016Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4622Retrieving content or additional data from different sources, e.g. from a broadcast channel and the Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/90Arrangement of cameras or camera modules, e.g. multiple cameras in TV studios or sports stadiums
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Studio Devices (AREA)

Abstract

本申请提供了一种虚拟化相机使能的方法、电子设备及协同工作系统,涉及终端技术领域。该方法应用于电子设备,电子设备包括至少两个相机,电子设备与协同电子设备连接,方法包括:在回调函数注册集合中写入已经完成回调函数注册的相机的虚拟相机标识;当根据对目标相机的使能指令和所述回调函数注册集合,确定所述目标相机的回调函数已经完成注册时,使能所述目标相机,以使所述目标相机的视频流被替换为所述协同电子设备发送的视频流。利用该方法使得电子设备支持多相机打开能力,其中一个相机使用本地的物理相机,一个为虚拟相机,并且在进行相机前后置相机切换时,保证虚拟相机正常工作,提升了用户的体验。

Description

一种虚拟化相机使能的方法、电子设备及协同工作系统
本申请要求于2022年07月21日提交中国国家知识产权局、申请号为202210864881.6、发明名称为“一种虚拟化相机的方法、电子设备及协同工作系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及终端技术领域,尤其涉及一种虚拟化相机使能的方法、电子设备及协同工作系统。
背景技术
目前,随着技术的进步与发展,用户在生活中或者工作中一般会使用多台电子设备,例如手机、平板电脑、笔记本电脑等。
对于手机、平板电脑等具备前置相机和后置相机的电子设备,当用户利用本电子设备,例如手机的前置相机进行视频通话时,目前无法同时利用本电子设备上的后置相机实现其它功能,例如实现扫码付款功能等,因此带来不便。因此需要一种将本电子设备与其它电子设备进行协同工作以实现虚拟化相机的方法,以使得本电子设备的一个相机已经启动时,可以调用其它电子设备的相机。
发明内容
为了解决上述问题,本申请提供了一种虚拟化相机使能的方法、电子设备及协同工作系统,使得电子设备支持多相机打开能力,其中一个相机使用本地的物理相机,一个为虚拟相机,并且在进行相机前后置相机切换时,保证虚拟相机正常工作,提升了用户的体验。
第一方面,本申请提供了一种虚拟化相机使能的方法,应用于电子设备,电子设备包括至少两个相机,电子设备与协同电子设备连接,方法包括:在回调函数注册集合中写入已经完成回调函数注册的相机的虚拟相机标识;当根据对目标相机的使能指令和所述回调函数注册集合,确定所述目标相机的回调函数已经完成注册时,使能所述目标相机,以使所述目标相机的视频流被替换为所述协同电子设备发送的视频流。
该方案在回调函数注册集合中写入已经完成回调函数注册的相机的虚拟相机标识,完成回调函数注册指虚拟相机进程将回调函数注册至了虚拟相机适配进程中。当根据对目标相机的使能指令和所述回调函数注册集合,确定所述目标相机的回调函数已经注册到所述虚拟相机适配进程时,使能所述目标相机,以使所述虚拟相机进程将所述目标相机的视频流替换为所述互联服务进程接收的所述协同电子设备发送的视频流。其中,虚拟相机适配进程用于对虚拟相机进程与互联服务进程之间传输的数据进行转换。虚拟相机进程用根据相机进程的请求,从互联服务进程中获取协同电子设备采集的视频流,并将协同电子设备采集的视频流发送给相机进程,以替换掉本地的视频流,从而实现视频流的切换。相机进程用于根据应用程序层的业务需求打开本地相机,并通过本地相机采集视频帧。
利用本申请实施例提供的方案,使得电子设备支持多相机打开能力,其中一个相机使用本地的物理相机,一个为虚拟相机,使得用户在同一个电子设备上可以同时获取两个相机的画面,或者利用两个相机实现各自的功能。并且能够进行相机前后置相机切换时,保证虚拟相机能够被成功使能进而正常显示视频流,提升了用户的体验。
在一种可能的实现方式中,所述在回调函数注册集合中写入已经完成回调函数注册的相机的虚拟相机标识,具体包括:建立虚拟相机标识和各所述相机之间的对应关系;当存在相机完成回调函数注册时,根据所述对应关系在所述回调函数注册集合中写入完成回调函数注册的相机对应的虚拟相机标识。
在一种可能的实现方式中,所述当根据对目标相机的使能指令和所述回调函数注册集合,确定所述目标相机的回调函数已经完成注册时,使能所述目标相机,具体包括:根据所述使能指令确定所述目标相机的虚拟相机标识;对所述回调函数注册集合进行锁定操作,以使所述回调函数注册集合无法被写入新的虚拟相机标识;当所述回调函数注册集合中存在所述目标相机的虚拟相机标识时,确定所述目标相机的回调函数已经完成注册,并使能所述目标相机。
锁定操作的作用在于:目标相机为相机1时,当相机0先完成了回调函数注册,此时回调函数注册集合中包括存在相机0对应的虚拟相机标识,在相机1完成回调函数注册之前,已经开始虚拟相机适配进程读取回调函数注册集合中的信息,以确定目标相机对应的回调函数是否经注册到虚拟相机适配进程。此时恰好完成了相机1的回调函数注册,但是回调函数注册集合的修改发生在了虚拟相机适配进程的读取之后,使得导致虚拟相机适配进程没有读取到相机1对应的虚拟相机标识,而后续不会再次收到相机1的回调函数注册成功的回调函数注册完成通知,进而使得相机使能失败。增加锁定操作后,即使此次确定目标相机的回调函数未完成注册,但是后续会再次收到相机1的回调函数注册成功的回调函数注册完成通知,使得下一次对回调函数注册集合读取时,可以正常获取到更新时新增的虚拟相机标识。
在一种可能的实现方式中,所述确定所述目标相机的回调函数已经完成注册后,所述方法还包括:解除对所述回调函数注册集合的锁定操作。
在一种可能的实现方式中,所述方法还包括:当所述回调函数注册集合中不存在所述目标相机的虚拟相机标识时,解除对所述回调函数注册集合的锁定操作;待所述回调函数注册集合更新后,对更新后的回调函数注册集合进行锁定操作,并根据所述目标相机的使能指令和更新后的回调函数注册集合,确定所述目标相机的回调函数是否已经完成注册。
在一种可能的实现方式中,在对所述相机的回调函数注册完成后,先更新所述回调函数注册集合,然后触发回调函数注册完成通知,待下一次所述回调函数注册集合更新后,对更新后的回调函数注册集合进行锁定操作,具体包括:当获取到一次新的回调函数注册完成通知时,确定所述回调函数注册集合更新,并对更新后的回调函数注册集合进行锁定操作。
在一种可能的实现方式中,所述方法还包括:当持续超过预设时间仍确定所述目标相机对应的回调函未完成注册时,确定此次对所述目标相机的使能失败。
在一种可能的实现方式中,所述电子设备包括的至少两个相机中,具体包括至少一个前置相机和至少一个后置相机,所述建立虚拟相机标识和各所述相机之间的对应关系,具体包括:获取各所述相机的相机标识和相机属性,所述相机属性用于指示所述相机为前置相机还是为后置相机;建立所述虚拟相机标识和各所述相机之间的以下对应关系:将所述至少一个前置相机对应于第一虚拟相机标识;将所述至少一个后置相机对应于第二虚拟相机标识。
第二方面,本申请还提供了一种电子设备,电子设备包括:处理器和存储器。处理器和存储器耦合。存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行虚拟化相机使能的方法。
第三方面,本申请还提供了一种协同工作系统,协同工作系统包括第一方面及其实现方式中运行虚拟化相机使能的方法的电子设备,还包括协同电子设备,所述电子设备和所述协同电子设备连接。
附图说明
图1a为本申请提供的场景示意图一;
图1b为本申请提供的场景示意图二;
图1c为本申请提供的场景示意图三;
图2a为本申请提供的一种电子设备的示意图;
图2b为本申请提供的电子设备的软件结构的示意图;
图3a为本申请提供的一种实现虚拟相机适配的方法流程;
图3b为本申请实施例提供的虚拟相机适配进程的原理示意图;
图4为本申请实施例提供的多相机回调注册的原理图;
图5为本申请实施例提供的多相机回调注册的方法的流程图;
图6为本申请实施例提供的虚拟化相机使能的原理图;
图7为本申请实施例提供的场景示意图;
图8为本申请实施例提供的多相机同时开启的示意图;
图9为本申请实施例提供的一种虚拟化相机的使能方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有进行创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。
为了使本技术领域的人员更清楚地理解本申请的方案,下面首先说明本申请技术方案的应用场景。
参见图1a,该图为本申请提供的场景示意图一。
在一种可能的应用场景中,进行协同工作的电子设备可以中心侧设备10和物联网(Internet of Things,IoT)设备20。
中心侧设备10可以为手机、平板电脑等具备摄像头的设备。物联网设备20可以为智能台灯。物联网设备20上也包括摄像头。中心侧设备10通过协同工作将物联网设备20的相机虚拟化为自身的相机,以实现拍摄功能。
中心侧设备10上设置虚拟化软件开发套件(device virtualization softwaredevelopment kit,DVSDK)和分布式移动感知开发平台(distribute mobile sensingdevelopment platform,DMSDP)等,并在可以使用相机的物联网(Internet of Things,IoT)设备上设置对应的DMSDP进行适配,可以使中心侧设备与IoT设备连接,并使中心侧设备10上能使用IoT设备的虚拟化相机功能。中心侧设备上安装有的教育类应用程序,可以发出拍照请求,台灯等IoT设备利用摄像头进行拍照后,将照片回传至中心侧设备,以实现答疑、作业递交等功能。
中心侧设备10与IoT设备20可以进行近场通信和/或远场通信。其中,近场通信可以通过路由器等设备完成设备间信息交互,远场通信可以通过云服务器完成设备间信息交互。
当中心侧设备10的摄像头被占用后,可以利用IoT设备20的摄像头实现相机虚拟化服务,进而利用IoT设备20的摄像头继续获取照片。
一并参见图1b所示的场景示意图二和图1c所示的场景示意图三。
在另一中场景中,还可以通过使多个电子设备之间建立互联,进而在本电子设备上实现对其它电子设备的虚拟化相机功能,进而是本电子设备利用其它电子设备的相机实现拍摄。
例如图中当利用手机进行视频通话时,需要使用电脑完成一些工作,同时使用手机和电脑会不方便。此时可以将手机与电脑进行连接协同,并切换音视频到电脑,即可利用电脑的摄像头进行视频拍摄。也即手机将电脑的摄像头虚拟化为自身的摄像头,实现拍摄功能。
以上场景的另一种实例为扫码付费场景,当用户当前正在使用电子设备进行视频通话时,无法同时利用电子设备的摄像头进行扫码付费,此时用户将电子设备与身边的其它电子设备建立连接,通过协同工作,将其它电子设备上的摄像头虚拟化为自身设备上的摄像头,进而利用其它电子设备的摄像头实现扫码付费功能。
下面首先说明电子设备的硬件架构。
参见图2a,该图为本申请提供的一种电子设备的示意图。
图2a所示的电子设备仅是一个范例,并且电子设备可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图2a中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备可以包括:处理器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可以包括压力传感器,陀螺仪传感器,加速度传感器,温度传感器,运动传感器,气压传感器,磁传感器,距离传感器,接近光传感器,指纹传感器,触摸传感器,环境光传感器,骨传导传感器等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。
其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备充电,也可以用于电子设备与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。
在一些无线充电的实施例中,充电管理模块140可以通过电子设备的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。
无线通信模块160可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如Wi-Fi网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
在一些实施例中,电子设备的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。
电子设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,电子设备可以包括1个或N个显示屏194,N为大于1的正整数。
在本申请实施例中,显示屏194可以显示拍摄预览界面和拍照图像界面等。需要说明的是,在本申请实施例中,拍摄预览界面是指用户可通过显示屏194观看IoT设备的摄像头实时采集的图像的界面。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备的各种功能应用以及数据处理,例如使得电子设备实现本申请实施例中的协同工作方法。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。
存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
下面说明电子设备的软件结构。
参见图2b,该图为本申请提供的电子设备的软件结构的示意图。
电子设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备的软件结构。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,从上至下分别为应用程序层,应用程序框架层,系统库,扩展层以及内核层。
应用程序层可以包括一系列应用程序包。例如应用程序包可以包括相机、蓝牙、图库、通话、地图等,本申请实施例的场景中,电子设备一般还包括即时通讯软件、多屏协同软件等。其中,即时通讯软件可以调用电子设备的相机以实现视频通话,多屏协同软件用于使电子设备和其它设备之间建立连接,形成多屏协同,进而使电子设备能够对其他电子设备的相机实现相机虚拟化。
当电子设备为中心侧设备,应用于以上图1a所示的场景中时,电子设备上还包括教育应用程序,教育应用程序可以由第三方厂商开发,用于为用户提供在线教育功能,可以具备但不限于视图、播报、注释、查询等功能。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2b所示,应用程序框架层可以包括协同助手进程、服务发现进程以及互联服务进程等。
服务发现进程用于在蓝牙或者NFC打开后,监听用于指示进行多屏协同的连接指令,并在监听到连接指令后通知协同助手进程。
协同助手进程用于在接收到服务发现进程的通知后,通过与其他电子设备中的协同助手进程之间的相互交换信息建立协同连接。
在视频通话的过程中,如果是在多屏协同场景下,互联服务进程用户接收并缓存协同电子设备发送的视频流,并根据底层的请求提供相应的相机服务。
互联服务进程,包括数据处理模块、传输通道模块、流量控制模块以及能力采集模块。
其中,数据处理模块可以用于根据底层的需求对视频帧进行处理,例如进行格式转换等。
传输通道模块用于对传输通道进行配置。
流量控制模块用于缓存视频流。
能力采集模块用于采集本电子设备和协同电子设备的相机能力,以便根据采集的相机能力,将本电子设备的相机与协同电子设备的相机进行匹配。例如,在根据接收的相机能力确定本电子设备和协同电子设备均包括前置相机和后置相机的情况下,将本电子设备的前置相机与协同电子设备的前置相机匹配,将本电子设备的后置相机与协同电子设备的后置相机匹配。
除此之外,应用程序框架层还可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。
例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。
系统层包括系统库和安卓运行时(Android Runtime)。
Android Runtime包括核心库和虚拟机。Android Runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
在本申请实施例中,Android Runtime还包括虚拟相机适配层,提供虚拟相机注册的能力。
系统库可以包括多个功能模块。例如:包括多媒体平台、音频框架、图形图像处理库、解码模块以及虚拟相机适配层等。
其中,多媒体平台可以用于对多媒体的管理,支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。多媒体平台可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
图形图像处理库可以用于实现图形绘图,图像渲染,合成,和图层处理等。
编解码器可以用于实现对音频数据、视频数据的编解码操作。
本申请实施例的系统层还包括了:虚拟相机适配进程。
具体的,虚拟相机适配进程共分为TRANSLATOR服务、转换器和CHANNEL服务。
其中,TRANSLATOR服务,也即传输服务。TRANSLATOR服务为专门向下层的相机HAL和虚拟相机HAL提供的服务。示例性的,当下层的虚拟相机进程需要上层的互联服务进程发送数据时,则先将数据以第一数据格式就行转换,然后通过TRANSLATOR服务将转换后的数据发送给虚拟相机适配进程,以通过虚拟相机适配进程发送至互联服务进程。
CHANNEL服务,也即通道服务,为向上层的应用程序框架层提供的服务接口。示意性的,当互联服务进程需要向底层的虚拟相机进程发送数据,则可以先将数据按照第二数据格式进行转换,然后通过CHANNEL服务将转换后的数据发送至虚拟相机适配进程,再由虚拟相机适配进程发送至虚拟相机进程。
转换器也即上下文切换(context switch)实例,简称cswitch实例,也即在CHANNEL服务和TRANSLATOR服务之间进行数据数据格式转换。例如,将底层的数据转换成上层能够识别和处理的数据格式,或者将上层的数据转换层底层能够识别和处理的数据格式。
拓展层中包括硬件抽象层(Hardware Abstraction Layer,HAL),HAL是软件层的例行程序包,为位于操作系统内核与硬件电路之间的接口层,用于模拟特定系统平台的细节使程序可以直接访问硬件的资源。
HAL层包括但不限于:音频(Audio)HAL、传感器(Sensor)HAL、调制解调(Modem)HAL、相机HAL、虚拟相机HAL。
其中,音频HAL用于对音频流进行处理,例如,对音频流进行降噪、定向增强等处理。
相机进程用于根据应用程序层的业务需求打开本地相机,并通过本地相机采集视频帧,相机进程可以在电子设备开机后启动。在一些实施例中,在多屏协同的场景下,相机进程通过虚拟相机进程请求获取协同电子设备采集的视频流。
虚拟相机进程,用根据相机进程的请求,从互联服务进程中获取协同电子设备采集的视频流,并将协同电子设备采集的视频流发送给相机进程,以替换掉本地的视频流,从而实现视频流的切换。
内核层是硬件和软件之间的层。内核层可以包含显示驱动,相机驱动,USB驱动,CPU驱动,音频驱动,网络驱动(如Wi-Fi驱动),存储驱动和打印驱动等。
为了方便说明,以下以本电子设备为手机,协同电子设备为平板电脑为例进行说明。
参见图3a,该图为本申请提供的一种实现虚拟相机适配的方法流程。
该方法包括以下步骤:
A1.手机的服务发现进程开启监听功能。
用户可以开启手机和平板电脑中的蓝牙或者NFC,服务发现进程开启指令监听功能。
A2.当手机的服务发现进程监听到连接指令时,将该连接指令发送给协同助手进程。
例如,用户触发平板电脑侧的协同选项时,平板电脑中的多屏协同向应用程序框架层的服务发现进程发送连接指令。服务发现进程监听到该指令后对该指令进行广播。
例如,手机的服务发现进程监听到该连接指令后,将该连接指令发送给手机的协同助手进程。
A3.手机的协同助手进程与平板电脑的协同助手进程建立第一数据传输通道。
手机可以将自身的坐标信息和设备能力信息等发送给平板电脑的协同助手进程,平板电脑的协同助手进程接收到手机发送的设备信息后,将自身的坐标信息和设备能力信息发送给手机。
A4.手机的协同助手进程通知互联服务进程启动。
A5.互联服务进程进行初始化配置。
A6.即时通讯软件向相机进程发送请求打开相机的指令。
用户触发即时通讯软件中的“视频通话”功能,手机的即时通讯软件请求相机进程打开相机,例如向相机进程发送相机打开指令。
A7.相机进程控制摄像头驱动打开相机。
相机进程接收到相机打开指令后,控制相机驱动加载相机。
A8.在相机打开完成后,相机进程拉起虚拟相机进程。
虚拟相机进程接收到相机进程的通知后,开始进行初始化,初始化的主要目的是与相机进程建立绑定关系,以便于后续通过该绑定关系,与相机进程进行数据交互。
A13.虚拟相机进程与虚拟相机适配进程建立绑定关系。
参见图3b,该图为本申请实施例提供的虚拟相机适配进程的原理示意图。
虚拟相机进程向虚拟相机适配进程请求获取TRANSLATOR服务的句柄,虚拟相机进程向虚拟相机适配进程注册回调函数,虚拟相机进程即可获取TRANSLATOR服务。
也即,后续虚拟相机进程可以利用该服务句柄,获取TRANSLATOR服务,从而通过TRANSLATOR服务向虚拟相机适配进程发送数据。此外,后续虚拟相机适配进程可以通过回调的方式,利用该回调函数将数据传输给虚拟相机进程。
在“A8.在相机打开完成后,相机进程拉起虚拟相机进程”之后,如果发生相机打开事件的情况,具体包括以下步骤。
A9.在发生相机打开事件的情况下,如果状态开关处于开启状态,则协同助手进程通知互联服务进程。
手机中存在一个监听进程,监听进程用于监听到相机打开事件后,向监听列表中注册过的进程发送相机打开通知。协同助手进程可以预先在该监听列表中进行注册。当监听进程监听到相机打开时间时,向协同助手进程发送相机打开通知,以使协同助手进程获知存在相机打开事件。
此时,对于协同助手进程来说,如果确定当前的状态开关处于开启状态,则确定手机要使用平板电脑的相机采集的视频流,为此,协同助手进程通知服务进程以开启相机虚拟化服务。
A10.互联服务进程拉起虚拟相机适配进程。
互联服务进程接收到相机打开通知后,向虚拟相机适配进程发送加载通知,以使虚拟相机适配进程开始加载。
此外,互联服务进程接收到相机协同助手进程的相机打开通知后,还通过预先建立的用于互联服务的数据传输通道,向平板电脑的互联服务进程发送相机打开通知。相应的,平板电脑的互联服务进程接收到相机打开通知后,调用平板电脑的相机驱动打开平板电脑的相机。
A11.虚拟相机适配进程进行初始化。
虚拟相机适配进程启动后,将对上的CHANNEL服务与对下的TRANSLATOR服务通过中间的cswitch实例对象绑定,以便于双向通信。即在CHANNEL服务与TRANSLATOR服务之间建立数据传输通道。
A12.虚拟相机适配进程初始化结束后,互联服务进程与虚拟相机适配进程建立绑定关系。
对于互联服务进程,在确定发生相机打开事件的情况下,主动与已启动的虚拟相机适配进程建立绑定关系。
在一种可能的实现方式中,互联服务进程与虚拟相机适配进程建立绑定关系包括:
互联服务进程向虚拟相机适配进程获取CHANNEL服务的服务句柄;
互联服务进程向虚拟相机适配进程注册回调函数;
互联服务进程即可获取CHANNEL服务。
后续互联服务进程可以利用该服务句柄,获取CHANNEL服务,从而便于通过CHANNEL服务向虚拟相机适配进程发送数据。此外,后续虚拟相机适配进程通过回调的方式,利用回调函数将数据传输给互联服务进程。
此外,互联服务进程在接收到协同助手进程的相机打开通知后,还通过预先建立的用于互联服务的数据传输通道,向平板电脑的互联服务进程发送相机打开通知。相应的,平板电脑的互联服务进程接收到相机打开通知后,调用平板电脑的摄像头驱动打开平板电脑的相机。
在上下两端的绑定都建立完成后,虚拟相机适配进程向互联服务进程返回绑定成功通知。互联服务进程在接收到绑定成功通知后,向平板电脑的互联服务进程发送绑定成功通知。平板电脑的互联服务进程接收到绑定成功通知后,调用摄像头驱动持续获取视频流,并通过与手机的互联服务进程之间建立的用于互联服务的数据传输通道,将视频流发送给手机的互联服务进程。
通过以上的过程,建立了本电子设备与协同电子设备的互联,并且本电子设备能够实现对协同电子设备的相机虚拟化。
以上说明中的CHANNEL服务、cswitch实例以及TRANSLATOR服务为全局唯一的实例,同一台电子设备需要开启两个相机时,例如电子设备同时启用前置相机和后置相机时,由于存在注册回调和获取句柄的流程,当相机1和相机0同时启动时,只能按照先后的顺序分别注册,可能导致先完成注册的相机被后完成注册的相机覆盖,只能启用后完成注册的相机。另一方面,当后完成注册的相机是本地相机,而非虚拟化的相机时,则可能出现没有画面情况,也即可能注册到了错误的相机,影响用户体验。
下面说明本申请提供的支持多相机的相机虚拟化方案。以手机的前置相机已经启动,后置相机启动并采用平板电脑的相机视频流的实现方式为例进行说明。可以理解的是,对于电子设备的后置相机已经启动,前置相机采用平板电脑的相机视频流的实现方式类似,不再一一赘述。
当手机上包括多个物理相机时,首先对多相机的标识进行定义。同样的,当平板电脑上包括多个相机时,也对平板电脑的多个物理相机的标识进行定义。相机的标识也即camera ID,不同相机的camera ID不同。
当本设备为手机设备时,本地物理相机在不同机型上有不同标识,如一些手机设备前置相机的标识为1和7,后置分别为0和2~6。在另一些手机设备的前置相机标识为1,后置相机标识为0和2~8。由于不同厂商的手机设备包括的相机数量可能不同,并且前置相机的标识和后置相机的标识不统一,因此本申请的方案中,可以先读取各个相机的相机属性,根据相机属性确定该相机为前置相机还是后置相机,然后建立该相机与协同电子设备的虚拟相机的映射关系,并对所有的前置相机进行统一的标识,所有的后置相机进行统一的标识。以下说明中,以将所有后置相机统一标识为0,所有的前置相机统一标识为1为例进行说明。相机的原标识转换后的统一标识为虚拟相机标识,也即虚拟相机标识仅包括0和1以区分前置相机和后置相机。
在一种可能的实现方式中,也可以将所有后置相机统一标识为0,所有的前置相机统一标识为1,不再赘述。
当协同电子设备为平板电脑时,目前的平板电脑基本同时具备前置相机和后置相机,类似于手机设备,根据平板型号的不同,同样对所有的前置相机进行统一的标识,所有的后置相机进行统一的标识。平板电脑对相机的标识方式,应当与手机设备相同,例如均将所有的后置相机统一标识为0,所有的前置相机统一标识为1。
可以理解的是,当协同电子设备为笔记本电脑时,由于目前大多数的笔记本电脑只配备有前置相机,而不具备后置相机,因此可以将所有的前置相机统一标识为1。
对于手机设备,一般包括一个前置相机和多个后置相机,例如包括主摄相机、广角相机以及超广角相机。当手机设备的前置相机已经启用,准备启用后置相机的虚拟相机功能时,本申请的方案默认设置手机设备开启的后置相机为主摄像机,并最终将主摄相机的预览流替换为远端的协同电子设备的主摄相机的预览流。
一并参见图4和图5。其中,图4为本申请实施例提供的多相机回调注册的原理图;图5为本申请实施例提供的多相机回调注册的方法的流程图。
以使能后置相机实现虚拟相机为为例进行说明,图5所示的方法包括以下步骤:
S11:应用程序层发送对后置相机的使能信息。
应用程序层的安卓Android应用程序包(Android application package,APK)发起对于后置相机的使能流程,以启动虚拟相机功能。
该使能信息camera_0中携带有后置相机的统一标识0,表明此时希望实现使能的是后置相机。可以理解的是,实际应用中当希望实现使能前置相机时,应用程序层发送对后置相机的使能信息中携带有后置相机的统一标识1,例如为camera_1。
S12:CHANNEL服务将使能信息发送给虚拟相机适配进程。
APK向底层的虚拟相机进程发送使能信息时,先将数据按照第二数据格式进行转换,然后通过CHANNEL服务将转换后的数据发送至虚拟相机适配进程,再由虚拟相机适配进程发送至虚拟相机进程。
S13:虚拟相机适配进程将使能信息发送至虚拟相机进程。
S14:虚拟相机进程根据使能信息确定是否需要注册到虚拟相机适配进程。
例如对于电子设备上的两个相机,相机1和相机2。两个相机均完成了回调函数的注册,相机1的标识为0,与使能信息camera_0匹配,则需要对相机1进行注册;相机2的标识为1,与使能信息camera_0指示的标识0不匹配,则跳过注册,此时相机2处于空闲状态。根据相机1的回调函数实现视频数据的回传,也即实现了对于相机1的使能。回传的视频数据为协同电子设备向本电子设备的互联服务进程发送的视频流数据。
参见图6,该图为本申请实施例提供的虚拟化相机使能的原理图。
本申请实施例的技术方案在虚拟相机适配进程中增加管理模块Manager,Manager用于管理相机HAL注册的不同回调,并通过相机标识匹配。例如同时打开相机1、相机3,相机1为前置相机,原标识为1,相机3为后置相机,原标识为3,转换为统一的虚拟相机标识后,相机1的标识为1和相机3的标识为0,将0和1注册到虚拟相机适配进程。
APK后续需要使能后置相机则在虚拟相机适配进程中取出回调0,对应于与相机3;使能前置相机则在虚拟相机适配进程中取出回调1,对应于与相机1。
在虚拟相机HAL的路由模块Router中对不同标识的虚拟相机分开保存,APK触发使能带下来的使能信息中的标识保存至系统属性(properity)中。虚拟相机HAL进程扫描properity时,根据属性的内容决定是否需要注册到虚拟相机适配进程,如属性为camera_0且自身为camera_1则跳过注册,继续等待属性改变。
为了方便理解,下面结合图6以对前置相机进行虚拟化相机使能为例进行说明,对后置相机的使能原理类似,在此不再赘述。
APK发起对于前置相机的使能流程,并将使能信息发送至CHANNEL服务。
通过CHANNEL服务将使能信息转换后发送至虚拟相机适配进程,虚拟相机适配进程在系统属性中写入虚拟相机标识1,也即此时写入camera_1。
CHANNEL服务等待回调(callback)函数的注册,待回调函数注册完成之后,将获取的视频数据传递至虚拟相机适配进程,并通过TRANSLATOR服务传递至底层的虚拟相机进程。
虚拟相机进程根据使能信息确定当期前前置相机需要注册到虚拟相机适配进程,完成对前置相机的注册后,虚拟相机进程即能够将从TRANSLATOR服务获取的视频数据作为该前置相机的预览视频据。
参见图7,该图为本申请实施例提供的场景示意图。
通过手机设备和平板电脑之间的协同建联,实现了将平板电脑的前置相机虚拟化为电子设备的前置相机,此时电子设备的后置相机可以用于进行扫码操作,不再受到电子设备上的即使通讯软件的限制,提升了灵活性以及便利性。
但是实际应用中,往往存在转换摄像头的业务需求,例如图8中语音聊天时希望对方看到后置相机拍摄的画面,则此时需要进行相机的切换,用户点击界面上的转换摄像头选项,以使电子设备需要将平板电脑的后置相机虚拟化为自身的后置相机。
下面具体说明本申请实施例提供的技术方案进行虚拟相机的前置和后置切换时的原理。
下面以电子设备将虚拟相机由前置相机切换为后置相机为例的过程进行说明。也即电子设备当前采用前置相机播放协同电子设备的相机获取的视频流,用户选择进行相机切换后,需要切换至:电子设备采用后置相机播放协同电子设备的相机获取的视频流。
参见图8,该图为本申请实施例提供的多相机同时开启的示意图。
相机HAL为不同的相机分别注册回调,并通过相机标识匹配。
例如打开相机1,相机1为前置相机,虚拟相机标识为1;同时还打开相机0,相机0为后置相机,虚拟相机标识为0,并将两个相机的标识通过TRANSLATOR服务发送至虚拟相机适配进程。
虚拟相机HAL的逻辑为:扫描系统属性,当确定虚拟相机适配进程已经启动时,尝试将自身注册到虚拟相机适配进程。但是此时同时开启了两个相机,也即HAL_APP1将相机1注册到虚拟相机适配进程,HAL_LOCAL将相机0注册到虚拟相机适配进程,两次注册的先后顺序不确定,并且两次注册时,APK下发的使能信息是否已经将系统属性中的虚拟相机标识替换为camera_1也不确定,则此时可能存在图8所示的四种情况。
A.APK下发的使能信息先到达虚拟相机适配进程,此时没有注册回调函数,无法继续后续的步骤,需要等待相机HAL注册回调。此时对前置相机1的回调先注册,对后置相机0的回调后注册。当前置相机1的回调注册完成后,由于此时系统属性的内容已经为camera_1,则可以继续进行后续的步骤,拉起虚拟相机进程。
B.对前置相机1的回调先注册,对后置相机0的回调后注册。当前置相机1的回调注册完成后,APK下发的使能信息还没有到达虚拟相机适配进程,系统属性的内容还为camera_0,与自身的虚拟相机标识不匹配,需要进行等待。等待至APK下发的使能信息到达虚拟相机适配进程后,系统属性的内容更改为camera_1,则可以继续进行后续的步骤,拉起虚拟相机进程。
C.对前置相机1的回调先注册,对后置相机0的回调后注册。此时未收到使能信息,继续等待,直至APK下发的使能信息到达虚拟相机适配进程后,系统属性的内容更改为camera_1,与相机1的回调匹配,则可以继续进行后续的步骤,拉起虚拟相机进程。
D.对前置相机0的回调先注册,对后置相机1的回调后注册。当前置相机0的回调注册完成后,APK下发的使能信息还没有到达虚拟相机适配进程。APK下发的使能信息到达虚拟相机适配进程后,系统属性的内容更改为camera_1,此时与相机0的回调不匹配。虚拟相机适配进程检测到有回调注册时,尝试对不匹配的相机0进行使能,可能导致使能失败。
下面说明本申请克服多相机打开场景下使能失败的实现方式。
参见图9,该图为本申请实施例提供的一种虚拟化相机的方法的流程图。
该方法包括以下步骤:
S21:在回调函数注册集合中写入已经完成回调函数注册的相机的虚拟相机标识。
虚拟相机进程注册回调函数时先将注册回调函数的相机对应的虚拟相机标识写入回调函数集合MAP以更新所述回调函数注册集合,然后再触发回调函数注册完成通知。
虚拟相机适配进程中添加Manager管理虚拟相机HAL注册的不同回调,也即该回调函数集合可以保存在Manager中。
其中,虚拟相机适配进程用于对虚拟相机进程与互联服务进程之间传输的数据进行转换。回调函数可以包括前置相机注册的回调函数和后置相机注册的回调函数中的至少一项。
S22:虚拟相机适配进程根据使能指令和回调函数注册集合确定目标相机对应的回调函数是否经注册到虚拟相机适配进程。
虚拟相机适配进程使能目标相机时,不再直接对已经完成回调函数注册的相机进行使能,而是首先在回调函数注册集合中寻找使能指令中携带的虚拟相机标识对应的相机是否完成了回调函数的注册。
本申请的方案已经预先建立了虚拟相机标识和各所述相机之间的对应关系,当存在相机完成回调函数注册时,根据所对应关系在所述回调函数注册集合中写入完成回调函数注册的相机对应的虚拟相机标识。例如,建立所述虚拟相机标识和各所述相机之间的以下对应关系:
将前置相机对应于第一虚拟相机标识,也即用camera_1标识;
将后置相机对应于第二虚拟相机标识,也即用camera_0标识。
具体的,当所述回调函数注册集合中存在所述目标相机的虚拟相机标识时,确定所述目标相机的回调函数已经完成注册执行S23,否则,执行S24。
下面分别举例进行说明。
在一种可能的实现方式中,使能指令携带的虚拟相机标识为第一标识,对应与前置相机,也即为camera_1,则目标相机为前置相机。此时前置相机1和后置相机0均已经完成了回调函数注册,则在回调函数注册集合中存在camera_1和camera_0的记载,此时虚拟相机适配进程确定前置相机对应的回调函数已经注册到虚拟相机适配进程,可以执行S23。
在另一种可能的实现方式中,使能指令携带的虚拟相机标识为第一标识,对应与前置相机,也即为camera_1,则目标相机为前置相机。此时后置相机0已经完成了回调函数注册,则在回调函数注册集合中存在camera_0的记载,虚拟相机适配进程确定前置相机对应的回调函数还没有注册到虚拟相机适配进程,执行S24。
在又一种可能的实现方式中,使能指令携带的虚拟相机标识为第一标识,对应与前置相机,也即为camera_1,则目标相机为前置相机。此时还没有相机完成回调函数注册,则虚拟相机适配进程确定前置相机对应的回调函数还没有注册到虚拟相机适配进程,执行S24。
对于回调函数注册集合,需要确保修改操作和读取操作同一时刻仅能发生其中的一种,也即当虚拟相机适配进程读取回调函数注册集合中的信息的过程中,回调函数注册集合不能因为发生了回调函数注册而改变,否则可能会导致使能的失败。下面举例说明:
对应于图8中的情况D,相机0先完成了回调函数注册,此时回调函数注册集合中包括存在camera_0的记载,在相机1完成回调函数注册之前,开始虚拟相机适配进程读取回调函数注册集合中的信息,以确定目标相机对应的回调函数是否经注册到虚拟相机适配进程。此时恰好完成了相机1的回调函数注册,但是回调函数注册集合的修改发生在了虚拟相机适配进程的读取之后,使得导致虚拟相机适配进程没有读取到camera_1的记载而进入S24,而后续不会再次收到相机1的回调函数注册成功的回调函数注册完成通知,进而使得后续的相机使能失败。
为了克服以上的技术问题,本申请在虚拟相机适配进程根据使能指令和回调函数注册集合确定目标相机对应的回调函数是否经注册到虚拟相机适配进程的过程中,增加了对于回调函数注册集合的锁定操作。也即在虚拟相机适配进程读取回调函数注册集合时,锁定回调函数注册集合,通过增加锁定操作,使得这个过程中,即使其他相机完成回调函数注册,也无法修改回调函数注册集合。虚拟相机适配进程完成确定目标相机对应的回调函数是否经注册到虚拟相机适配进程的判断后,解除对回调函数注册集合的锁定操作。此时的回调函数注册集合可以正常发生更新,例如增加新的记载。后续如果虚拟相机适配进程再次读取回调函数注册集合时,增加的新的记载可以被虚拟相机适配进程读取到而不会被遗漏。
S23:继续进行对于目标相机的使能。
也即开始进行相机的初始化,初始化的主要目的是与相机进程建立绑定关系,以便于后续通过该绑定关系,与相机进程进行数据交互。具体可以参见图3a对应的相关说明,本申请实施例在此不再赘述。通过使能目标相机,以使所述目标相机的视频流被替换为所述互联服务进程接收的所述第二电子设备发送的视频流。
此时可以解除对所述回调函数注册集合的锁定操作。
S24:等待至回调函数注册集合更新。
此时由于使能指令携带的虚拟相机标识与回调函数注册集合中的记载均不匹配,无法继续进行对于目标相机的使能,进入等待过程。
等待过程中,回调函数注册集合始终处于接触锁定操作的状态,也即当完成回调函数注册时,回调函数注册集合可以正常被修改。
由于在对所述相机的回调函数注册完成后,先更新所述回调函数注册集合,然后触发回调函数注册完成通知,因此虚拟相机适配进程当获取到一次新的回调函数注册完成通知时执行S22,再次根据更新后的回调函数注册集合确定目标相机对应的回调函数是否已经注册到虚拟相机适配进程。
在一种可能的实现方式中,虚拟相机适配进程当持续预设时间时仍确定目标相机对应的回调函未被注册到虚拟相机适配进程,则确定此次使能失败,向APK返回使能失败的通知,还可以请求APK重新进行使能。
本申请实施例对预设时间不作具体限定,实际应用中,为了提升用户的体验,预设时间可以设置为较短的时间,例如设置为200ms。
虚拟相机适配进程在等待使能之前先检查回调是否已注册,已注册则继续完成使能,未注册则设置超时等待时间。
综上所述,利用本申请实施例提供的方法,使得电子设备支持多相机打开能力,其中一个相机使用本地的物理相机,一个为虚拟相机,使得用户在同一个电子设备上可以同时获取两个相机的画面,或者利用两个相机实现各自的功能,并且在视频通话中,能够进行相机前后置相机切换时,保证虚拟相机正常工作,提升了用户的体验。可以理解的是,以上实施例中以实现前置相机和后置相机之间的切换为例进行说明,也可以实现电子设备的两个后置相机或者两个前置相机的切换,具体实现原理与以上说明类似,区别在于对于虚拟相机的标识需要重新定义,也即虚拟相机标识1为一个后置相机,例如为主摄相机,虚拟相机标识0为另一个后置相机,例如为广角相机,通过使能指令在以下两种状态件切换:
1.主摄相机作为本地相机启用,广角相机实现虚拟相机能力,将协同电子设备的相机获取的视频预览流替换为广角相机的视频预览流;
2.广角相机作为本地相机启用,主摄相机实现虚拟相机能力,将协同电子设备的相机获取的视频预览流替换为主摄相机的视频预览流;
具体原理与以上方法中的原理类似,在此不再赘述。
电子设备具体可以为平板电脑、手机或者笔记本电脑等具备摄像头的电子设备,本申请实施例不作具体限定。电子设备包括处理器和存储器,存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行图9所示的虚拟化相机使能的方法。
进一步的,本申请还提供了一种协同工作系统,协同工作系统包括电子设备,还包括协同电子设备,电子设备和所述协同电子设备连接,协同工作系统具体可以为图1a所示的中心侧设备与IoT设备,也可以为图1b和1c所示的手机和电脑,本申请实施例不作具体限定。
以上说明中的视频预览流也可以称为视频流。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的拍照方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种虚拟化相机使能的方法,其特征在于,应用于电子设备,所述电子设备包括至少两个相机,所述电子设备与协同电子设备连接,所述方法包括:
在回调函数注册集合中写入已经完成回调函数注册的相机的虚拟相机标识;
根据对目标相机的使能指令确定目标相机的虚拟相机标识,所述目标相机为所述至少两个相机中的一个;
对所述回调函数注册集合进行锁定操作,所述回调函数注册集合处于锁定状态时,无法被写入新的虚拟相机标识;
当所述回调函数注册集合中存在所述目标相机的虚拟相机标识时,确定所述目标相机的回调函数已经完成注册,使能所述目标相机,将所述目标相机的视频流替换为所述协同电子设备发送的视频流。
2.根据权利要求1所述的虚拟化相机使能的方法,其特征在于,所述在回调函数注册集合中写入已经完成回调函数注册的相机的虚拟相机标识,具体包括:
建立虚拟相机标识和各所述相机之间的对应关系;
当存在相机完成回调函数注册时,根据所述对应关系在所述回调函数注册集合中写入完成回调函数注册的相机对应的虚拟相机标识。
3.根据权利要求1所述的虚拟化相机使能的方法,其特征在于,所述确定所述目标相机的回调函数已经完成注册后,所述方法还包括:
解除对所述回调函数注册集合的锁定操作。
4.根据权利要求1或3所述的虚拟化相机使能的方法,其特征在于,所述方法还包括:
当所述回调函数注册集合中不存在所述目标相机的虚拟相机标识时,解除对所述回调函数注册集合的锁定操作;
待所述回调函数注册集合更新后,对更新后的回调函数注册集合进行锁定操作,并根据所述目标相机的使能指令和更新后的回调函数注册集合,确定所述目标相机的回调函数是否已经完成注册。
5.根据权利要求4所述的虚拟化相机使能的方法,其特征在于,在对所述相机的回调函数注册完成后,先更新所述回调函数注册集合,然后触发回调函数注册完成通知,待下一次所述回调函数注册集合更新后,对更新后的回调函数注册集合进行锁定操作,具体包括:
当获取到一次新的回调函数注册完成通知时,确定所述回调函数注册集合更新,并对更新后的回调函数注册集合进行锁定操作。
6.根据权利要求4所述的虚拟化相机使能的方法,其特征在于,所述方法还包括:
当持续超过预设时间仍确定所述目标相机对应的回调函数未完成注册时,确定此次对所述目标相机的使能失败。
7.根据权利要求2所述的虚拟化相机使能的方法,其特征在于,所述电子设备包括的至少两个相机中,具体包括至少一个前置相机和至少一个后置相机,所述建立虚拟相机标识和各所述相机之间的对应关系,具体包括:
获取各所述相机的相机标识和相机属性,所述相机属性用于指示所述相机为前置相机还是为后置相机;
建立所述虚拟相机标识和各所述相机之间的以下对应关系:
将所述至少一个前置相机对应于第一虚拟相机标识;
将所述至少一个后置相机对应于第二虚拟相机标识。
8.一种电子设备,其特征在于,所述电子设备包括:处理器和存储器;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求1-7中任一项所述的虚拟化相机使能的方法。
9.一种协同工作系统,其特征在于,所述协同工作系统包括如权利要求8所述的电子设备,还包括协同电子设备,所述电子设备和所述协同电子设备连接。
CN202310173134.2A 2022-07-21 2023-02-22 一种虚拟化相机使能的方法、电子设备及协同工作系统 Active CN116366957B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022108648816 2022-07-21
CN202210864881 2022-07-21

Publications (2)

Publication Number Publication Date
CN116366957A CN116366957A (zh) 2023-06-30
CN116366957B true CN116366957B (zh) 2023-11-14

Family

ID=86905966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310173134.2A Active CN116366957B (zh) 2022-07-21 2023-02-22 一种虚拟化相机使能的方法、电子设备及协同工作系统

Country Status (1)

Country Link
CN (1) CN116366957B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102768629A (zh) * 2012-04-16 2012-11-07 中兴通讯股份有限公司 基于调度层实现虚拟机间通讯的方法和装置
CN108182131A (zh) * 2017-12-13 2018-06-19 东软集团股份有限公司 监控应用运行状态的方法、装置、存储介质及电子设备
CN108845861A (zh) * 2018-05-17 2018-11-20 北京奇虎科技有限公司 虚拟摄像头的实现方法及装置
CN114520867A (zh) * 2020-11-20 2022-05-20 华为技术有限公司 基于分布式控制的相机控制方法及终端设备
WO2022105759A1 (zh) * 2020-11-20 2022-05-27 华为技术有限公司 视频处理方法、装置及存储介质
WO2022143883A1 (zh) * 2020-12-30 2022-07-07 华为技术有限公司 一种拍摄方法、系统及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102768629A (zh) * 2012-04-16 2012-11-07 中兴通讯股份有限公司 基于调度层实现虚拟机间通讯的方法和装置
CN108182131A (zh) * 2017-12-13 2018-06-19 东软集团股份有限公司 监控应用运行状态的方法、装置、存储介质及电子设备
CN108845861A (zh) * 2018-05-17 2018-11-20 北京奇虎科技有限公司 虚拟摄像头的实现方法及装置
CN114520867A (zh) * 2020-11-20 2022-05-20 华为技术有限公司 基于分布式控制的相机控制方法及终端设备
WO2022105716A1 (zh) * 2020-11-20 2022-05-27 华为技术有限公司 基于分布式控制的相机控制方法及终端设备
WO2022105759A1 (zh) * 2020-11-20 2022-05-27 华为技术有限公司 视频处理方法、装置及存储介质
WO2022143883A1 (zh) * 2020-12-30 2022-07-07 华为技术有限公司 一种拍摄方法、系统及电子设备

Also Published As

Publication number Publication date
CN116366957A (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
CN112291764B (zh) 一种内容接续系统
JP2022523989A (ja) Uiコンポーネントを表示するための方法及び電子デバイス
CN112527174B (zh) 一种信息处理方法及电子设备
CN114461239B (zh) 软件升级系统和软件升级方法
CN116360725B (zh) 显示交互系统、显示方法及设备
CN112130788A (zh) 一种内容分享方法及其装置
CN113190362B (zh) 服务调用方法、装置、计算机设备及存储介质
WO2022048500A1 (zh) 一种显示方法及设备
WO2022083465A1 (zh) 电子设备的投屏方法及其介质和电子设备
CN114741008A (zh) 分布式跨设备协同方法、电子设备及通信系统
CN114442969A (zh) 一种设备间屏幕协同方法及设备
CN115016697A (zh) 投屏方法、计算机设备、可读存储介质和程序产品
CN113051015A (zh) 页面渲染方法、装置、电子设备及存储介质
CN112612539A (zh) 数据模型卸载方法、装置、电子设备及存储介质
CN114741256A (zh) 传感器监听方法、装置及终端设备
CN116366957B (zh) 一种虚拟化相机使能的方法、电子设备及协同工作系统
CN114928898B (zh) 建立基于WiFi直接连接的会话的方法和装置
WO2023005711A1 (zh) 一种服务的推荐方法及电子设备
CN114995591B (zh) 传感器注册方法、控制系统及相关设备
WO2022206848A1 (zh) 一种应用小部件的显示方法及设备
CN113835802A (zh) 设备交互方法、系统、设备及计算机可读存储介质
CN112612540A (zh) 数据模型配置方法、装置、电子设备及存储介质
CN117499780A (zh) 一种拍照方法、电子设备及协同工作系统
CN115002820B (zh) 通话状态监听方法、装置、设备、存储介质
CN117135729B (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