摄像头数据获取方法、装置、设备、存储介质及程序产品与流程

文档序号:31631992发布日期:2022-09-24 02:12阅读:170来源:国知局
摄像头数据获取方法、装置、设备、存储介质及程序产品与流程

1.本公开涉及终端技术领域,尤其涉及一种摄像头数据获取方法、装置、电子设备、存储介质及程序产品。


背景技术:

2.随着移动应用市场的迅猛发展和爆发式增长的企业应用需求,越来越多的开发者也希望能够加入到移动应用开发中。
3.然而,由于不同的移动设备支持不同的操作系统,不同的操作系统使用不同的开发语言,因此,如果开发者编写的应用要同时在不同的移动设备上运行的话,则必须掌握多种开发语言,但这势必将严重影响软件开发进度和项目上线时间,并且成为开发团队的一大难题。
4.因此亟需一种能够支持在不同的操作系统下提供统一的摄像头数据获取方式的方法。


技术实现要素:

5.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种摄像头数据获取方法、装置、电子设备、存储介质及程序产品。
6.本公开实施例的第一方面,提供一种摄像头数据获取方法,应用于包括目标操作系统的电子设备,该方法包括:接收第一触发操作,第一触发操作用于指示摄像头数据获取指令;响应于第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令,该统一调用接口封装有多个操作系统下摄像头数据的获取功能,该多个操作系统包括该目标操作系统;接收该原生接口返回的该摄像头数据获取指令对应的响应数据。
7.可选地,该统一调用接口是通过下述步骤生成的:将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成系统层api;将该多个操作系统的该系统层api封装成跨平台摄像头模块;将该跨平台摄像头模块绑定到该脚本层,以生成该统一调用接口。
8.可选地,该统一调用接口是通过下述步骤生成的:将该多个操作系统的原生接口绑定到该脚本层;在该脚本层,将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成脚本层api;将该多个操作系统的该脚本层api封装成该统一调用接口。
9.可选地,该响应于第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令,包括:响应于第一触发操作,通过该统一调用接口确定该电子设备的操作系统为该目标操作系统;通过在该脚本层调用该统一调用接口中封装的目标功能,向该目标操作系统的该原生接口下发该摄像头数据获取指令,该目标功能为该目标操作系统下与该摄像头数据获取指令对应的摄像头数据的获取功能。
10.可选地,该响应于第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令之后,该方法还包括:在预设时长内未接收到该
响应数据的情况下,显示第一提示信息,第一提示信息用于提示重新触发该摄像头数据获取指令。
11.可选地,该摄像头数据获取指令用于指示以下任一项:获取该电子设备可用的摄像头列表,该摄像头列表中包括至少一个摄像头标识,每个摄像头标识用于指示一个摄像头;获取该电子设备可用的每个摄像头的摄像头参数,该摄像头参数包括以下任一项:摄像头标识、摄像头图像格式、摄像头连接状态;控制目标摄像头执行目标操作,该目标操作包括以下任一项:切换为该目标摄像头,开启该目标摄像头,关闭该目标摄像头,拍摄图像,停止拍摄图像。
12.可选地,该摄像头数据获取指令用于指示控制目标摄像头执行目标操作,该目标操作包括开启该目标摄像头;该通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令之前,该方法还包括:在该目标操作系统为预设系统的情况下,通过在脚本层调用该统一调用接口,确定当前应用是否具有摄像头权限;该通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令,包括:在该当前应用具有该摄像头权限的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
13.可选地,该在该目标操作系统为预设系统的情况下,通过在脚本层调用该统一调用接口,确定当前应用是否具有摄像头权限之后,该方法还包括:在该当前应用不具有该摄像头权限的情况下,显示第二提示信息,第二提示信息用于提示是否开启该当前应用的摄像头权限;在接收到不开启该当前应用的摄像头权限的触发操作的情况下,显示第三提示信息,第三提示信息用于指示禁止该当前应用开启该目标摄像头;该在该当前应用具有该摄像头权限的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令,包括:在接收到开启该当前应用的摄像头权限的触发操作的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
14.本公开实施例的第二方面,提供一种摄像头数据获取装置,该装置包括:接收模块和下发模块;该接收模块,用于接收第一触发操作,第一触发操作用于指示摄像头数据获取指令;该下发模块,用于响应于该接收模块接收的第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令,该统一调用接口封装有多个操作系统下摄像头数据的获取功能,该多个操作系统包括该目标操作系统;该接收模块,还用于接收该原生接口返回的该摄像头数据获取指令对应的响应数据。
15.可选地,该统一调用接口是通过下述步骤生成的:将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成系统层api;将该多个操作系统的该系统层api封装成跨平台摄像头模块;将该跨平台摄像头模块绑定到该脚本层,以生成该统一调用接口。
16.可选地,该统一调用接口是通过下述步骤生成的:将该多个操作系统的原生接口绑定到该脚本层;在该脚本层,将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成脚本层api;将该多个操作系统的该脚本层api封装成该统一调用接口。
17.可选地,该下发模块,具体用于响应于第一触发操作,通过该统一调用接口确定该电子设备的操作系统为该目标操作系统;通过在该脚本层调用该统一调用接口中封装的目标功能,向该目标操作系统的该原生接口下发该摄像头数据获取指令,该目标功能为该目
标操作系统下与该摄像头数据获取指令对应的摄像头数据的获取功能。
18.可选地,该装置还包括:显示模块;该显示模块,用于在响应于第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令之后,在预设时长内未接收到该响应数据的情况下,显示第一提示信息,第一提示信息用于提示重新触发该摄像头数据获取指令。
19.可选地,该摄像头数据获取指令用于指示以下任一项:获取该电子设备可用的摄像头列表,该摄像头列表中包括至少一个摄像头标识,每个摄像头标识用于指示一个摄像头;获取该电子设备可用的每个摄像头的摄像头参数,该摄像头参数包括以下任一项:摄像头标识、摄像头图像格式、摄像头连接状态;控制目标摄像头执行目标操作,该目标操作包括以下任一项:切换为该目标摄像头,开启该目标摄像头,关闭该目标摄像头,拍摄图像,停止拍摄图像。
20.可选地,该摄像头数据获取指令用于指示控制目标摄像头执行目标操作,该目标操作包括开启该目标摄像头;该装置还包括:确定模块;该确定模块,用于在通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令之前,在该目标操作系统为预设系统的情况下,通过在脚本层调用该统一调用接口,确定当前应用是否具有摄像头权限;该下发模块,具体用于在该当前应用具有该摄像头权限的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
21.可选地,该显示模块,还用于在该目标操作系统为预设系统的情况下,通过在脚本层调用该统一调用接口,确定当前应用是否具有摄像头权限之后,在该当前应用不具有该摄像头权限的情况下,显示第二提示信息,第二提示信息用于提示是否开启该当前应用的摄像头权限;接收到不开启该当前应用的摄像头权限的触发操作的情况下,显示第三提示信息,第三提示信息用于指示禁止该当前应用开启该目标摄像头;该下发模块,具体用于在接收到开启该当前应用的摄像头权限的触发操作的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
22.本公开实施例的第三方面,提供一种电子设备,该电子设备包括处理器、存储器及存储在该存储器上并可在该处理器上运行的计算机程序,该计算机程序被该处理器执行时实现如第一方面所述的摄像头数据获取方法。
23.本公开实施例的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质上存储计算机程序,该计算机程序被处理器执行时实现如第一方面所述的摄像头数据获取方法。
24.本公开实施例的第五方面,提供了一种计算机程序产品,其中,该计算机程序产品包括计算机程序,当该计算机程序产品在处理器上运行时,使得处理器执行该计算机程序,实现如第一方面所述的摄像头数据获取方法。
25.本公开实施例的第六方面,提供了一种芯片,该芯片包括处理器和通信接口,该通信接口和该处理器耦合,该处理器用于运行程序指令,实现如第一方面所述的摄像头数据获取方法。
26.本公开实施例提供的技术方案与现有技术相比具有如下优点:本公开实施例中,通过接收用于指示摄像头数据获取指令的第一触发操作;响应于第一触发操作,通过在脚
本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令,然后接收该原生接口返回的该摄像头数据获取指令对应的响应数据。由于该统一调用接口封装有多个操作系统下摄像头数据的获取功能,因此应用可以在不同的操作系统下通过调用统一调用接口,向对应的操作系统的原生接口下发该摄像头数据获取指令,进而获取该摄像头数据获取指令对应的响应数据,从而基于统一调用接口开发的应用可以在操作系统不同的移动设备上运行,开发者无需针对操作系统不同的移动设备再编写相应的获取摄像头数据的程序代码,可以降低软件开发难度,有效提高软件的开发进度。
附图说明
27.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
28.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
29.图1为本公开实施例提供的一种摄像头数据获取方法的流程示意图;
30.图2为本公开实施例提供的一种统一调用接口的结构示意图;
31.图3为本公开实施例提供的一种针对操作系统的调用逻辑示意图;
32.图4为本公开实施例提供的一种摄像头数据获取装置的结构框图;
33.图5为本公开实施例提供的一种电子设备的结构框图。
具体实施方式
34.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
35.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
36.本公开的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
37.本公开实施例中的电子设备可以为移动电子设备,也可以为非移动电子设备。移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等;非移动电子设备可以为个人计算机(personal computer,pc)、电视机(television,tv)、柜员机或者自助机等;本公开实施例不作具体限定。
38.本公开实施例提供的摄像头数据获取方法的执行主体可以为上述的电子设备(包括移动电子设备和非移动电子设备),也可以为该电子设备中能够实现该摄像头数据获取方法的功能模块和/或功能实体,具体的可以根据实际使用需求确定,本公开实施例不作限定。
39.本公开实施例中的电子设备包括目标操作系统,所述目标操作系统包括以下任一项:安卓(android)操作系统、windows操作系统、ios操作系统、mac操作系统、linux操作系统,目标操作系统还可以为其他的操作系统,本公开实施例不做限定。
40.下面结合附图,通过具体的实施例及其应用场景对本公开实施例提供的摄像头数据获取方法进行详细地说明。
41.如图1所示,本公开实施例提供一种摄像头数据获取方法,该方法可以包括下述的步骤101至步骤103。
42.101、接收第一触发操作。
43.其中,第一触发操作用于指示摄像头数据获取指令。
44.可以理解,当前应用接收用户触发的摄像头数据获取指令。
45.102、响应于第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令。
46.其中,该统一调用接口封装有多个操作系统下摄像头数据的获取功能,该多个操作系统包括该目标操作系统。
47.脚本层是便于用户使用的接口层,主要为用户提供可视化编程的接口,脚本层使用脚本语言编程。
48.脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常是以文本(ascⅱ)保存,只是在被调用时进行解释或者编译。
49.本公开实施例中,脚本层可以为js层、vbscript层、perl层、php层、python层、ruby层、installshield层或actionscript层等,具体可以根据实际情况确定,此处不做限定。相应地,脚本语言可以为js、vbscript、perl、php、python、ruby、installshield或actionscript等,具体可以根据实际情况确定,此处不做限定。
50.其中,js,全称javascript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。
51.可选地,该脚本层包括以下任一项:js层,python层。js和python是当前比较前沿且应用较广的应用程序脚本语言,因此脚本层包括js层或python层,得到的统一调用接口可以应用于大多框架的应用开发中,降低软件开发难度,有效提高软件的开发进度。
52.其中,多个操作系统可以包括以下至少两项:安卓(android)操作系统、windows操作系统、ios操作系统、mac操作系统、linux操作系统,多个操作系统还可以包括其他操作系统,具体可以根据实际情况确定,此处不做限定。
53.其中,原生接口也称为系统接口。
54.可以理解,统一调用接口封装了不同操作系统的摄像头数据的获取功能,因此不同操作系统的电子设备安装的应用程序,可以通过调用统一调用接口下封装的对应的操作系统中的摄像头数据获取功能,以向电子设备的原生接口下发摄像头数据获取指令,从而应用程序可以调用不同的操作系统下的摄像头,以实现获取摄像头数据的功能。
55.本公开实施例中,统一调用接口中封装了各个操作系统下原生接口与对应的摄像头数据的获取功能的代码,因此,可以实现在不同操作系统下,通过调用统一调用接口来调用对应的操作系统下的原生接口,来实现摄像头数据的获取功能。
56.103、接收该原生接口返回的该摄像头数据获取指令对应的响应数据。
57.可以理解,原生接口接收到摄像头数据获取指令之后,根据该摄像头数据获取指令获取对应的响应数据,然后将该响应数据返回给应用层,以使应用层显示该响应数据。
58.本公开实施例中,由于该统一调用接口封装有多个操作系统下摄像头数据的获取功能,因此应用可以在不同的操作系统下通过调用统一调用接口,向对应的操作系统的原生接口下发该摄像头数据获取指令,进而获取该摄像头数据获取指令对应的响应数据,从而基于统一调用接口开发的应用可以在操作系统不同的移动设备上运行,开发者无需针对操作系统不同的移动设备再编写相应的获取摄像头数据的程序代码,可以降低软件开发难度,有效提高软件的开发进度。
59.可选地,该统一调用接口是通过下述步骤生成的:
60.s11、将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成系统层应用程序接口(application programming interface,api)。
61.本公开实施例中,系统层api也可以称为平台层api,系统层api可以为c层api、c++层api、java层api、c#层api或objective-c层api等,具体可以根据实际情况确定,此处不做限定。
62.可选地,该系统层api包括以下任一项:c++层api,objective-c层api。
63.可以理解,c++和objective-c是当前比较前沿且应用较广的应用程序平台层编程语言,因此系统层api包括c++层api或objective-c层api,得到的统一调用接口可以应用于大多平台的应用开发中,可以有效降低软件开发难度,有效提高软件的开发进度。
64.其中,c++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
65.s12、将该多个操作系统的该系统层api封装成跨平台摄像头模块。
66.s13、将该跨平台摄像头模块绑定到该脚本层,以生成该统一调用接口。
67.可以理解,本公开实施例中,将调用原生接口的摄像头数据的获取功能的代码与对应的原生接口进行封装得到系统层api,然后在系统层通过底层分平台封装技术,将多个操作系统的系统层api封装成跨平台摄像头模块,再通过绑定技术将所述跨平台摄像头模块从系统层绑定到脚本层,以生成统一调用接口。因此在应用开发过程中,可以直接在不同操作系统下调用统一调用接口实现调用摄像头数据的获取功能,无需再在不同操作系统下基于该操作系统支持的开发语言来编写对应的摄像头数据的获取功能的代码。
68.示例性地,若脚本层为js层,则绑定技术为jsbinding技术。
69.本公开实施例中,上述s11至s13生成的统一调用接口对开发者比较友好,在应用开发过程中,只需在应用需要使用摄像头时,调用统一调用接口,不需要了解统一调用接口是如何具体实现实现摄像头数据的获取功能的,也不需要再写实现摄像头数据的获取功能所需要的代码,而且在调用上述s11至s13生成的统一调用接口的过程中,无需进行频繁跨语言调用,节约调用时间,提高调用效率。
70.示例性地,以脚本层为js层,系统层api为c++层api为例,如图2所示,为统一调用
接口的一种可能的结构示意图,统一调用接口包括js层摄像头模块,从c++层到js层的接口绑定模块,c++层的跨平台摄像头模块,跨平台摄像头模块中封装了各个操作系统的c++层api,每个操作系统的c++层api与对应操作系统的原生接口相连。
71.示例性地,结合图2,如图3所示,为本公开实施例中的一种可能的针对操作系统的调用逻辑示意图,具体包括:应用层调用摄像头数据获取功能,js层接口接收摄像头数据获取指令,将摄像头数据获取指令下发给操作系统层接口,操作系统层接口通过操作系统提供的api接口将摄像头数据获取指令下发给操作系统提供的原生接口,操作系统提供的原生接口将摄像头数据获取指令下发给摄像头,摄像头获取摄像头数据,经摄像头数据回调接口返回给应用层。
72.可选地,该统一调用接口是通过下述步骤生成的:
73.s21、将该多个操作系统的原生接口绑定到该脚本层。
74.s22、在该脚本层,将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成脚本层api。
75.s23、将该多个操作系统的该脚本层api封装成该统一调用接口。
76.本公开实施例中,上述s21至s23生成的统一调用接口对开发者比较友好,在应用开发过程中,只需在应用需要使用摄像头时,调用统一调用接口,不需要了解统一调用接口是如何具体实现实现摄像头数据的获取功能的,也不需要再写实现摄像头数据的获取功能所需要的代码。
77.可选地,上述步骤102具体可以通过下述步骤102a和步骤102b实现。
78.102a、响应于第一触发操作,通过该统一调用接口确定该电子设备的操作系统为该目标操作系统。
79.102b、通过在该脚本层调用该统一调用接口中封装的目标功能,向该目标操作系统的该原生接口下发该摄像头数据获取指令。
80.其中,该目标功能为该目标操作系统下与该摄像头数据获取指令对应的摄像头数据的获取功能。
81.可以理解,应用在通过统一调用接口调用摄像头数据的获取功能时,先通过统一调用接口确定当前电子设备的操作系统为目标操作系统,然后调用统一调用接口封装的目标操作系统下的相应摄像头数据的获取功能,来实现摄像头数据的获取。
82.本公开实施例中,可以通过统一调用接口确定电子设备的操作系统,进而可以通过统一调用接口调用该操作系统下的摄像头数据的获取功能,即将确定电子设备的操作系统的功能也封装到统一调用接口中,因此在跨平台应用开发过程若使用本公开实施例提供的统一调用接口,可以进一步降低了软件开发难度,有效提高软件的开发进度。
83.可选地,上述确定该电子设备的操作系统为该目标操作系统的操作也可以是通过其他方法确定的,此处不做限定。
84.可选地,上述步骤102之后,本公开实施例提供的摄像头数据获取方法还可以包括下述步骤104。
85.104、在预设时长内未接收到该响应数据的情况下,显示第一提示信息。
86.其中,第一提示信息用于提示重新触发该摄像头数据获取指令。
87.其中,预设时长可以根据实际情况确定,此处不做限定。
88.可以理解,若预设时长内未接收到该响应数据,则可能在摄像头数据获取指令下发,或者响应数据的获取或上传过程中出现了问题,因此,提示用户重新触发该摄像头数据获取指令,如此可以解决上述问题,可以尽快获取到响应数据。
89.可选地,该摄像头数据获取指令用于指示以下任一项:获取该电子设备可用的摄像头列表,该摄像头列表中包括至少一个摄像头标识,每个摄像头标识用于指示一个摄像头;获取该电子设备可用的每个摄像头的摄像头参数,该摄像头参数包括以下任一项:摄像头标识、摄像头图像格式、摄像头连接状态;控制目标摄像头执行目标操作,该目标操作包括以下任一项:切换为该目标摄像头,开启该目标摄像头,关闭该目标摄像头,拍摄图像,停止拍摄图像。
90.其中,摄像头数据获取指令还可以用于指示其他摄像头数据获取功能,此处不做限定。
91.本公开实施例中,为各个操作系统封装了各种摄像头数据的获取功能,如此,可以通过统一调用接口,实现了跨平台摄像头能力的获取,方便调用,降低在node.js上的摄像头相关功能开发的复杂度。
92.本公开实施例中的统一调用接口可以应用于基于node.js+react的框架的应用开发。
93.node.js是一个基于chrome v8(简称v8,是一个开源的javascript引擎)引擎的javascript运行时。
94.可选地,该摄像头数据获取指令用于指示控制目标摄像头执行目标操作,该目标操作包括开启该目标摄像头;上述步骤102之前,本公开实施例提供的摄像头数据获取方法还可以包括下述步骤105,上述步骤102具体可以通过下述步骤102a实现。
95.105、在该目标操作系统为预设系统的情况下,通过在脚本层调用该统一调用接口,确定当前应用是否具有摄像头权限。
96.102a、在该当前应用具有该摄像头权限的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
97.可以理解,通过统一调用接口可以获取当前应用是否具有摄像头权限,进而在当前应用具有摄像头权限时,直接通过统一调用接口下发摄像头数据获取指令,在当前应用不具有摄像头权限时,提示用户是否为当前应用开启摄像头权限,如此可以实现在脚本层做到无差别调用,实现摄像头权限的获取,以及摄像头数据的获取。即将获取摄像头权限的功能也封装到统一调用接口中,因此在跨平台应用开发过程若使用本公开实施例提供的统一调用接口,可以进一步降低了软件开发难度,有效提高软件的开发进度。
98.可选地,上述步骤105之后,本公开实施例提供的摄像头数据获取方法还可以包括下述步骤106和步骤107,上述102a具体可以通过下述102a1实现。
99.106、在该当前应用不具有该摄像头权限的情况下,显示第二提示信息。
100.其中,第二提示信息用于提示是否开启该当前应用的摄像头权限。
101.107、在接收到不开启该当前应用的摄像头权限的触发操作的情况下,显示第三提示信息。
102.其中,第三提示信息用于指示禁止该当前应用开启该目标摄像头。
103.102a1、在接收到开启该当前应用的摄像头权限的触发操作的情况下,通过在该脚
本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
104.可以理解,在用户选择使用一个摄像头的时候,针对需要设置摄像头权限的操作系统,可以查询该设备是否为当前应用授权,如果当前应用未授权,则弹出系统的授权提示框,如果用户选择授权,就开始为用户传输数据;如果用户选择拒绝,用户将停留在没有授权的状态,同时在用户界面(user interface,ui)上给用户提示并给一个跳转开启摄像头权限的链接,用户可以方便地设置权限。针对无需设置摄像头权限的操作系统,当用户选择摄像头时,直接开始传输数据。
105.本公开实施例中,在该当前应用不具有该摄像头权限的情况下,提示用户是否开启该当前应用的摄像头权限,在接收到不开启该当前应用的摄像头权限的触发操作的情况下,提示用户没有权限,禁止该当前应用开启该目标摄像头,在接收到开启该当前应用的摄像头权限的触发操作的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令,如此通过设置提示信息,可以提高人机交互性能,提高用户体验。
106.示例性地,统一调用接口为根据上述s11至s13生成的,以脚本层为js层,系统层api为c++层api为例,所有和摄像头有关的操作都会从js层发起,通过jsbinding的接口调用到我们封装的c++层的类camera(摄像头)接口(api接口)中,对接口的实现按照不同操作系统分为camerawin、cameramac、cameraandroid等。例如c++层封装的接口主要有:
107.摄像头camera实例的创建函数(construct),摄像头数据回调函数和摄像头权限回调函数,这两个回调在创建实例的时候会被记录下来;camera创建根据不同操作系统会调用不同的摄像头系统级api保证系统级的摄像头资源创建完毕;摄像头权限检测接口(checkcameraauthority),可以查询当前应用对设备上摄像头的访问权限;可用摄像头列表获取函数(availablecameralist),可以获取当前可用的摄像头的标识(需要保证权限检测通过);切换摄像头函数(switchcamera)函数,可以用于切换不同的摄像头;还有一些通用的控制函数可以方便数据流的控制,如pause(画面暂停)、resume(画面恢复)和stop(停止拍摄备)。
108.cmake程序执行时,可以获取当前电子设备运行的操作系统,设置一个变量(如platform_os)来指示不同的操作系统,变量值不同,代表不同的操作系统,调用不同操作系统下封装的摄像头数据的获取功能。
109.上面这个c++层的cmara类具有的接口都可以通过jsbinding技术映射到js层,js层调用时只需调用对应的接口就可以完成相应的交互效果,举例如下:
110.首先从js层创建一个摄像头实例c1并传递对应的图像展示的摄像头数据回调函数f1,f1在摄像头设备采集到数据就会被调用,用户可以通过f1拿到相应的数据;摄像头c1创建之后,需要检查权限状态,已经授权则说明摄像头数据可以直接使用,其他时候开发者/用户需要采取相应处理;通过绑定的availablecameralist接口,获取可以使用的摄像头列表,然后选择想要使用的设备通过switchcamera接口打开,等待摄像头数据通过f1回传即可;数据通过f1返回之后,可以进行暂停和恢复这些操作;可以切换摄像头,也是通过availablecameralist接口获取列表,然后切换使用的设备当然,不使用摄像头可以调用stop接口关闭摄像头。
111.本公开实施例中,聚焦于“摄像头”模块在js+c++场景下的使用,可以支持pc端和移动端(windows、mac、linux、android和ios),整个流程上就是在c++和js两层中间加了一个binding层,而这个binding层可以只是一个可以透明化的传递层;因此也就减短了调用链路,减少了数据的解析,提升了效率;摄像头数据通过回调方式传递,用户可以灵活选择跨线程方式去处理或异步方式去处理等。
112.其中,摄像头数据回调接口,即摄像头数据回调函数,指的是开发者向本框架提供的一个函数。这个函数会作为本框架的输入,以告诉本框架,用户想对摄像头所提供的数据做何种处理。比如用户可以提供一个函数,对摄像头的图像数据的每个像素值都进行+1处理。摄像头数据回调接口是可以由用户自定义的。
113.图4为本公开实施例示出的一种摄像头数据获取装置的结构框图,如图4所示,包括:接收模块401和下发模块402;该接收模块401,用于接收第一触发操作,第一触发操作用于指示摄像头数据获取指令;该下发模块402,用于响应于该接收模块401接收的第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令,该统一调用接口封装有多个操作系统下摄像头数据的获取功能,该多个操作系统包括该目标操作系统;该接收模块401,还用于接收该原生接口返回的该摄像头数据获取指令对应的响应数据。
114.可选地,该统一调用接口是通过下述步骤生成的:将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成系统层api;将该多个操作系统的该系统层api封装成跨平台摄像头模块;将该跨平台摄像头模块绑定到该脚本层,以生成该统一调用接口。
115.可选地,该统一调用接口是通过下述步骤生成的:将该多个操作系统的原生接口绑定到该脚本层;在该脚本层,将每个操作系统的原生接口和对应的摄像头数据的获取功能封装成脚本层api;将该多个操作系统的该脚本层api封装成该统一调用接口。
116.可选地,该下发模块402,具体用于响应于第一触发操作,通过该统一调用接口确定该电子设备的操作系统为该目标操作系统;通过在该脚本层调用该统一调用接口中封装的目标功能,向该目标操作系统的该原生接口下发该摄像头数据获取指令,该目标功能为该目标操作系统下与该摄像头数据获取指令对应的摄像头数据的获取功能。
117.可选地,该装置还包括:显示模块;该显示模块,用于在响应于第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令之后,在预设时长内未接收到该响应数据的情况下,显示第一提示信息,第一提示信息用于提示重新触发该摄像头数据获取指令。
118.可选地,该摄像头数据获取指令用于指示以下任一项:获取该电子设备可用的摄像头列表,该摄像头列表中包括至少一个摄像头标识,每个摄像头标识用于指示一个摄像头;获取该电子设备可用的每个摄像头的摄像头参数,该摄像头参数包括以下任一项:摄像头标识、摄像头图像格式、摄像头连接状态;控制目标摄像头执行目标操作,该目标操作包括以下任一项:切换为该目标摄像头,开启该目标摄像头,关闭该目标摄像头,拍摄图像,停止拍摄图像。
119.可选地,该摄像头数据获取指令用于指示控制目标摄像头执行目标操作,该目标操作包括开启该目标摄像头;该装置还包括:确定模块;该确定模块,用于在通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令之前,在该目
标操作系统为预设系统的情况下,通过在脚本层调用该统一调用接口,确定当前应用是否具有摄像头权限;该下发模块402,具体用于在该当前应用具有该摄像头权限的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
120.可选地,该显示模块,还用于在该目标操作系统为预设系统的情况下,通过在脚本层调用该统一调用接口,确定当前应用是否具有摄像头权限之后,在该当前应用不具有该摄像头权限的情况下,显示第二提示信息,第二提示信息用于提示是否开启该当前应用的摄像头权限;接收到不开启该当前应用的摄像头权限的触发操作的情况下,显示第三提示信息,第三提示信息用于指示禁止该当前应用开启该目标摄像头;该下发模块402,具体用于在接收到开启该当前应用的摄像头权限的触发操作的情况下,通过在该脚本层调用该统一调用接口,向该目标操作系统的该原生接口下发开启该目标摄像头的指令。
121.本公开实施例中,各模块可以实现上述方法实施例提供的摄像头数据获取方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
122.图5为本公开实施例提供的一种电子设备的结构示意图,用于对实现本公开实施例中任意摄像头数据获取方法的电子设备进行示例性说明,不应理解为对本公开实施例的具体限定。
123.如图5所示,电子设备500可以包括处理器(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储装置508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram 503中,还存储有电子设备500操作所需的各种程序和数据。处理器501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
124.通常,以下装置可以连接至i/o接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
125.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从rom 502被安装。在该计算机程序被处理器501执行时,可以执行本公开实施例提供的任意摄像头数据获取方法中限定的功能。
126.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述
的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
127.在一些实施方式中,客户端、服务端可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
128.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
129.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收第一触发操作,第一触发操作用于指示摄像头数据获取指令;响应于第一触发操作,通过在脚本层调用统一调用接口,向目标操作系统的原生接口下发该摄像头数据获取指令,该统一调用接口封装有多个操作系统下摄像头数据的获取功能,该多个操作系统包括该目标操作系统;接收该原生接口返回的该摄像头数据获取指令对应的响应数据。
130.在本公开实施例中,可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言,诸如java、smalltalk、c++,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在计算机上执行、部分地在计算机上执行、作为一个独立的软件包执行、部分在计算机上部分在远程计算机上执行、或者完全在远程计算机或服务端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
131.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
132.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
133.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
134.在本公开的上下文中,计算机可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。计算机可读介质可以是计算机可读信号介质或计算机可读储存介质。计算机可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。计算机可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
135.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
136.此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
137.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1