物联网设备的集成的制作方法

文档序号:31694603发布日期:2022-10-01 03:41阅读:349来源:国知局
物联网设备的集成的制作方法
物联网设备的集成


背景技术:

1.现代智能设备(例如智能手机)通常包括内置外围组件,例如显示器、摄像头、触敏显示器、扬声器和麦克风。另外,这些智能设备包括不同的外围总线,例如蓝牙、wi-fi和通用串行总线(universal serial bus,usb),它们可以扩展与外部设备连接和操作的能力。例如,与蓝牙音频传输模型协定(advanced audio distribution profile,a2dp)兼容的扬声器可以连接到智能手机并通过蓝牙播放音乐。
2.然而,操作连接到智能设备的外部外围设备并不像操作集成到智能设备中的外围设备那么简单。例如,如果用户可以访问外部摄像头,例如网络摄像头,则用户可能难以在用户智能手机上的视频聊天应用中访问外部摄像头,更不用说使用外部摄像头。通常情况下,视频聊天应用和其它应用只与集成在智能手机中的设备一起工作,而不与外部外围设备一起工作。由于外部外围设备的功能优于添加到传统智能手机或其它“主机”设备中的功能,因此无法使用这些外部外围设备的功能,从而降低了通信体验的整体质量和能力。此外,由于存在许多外部外围设备,因此应用开发人员很难使他们的应用能够与外部外围设备一起工作。


技术实现要素:

3.在一些实现方式中,本说明书描述了用于利用物联网(internet of things,iot)设备的技术,这些设备能够通过网络相互通信和交互。具体地,这些技术可以包括使智能设备可以访问与外部外围设备对应的应用可编程接口(application programmable interface,api)。通过使智能手机能够访问外部外围设备的api,智能手机则可以在本地访问内置设备、外部外围设备和用于各种应用的这些设备的组合。具体地,智能设备的操作系统可以包括外部外围设备的各种api,这些api为智能设备提供框架以直接访问可供选择的外部外围设备。因此,智能设备用户可以访问外部外围设备,如同这些外部外围设备是内部内置设备。
4.在一个总的方面,一种方法包括:设备管理器确定在终端用户设备附近的至少一个外部设备;所述设备管理器确定所述终端用户设备的上下文信息;根据所述终端用户设备的所述上下文信息,所述设备管理器与所述至少一个外部设备建立连接;所述设备管理器识别与所述至少一个外部设备对应的功能;所述设备管理器识别与所述至少一个外部设备相关联的虚拟设备;所述设备管理器向所述终端用户设备提供所述识别的虚拟设备,其中,所述终端用户设备使用所述虚拟设备来执行所述至少一个外部设备的所述功能。
5.本发明的这一方面和其它方面的其它实施例包括对应的系统、装置和计算机程序,用于执行所述方法的动作、编码在计算机存储设备上。一个或多个计算机的系统可以通过安装在所述系统上的软件、固件、硬件或它们的组合来配置,这些软件、固件、硬件或它们的组合在操作中使得所述系统执行所述动作。一个或多个计算机程序可以通过包括指令来配置,当数据处理装置执行所述指令时,所述指令使得所述装置执行所述动作。
6.上述和其它实施例可以可选地包括下列单独或组合的一个或多个特征:例如,一
个实施例包括组合的所有以下特征。
7.在一些实现方式中,所述至少一个外部设备包括智能手机、摄像头、电视、麦克风、智能手表、心率监测器、车机、无人机、智能锁或所述终端用户设备在建立合适的连接时能够访问业务的其它智能设备。
8.在一些实现方式中,所述识别与所述至少一个外部设备对应的功能还包括:所述设备管理器从所述至少一个外部设备获取与所述至少一个外部设备对应的功能集;根据先前与所述至少一个外部设备建立的连接,所述设备管理器从数据库中获取与所述至少一个外部设备对应的所述功能。
9.在一些实现方式中,所述确定所述终端用户设备的上下文信息还包括:所述设备管理器确定所述终端用户设备的位置;所述设备管理器确定所述终端用户设备上的一个或多个应用;所述设备管理器确定所述终端用户设备的类型的特征。
10.在一些实现方式中,所述确定所述终端用户设备的上下文信息可以包括:所述设备管理器确定所述至少一个外部设备提供的所述终端用户设备上的所述一个或多个应用当前不可用的至少一个功能;所述设备管理器接收所述终端用户设备上的所述一个或多个应用访问所述至少一个外部设备提供的所述至少一个功能的请求。
11.在一些实现方式中,所述识别与所述至少一个外部设备相关联的虚拟设备包括:所述设备管理器向所述至少一个外部设备提供控制信息以控制所述至少一个外部设备;所述设备管理器接收与所述至少一个外部设备对应的至少一个设备规格,其中,所述至少一个设备规格包括所述至少一个外部设备提供的功能的类型、所述功能的业务、所述功能的协议、所述功能的应用程序接口(application program interface,api)和所述功能提供的媒体数据质量;所述设备管理器将所述识别的与所述至少一个外部设备对应的虚拟设备存储到数据库中,其中,与所述识别的虚拟设备对应的功能被识别给所述终端用户设备和其它外部设备以供使用。
12.在一些实现方式中,所述方法包括:所述设备管理器根据与所述终端用户设备相关联的偏好向所述终端用户设备提供在所述终端用户设备附近的至少一个外部设备的推荐,其中,所述偏好基于先前从所述外部设备中选择所述功能集、当前正在所述终端用户设备上执行的应用、所述终端用户设备的能力、所述终端用户设备的位置和所述终端用户设备与所述当前正在所述终端用户设备上执行的应用相结合的使用时间中的一个或多个。
13.在一些实现方式中,所述提供在所述终端用户设备附近的至少一个外部设备的推荐还包括:所述设备管理器根据与所述终端用户设备相关联的所述偏好生成外部设备推荐的预测可能性;所述设备管理器根据所述生成的预测可能性对所述外部设备推荐进行排名;所述设备管理器向所述终端用户设备提供所述排名后的外部设备推荐。
14.本说明书主题的一种或多种实现方式的详细内容在附图和具体实施方式中阐述。本主题的其它特征、方面和优点在具体实施方式、附图和权利要求书中是显而易见的。
附图说明
15.图1是用于将一个或多个外部设备的应用可编程接口(application programmable interface,api)集成到智能设备中的系统的一个示例的框图。
16.图2是用于使用智能设备实现与外部摄像头对应的虚拟摄像头api的系统的一个
示例的框图。
17.图3是用于在虚拟摄像头硬件抽象层(hardware abstraction layer,hal)和外部摄像头之间进行通信的过程的一个示例的框图。
18.图4是显示现有应用使用硬件抽象层api的系统的一个示例的框图。
19.图5是用于使用智能设备实现与外部摄像头对应的虚拟设备的系统的一个示例的框图。
20.图6是用于使用智能设备实现与外部摄像头对应的虚拟设备的系统的一个示例的框图。
21.图7是用于选择要在智能设备中使用的设备的过程的一个示例的流程图。
22.图8是在智能设备中使用的切换设备过程的一个示例的流程图。
23.图9是用于将一个或多个外部设备的api集成到智能设备中的过程的一个示例的流程图。
24.各个附图中的相似附图标记和名称表示相似元件。
具体实施方式
25.通常情况下,智能设备使用有线连接或无线连接能够连接到外部设备,例如外部摄像头。例如,有线连接可以包括usb或以太网连接。例如,无线连接可以包括wi-fi、蓝牙或其它无线连接。在一些情况下,操作系统包括各种类别,以控制外部摄像头设备并与外部摄像头设备进行通信。许多先决条件可以使操作系统能够与外部设备(例如usb可连接摄像头)连接。在usb可连接摄像头的示例中,智能设备的操作系统能够构建一种用于通过usb与外部摄像头设备进行通信的“usb视频类别(usb video class,uvc)”和一种用于控制外部摄像头设备的视频驱动。操作系统最好包括硬件抽象层(hardware abstraction layer,hal)和框架,这种框架可以识别通过扫描可用设备识别到的许多外部摄像头设备,并提供应用可编程接口(application programmable interface,api)供外部应用使用。在主机智能设备上运行的摄像头应用应该能够感知“外部摄像头”,以便它们能够检测可用的外部摄像头,而且这些应用应该主动控制外部摄像头,同时为外部摄像头提供介质(例如显示器)来呈现内容。
26.但是,并不是所有操作系统都包括内置uvc,而且大多数智能设备应用只能识别和控制一体化前置和后置摄像头。例如,智能设备上流行的视频聊天应用只能控制智能设备上的前置和后置摄像头。因此,即使当用户已经将usb摄像头与他们的智能设备连接时,用户的视频聊天应用也会忽略一个或多个外部摄像头,而是与内部摄像头连接。usb外部摄像头只能由专门设计来使用usb外部摄像头的应用使用。
27.无线连接的摄像头通常用于诸如远程婴儿监护、家庭安全和商业安全之类的监控应用中。从操作系统的角度来看,实时视频流源自外部摄像头设备。外部摄像头设备提供视频流业务,操作系统上的视频应用作为客户端接收视频流并控制视频流进度。虽然监控应用能够控制外部摄像头,但监控应用不能向其它应用提供摄像头业务。例如,操作系统上其它流行的视频聊天应用不能使用外部安全摄像机。
28.因此,为了模糊外部摄像头设备和内部摄像头设备之间的区别,本说明书描述了一种设备管理器,这种设备管理器可以管理或创建,例如一种“虚拟摄像头”,这种虚拟摄像
头用于与外部设备(例如外部摄像头)建立连接并控制外部设备。例如,智能设备的操作系统上的虚拟摄像头与外部摄像头建立连接,控制外部摄像头的介质,并且接收来自外部摄像头的视频流。另外,虚拟摄像头实现标准摄像头api,以使外部摄像头与操作系统及其各种应用一起工作。此外,操作系统包括一种“设备管理器”,这种设备管理器管理智能设备的内置设备和虚拟设备(例如智能设备),并且根据智能设备的上下文决定虚拟设备或内置设备是否应该用于特定应用。“虚拟摄像头”可以模拟外部摄像头,如同它们是内置摄像头,例如前置和后置摄像头。因此,智能设备中的应用可以与外部摄像头或内置摄像头一起工作,而无需任何物理更改。这样能够使用内置摄像头中没有的外部摄像头功能,例如平移(pan)、倾斜、变焦和运动跟踪,从而极大丰富了用户使用外部摄像头的体验。
29.图1是用于将一个或多个外部设备的应用可编程接口(application programmable interface,api)集成到智能设备中的系统100的一个示例的框图。通过系统100提供的技术利用外部设备(例如物联网(internet of things,iot)设备),以及通过网络的智能设备的外围设备。这是有利的,因为这使得用户可以在他们的智能设备上使用外部设备及其对应的功能,如同外部设备内置到智能设备中。例如,智能手表(例如智能设备)中的应用能够使用外部摄像头的功能作为它的内部摄像头,并且能够在智能手表的显示器上显示来自外部摄像头的视频。另外,智能tv中的应用(例如视频会议应用)能够在允许用户访问智能tv中的应用时使用智能手机的人脸识别技术和摄像头来执行人脸识别。任何其它合适的功能组合都可以用于将一个或多个外部设备的功能提供给智能设备中的应用。
30.如系统100中所示,智能电视(television,tv)104与客户端设备102进行通信。客户端设备102可以是外围设备,例如手持设备、移动电话、个人计算机、个人数字助理(personal digital assistant,pda)和摄像头,仅举几例。智能tv 104和客户端设备102可以通过网络(未示出)相互通信。网络可以是有线网络或无线网络。例如,网络可以包括以太网或usb连接。另外,在一些示例中,网络可以包括wi-fi、蓝牙、长期演进(long-term evolution,lte)或zigbee连接。
31.客户端设备102可以包括业务层106、驱动层108和物理层110。如系统100中所示,智能软件表示业务层106。例如,智能手机中的摄像头(例如客户端设备102内的摄像头120)可以用作另一智能tv(例如智能tv 104)内的外部设备。在这种情况下,客户端设备102可以将其摄像头(例如摄像头功能)导出到智能tv 104中,以使得智能tv 104可以访问客户端设备102中的摄像头。又如,客户端设备102可以包括人脸识别软件,并将其作为智能软件导出到智能tv 104中,使得智能tv 104可以使用客户端设备102的人脸识别技术。在本示例中,智能tv 104可以执行人脸识别,即客户端设备102提供的业务。又如,智能tv 104可以包括自己的人脸识别软件作为tv的“其它智能软件”118的组件,使得tv添加有客户端设备102中的摄像头的功能,作为虚拟摄像头设备。这将在下文进一步解释说明。
32.客户端设备102还包括能够控制关联设备的驱动层108。具体地,驱动层108可以包括客户端设备102内部和外部的每个组件的驱动。该驱动提供到这些硬件组件的软件接口,使得客户端设备102中的操作系统、处理器和其它应用能够访问与硬件组件相关联的功能,而不需要知道关于正在使用的硬件组件的具体细节。例如,系统100示出了驱动层108包括使得客户端设备102可以使用内部摄像头120的摄像头驱动。另外,客户端设备102可以将摄像头驱动提供给其它外部组件,例如智能tv 104或智能手表,它们需要摄像头的功能。
33.客户端设备102还包括物理层110。物理层110包括客户端设备102中的物理设备和虚拟设备之间的比特和字节级通信。例如,客户端设备102可以在其物理层包括用于在客户端设备102中的处理器和客户端设备102中的摄像头120之间进行通信的软件。
34.智能tv 104可以包括用于为内置硬件和外部硬件执行软件的各种控件。具体地,智能tv 104可以包括tv应用112和其它智能软件118。智能tv 104还包括其它组件,因为系统100中列出的组件不能说明所有tv应用112。例如,智能tv 104可以包括tv应用,例如netflix、amazon prime video、hulu、视频会议应用和youtube,仅举几例。智能tv应用112可以使用其它智能软件118或智能摄像头模组114。例如,智能摄像头模组114可以提供人脸识别能力,而其它智能软件118可以将人脸图像编辑和过滤软件提供给tv应用112。
35.其它智能摄像头模组118可以包括用于控制内置摄像头和外部摄像头的操作的一个或多个软件和硬件组件。在一些情况下,内置摄像头可以不是智能tv 104的一部分,使得智能模块114。智能摄像头模组114使得tv应用112可以访问内置智能软件和摄像头。另外,智能摄像头模组114可以包括客户端设备102中的智能软件,以使智能tv 104能够使用客户端设备102中的摄像头和摄像头的功能。智能摄像头模组114可以从客户端设备102获取或访问。另外,原始摄像头模组116可以包括客户端设备102提供的拥有自己的智能的“虚拟”摄像头以及用于智能电视104的内部摄像头。
36.智能电视104可以包括各种现有组件和新的或更新的组件,以使得用户可以访问内部和外部组件。在所示的实现方式中,现有组件如图例176所示并且可以包括,例如视频聊天应用122、游戏应用124、导航应用126和网页浏览器128,以及一些现有api,等等。新组件由图例178示出并且可以包括,例如硬件抽象层136及其设备管理器138,以及用于连接到外部设备的新api,如本文所述。如系统100中所示,示例性智能电视104包括各种应用,例如视频聊天应用122、游戏应用124、导航应用126、网页浏览器应用128和其它新应用130。其它新应用130可以与其它设备(例如客户端设备102)提供的扩展api或扩展业务一起工作。这些应用可以存储在智能设备104中,或者由智能设备104通过网络在数据库中访问。扩展业务132对应于其它设备提供给其它新应用130的功能。具体地,这些应用可以使用扩展业务提供的功能。例如,扩展业务132可以为摄像头运动提供平移/倾斜/变焦(p/t/z)移动。另外,扩展业务132还可以表示外部智能设备提供的业务,并促进本地应用使用外部业务。
37.智能电视104还包括应用框架134和硬件抽象层136。应用框架134包括管理智能电视104上的计算机硬件和软件资源的操作系统框架。另外,应用框架134将公共业务提供给在智能电视104上执行的计算机程序或应用。应用框架134使硬件和软件组件能够进行无缝通信和协同工作。
38.硬件抽象层136包括设备管理器138和用于内部设备和外部设备的多个api及其实现方式(即虚拟设备),其中,设备管理器138管理内部设备和外部设备。在一些情况下,设备管理器138可以同时管理内部设备和外部设备以及同时管理多个内部设备和/或外部设备。在一些示例中,智能tv 104可以使用的外部设备中的至少一些外部设备可以由客户端设备102提供或与客户端设备102相关联。当智能电视104试图与外部设备交互时或者外部设备试图与智能电视104交互时,智能电视104经由设备管理器138为每个外部设备加载虚拟设备。具体地,设备管理器138生成或实例化虚拟设备,以控制待控制和/或待交互的外部设备的功能。例如,设备管理器138将虚拟设备160提供给摄像头应用,例如视频聊天122(例如
skype)。由于虚拟设备160已经实现了摄像头api 140,因此现有摄像头应用可以通过与调用本地摄像头158类似的方式调用虚拟设备160的功能(例如预览命令)。通过这种方式,摄像头应用可以与虚拟设备无缝工作。扩展摄像头api 142是摄像头api 140的扩展版本,摄像头api 140对应于智能电视104上的内部内置摄像头。扩展摄像头api 142包括虚拟设备160已经实现的新接口。另外,由于现有摄像头应用不知道存在扩展api,因此这些摄像头应用不会调用这些新api。例如,与智能电视104上的摄像头交互的用户无法根据软件判断智能电视104是否正在使用客户端设备102中的内部摄像头(例如本地摄像头158)或外部摄像头182(通过虚拟摄像头160)。但是,用户可以分析摄像头中的显示器上的视频画面,以确定哪个摄像头正在录制视频。
39.设备管理器138可以包括用于控制智能tv 104中的其它内部组件和其它外部外围设备的软件。例如,智能tv 104可以试图包括智能手表的心跳和其它健康功能、扬声器的音频功能和客户端设备的其它功能,例如与互联网的连接。设备管理器138使得智能tv 104可以访问在智能tv 104附近的其它外部硬件和软件组件。在一些示例中,当智能tv 104与互联网连接时,设备管理器138使得智能tv 104可以访问远离智能tv 104的其它外部硬件和软件组件。另外,当远离智能tv 104时,其它外部硬件和软件组件需要访问互联网。
40.扩展摄像头api 142由虚拟设备160实现,并使得新应用(例如新应用130)能够调用外部摄像头182提供的新功能,例如平移、倾斜和变焦等功能。设备管理器138管理硬件抽象层api,例如扩展api和内部设备api。另外,设备管理器138使得智能电视104上的第三方应用能够与外部设备交互,如同第三方应用使用硬件抽象层api与内部设备交互。
41.如系统100中所示,硬件抽象层136包括现有设备api:摄像头api 140、显示api 144、音频api 148和输入api 152。另外,硬件抽象层136包括扩展api:扩展摄像头api 142、扩展屏幕api 146、扩展扬声器/麦克风api 150和扩展触摸屏、键盘api 154。硬件抽象层136中的api用于声明组件可以提供哪些功能供其它组件使用。具体地,如系统100中所示的api使得智能电视104可以访问特定组件的功能和操作。特定组件的功能可以包括用于操作特定组件的指令,例如对录制视频的摄像头的指令。例如,摄像头设备api 140提供或开放本地内置摄像头设备158的功能。另外,摄像头设备api 140和扩展api 142都采用并提供虚拟摄像头设备160和外部摄像头设备182的功能。具体地,扩展api 142开放虚拟摄像头设备60和外部摄像头182提供的其它功能。又如,音频api 148提供本地内置扬声器设备166的功能。另外,音频设备api 148和扩展扬声器api 150都提供虚拟扬声器/麦克风设备168、外部麦克风185和外部扬声器186的功能。因此,智能电视104可以将api提供的功能添加到它的应用中供用户使用。例如,当用户查看网页浏览器应用128时,智能电视104可以显示外部摄像头182或外部键盘188的可用功能。在这个示例中,用户则可以将外部摄像头182或外部键盘188的功能与智能电视104上的网页浏览器应用128一起使用。
42.另外,硬件抽象层136可以包括其它设备n 174、对应的虚拟设备及其对应的api。如系统100中所示的虚拟设备(例如虚拟摄像头160、虚拟屏幕164、虚拟扬声器/麦克风168和虚拟触摸屏/键盘172)包括用于实现特定设备的扩展api的软件。每个虚拟设备都应该实现现有api和扩展api。虚拟设备实现现有设备api和扩展api,以便现有应用和框架可以与虚拟设备一起工作,而无需任何更改。另外,虚拟设备可以包括本地api或本地设备中没有的扩展功能。此外,在特定设备或功能的本地版本不是智能设备的一部分的情况下,例如,
当一体化摄像头不包括或不可用时,硬件抽象层136和设备管理器138仍然可以通过实例化与外部设备相关联的一个或多个虚拟摄像头160来使用外部摄像头。摄像头api 140使得智能电视104可以使用本地摄像头设备158和虚拟设备160。另外,扩展摄像头api 142使得智能电视104可以只使用虚拟设备160的扩展功能。例如,虚拟设备160可以包括实现外部摄像头182的扩展功能(例如实现扩展摄像头api 142调用的扩展功能)的软件。扩展功能可以包括执行平移、倾斜和变焦。显示api 144使得智能电视104可以使用本地屏幕设备162和虚拟屏幕设备164。另外,扩展屏幕api 146使得智能电视104可以只使用虚拟屏幕164的扩展功能。例如,虚拟屏幕设备164可以包括实现外部电视184的功能(例如实现扩展屏幕api 146开放的功能调用产生的功能)的软件。音频api 148使得智能电视104可以使用本地扬声器166和虚拟扬声器/麦克风设备168。另外,扩展扬声器/麦克风api 150使得智能电视104可以只使用虚拟扬声器/麦克风设备168的扩展功能。例如,虚拟扬声器/麦克风设备168可以包括实现外部麦克风185和外部扬声器186的功能(例如实现扩展扬声器/麦克风api150开放的功能调用产生的功能)的软件。输入api 152使得智能电视104可以使用本地触摸屏、键盘设备170和虚拟触摸屏、键盘设备172。另外,扩展触摸屏、键盘api 154使得智能电视可以只使用虚拟触摸屏、键盘设备172的扩展功能。例如,虚拟触摸屏、键盘设备172可以包括实现外部键盘188的功能(例如实现扩展触摸屏、键盘api 154开放的功能调用产生的功能)的软件。设备管理器138还可以包括智能电视104中包括或智能电视104外部的其它设备174。因此,在现有api中声明的功能同时支持现有内置设备和虚拟设备。另外,在扩展api中声明的功能只支持虚拟设备。
43.设备管理器138使得智能电视104中的各种应用可以使用api与每个本地或虚拟设备交互。例如,如果智能电视104的用户打开视频聊天应用122,则设备管理器138可以提供在智能电视104的本地屏幕162上使用虚拟摄像头设备160的默认建议。可选地,设备管理器138可以通过本地屏幕162向用户呈现使用本地摄像头158或虚拟摄像头设备160的选项。用户可以与智能电视104的本地屏幕162上的一个或多个按钮交互,以选择要使用的摄像头。具体地,设备管理器138可以通过显示api 144向本地屏幕162提供使用哪个摄像头的选项。例如,响应于用户选择虚拟摄像头160,设备管理器138可以加载对应的硬件抽象层(hardware abstraction layer,hal)组件,例如虚拟摄像头设备160,并向应用框架134提供对应的hal组件以供智能电视104中的应用使用。
44.又如,如果智能电视104的用户打开网页浏览器应用128,则设备管理器138可以提供用户是更喜欢使用智能电视104的本地触摸屏、键盘设备170还是更喜欢使用虚拟触摸屏、键盘设备172的指示。用户可以通过本地屏幕162提供要使用哪个键盘的选择。可选地,如果设备管理器138知道用户更喜欢使用虚拟屏幕设备164或已经在使用虚拟屏幕设备164,则设备管理器138可以提供使用虚拟设备164的指示。然后,用户可以选择使用本地触摸屏、键盘170或虚拟触摸屏、键盘172。响应于用户选择,例如选定的虚拟触摸屏、键盘设备172,设备管理器138会加载虚拟设备172,并将其提供给应用框架134和网页浏览器应用128,以便用户可以在虚拟触摸屏、键盘设备172上键入,以与网页浏览器应用128交互。
45.图2是用于使用智能设备201实现与外部摄像头对应的虚拟摄像头api的系统200的一个示例的框图。系统200包括智能设备201、外部摄像头236和外部摄像头236内的内部组件。智能设备201包括摄像头应用202、应用框架204、扩展业务206、硬件抽象层208和虚拟
摄像头硬件抽象层(hardware abstraction layer,hal)218。系统200包括的组件与系统100中的组件类似。
46.摄像头应用202包括使用智能设备201中的摄像头的各种应用。例如,摄像头应用202可以包括视频消息应用、视频会议应用和视频录制应用。智能设备201包括应用框架204,应用框架204为摄像头应用202提供框架,以与智能设备201中的操作系统交互。通过应用框架204,摄像头应用202还可以使用存储在智能设备201中的api与各种内部设备和外部设备进行通信。
47.智能设备201还包括扩展业务206。扩展业务206类似于系统100中所示的扩展业务132。扩展业务206可以包括新应用(例如系统100中的新应用130)可以使用的功能。
48.智能设备201还包括硬件抽象层208。硬件抽象层208类似于系统100中的硬件抽象层136。具体地,硬件抽象层208包括摄像头api 212、扩展api 214、连接到智能设备201的本地摄像头216和虚拟摄像头硬件抽象层(hardware abstraction layer,hal)218。下面进一步描述的虚拟摄像头218包括一个或多个外部摄像头,并且物理上不连接到智能设备201。例如,系统200包括外部摄像头236(例如虚拟摄像头),智能设备201可以将其用作外部摄像头。
49.虚拟摄像头hal 218包括请求处理器224、媒体接收器模块226、流媒体客户端228和摄像头控制模块234。请求处理器224处理智能设备201中的操作系统提供的请求220。当摄像头应用202请求访问虚拟设备或外部设备的功能时,智能设备201中的操作系统生成一个或多个请求220。然后,操作系统向虚拟摄像头hal 218传输请求220。请求处理器224从操作系统接收请求220并将请求转发到外部摄像头236。例如,请求处理器224通过摄像头控制模块234或实时流协议(real time streaming protocol,rtsp)230将请求220转发到外部摄像头236。请求处理器224可以根据外部摄像头的能力提供请求。例如,如果到达外部摄像头236的请求包括外部摄像头当前不可用或不实现的功能,则请求处理器224可以丢弃该请求。
50.请求220可以包括调整和设置外部摄像头236的摄像头设置/控件的指示。另外,请求220可以包括捕获和处理来自外部摄像头236的录制视频的指示。例如,这些请求220可以包括调整设置,例如分辨率、像素格式和3a模式,例如自动对焦、自动曝光和自动白平衡(3a模式)。在一些示例中,外部摄像头236包括的功能可以比内置摄像头的功能多。因此,虚拟摄像头hal 218会包括智能设备201可以使用的外部摄像头的其它功能。例如,外部摄像头可以包括智能设备201可以使用的与内部摄像头没有关联的功能,例如平移、倾斜和变焦功能。
51.摄像头控制模块234可以与外部摄像头236中的摄像头控制模块246进行通信。摄像头控制模块234根据智能设备201中的操作系统提供的请求220配置外部摄像头236。另外,响应于外部摄像头236完成请求220,摄像头控制模块234从摄像头控制模块246接收确认。
52.流媒体客户端228包括rtsp模块230和实时协议(real-time protocol,rtp)/实时控制协议(real-time control protocol,rtcp)模块232。流媒体客户端228使用rtsp 230作为一种用于与外部摄像头236建立连接以及接收控制信息并向外部摄像头236提供控制信息的协议。例如,控制信息可以包括播放、暂停、快退、快进和录制媒体的指示。流媒体客
户端228还可以从流媒体服务器240接收指示所请求的控制信息已经设置的响应。rtp/rtcp模块232能够在智能设备201和外部摄像头236之间传输流媒体。
53.虚拟摄像头hal 218还包括媒体接收器模块226。媒体接收器模块226与rtp/rtcp模块232进行通信,以从外部摄像头236接收视频和图像数据。媒体接收器模块226还将图像数据和对应的元数据提供给存储在智能设备201中的图像缓冲区222。智能设备201中的操作系统通常访问图像缓冲区222,以向摄像头应用202提供媒体。在这种情况下,操作系统可以访问来自图像缓冲区222中的内部摄像头设备的录制媒体或来自图像缓冲区222中的外部摄像头设备的录制媒体。因此,虚拟摄像头hal 218使得智能设备201可以通过访问存储器(例如图像缓冲区222)中的相同位置的媒体,使用外部摄像头或虚拟摄像头,如同它们是内置摄像头。
54.外部摄像头236包括流媒体服务器240和摄像头控制模块246。流媒体服务器240包括rtsp模块242和rtp/rtcp模块244。具体地,流媒体服务器240上的rtsp模块242,例如通过流媒体客户端228上的rtsp 230,在外部摄像头236和智能设备201中的虚拟摄像头hal 218之间建立连接。另外,rtsp模块242管理和建立用于控制外部摄像头236的功能的命令。例如,rtsp模块242管理用于控制视频流控制的命令,例如播放、暂停、快进和快退。rtp/rtcp模块244通过rtp/rtcp模块232向智能设备201提供外部摄像头236录制的视频/图像数据。最后,摄像头控制模块246开放虚拟摄像头hal 218的用户界面,以使得智能设备201可以查询与外部摄像头236对应的摄像头信息并控制外部摄像头236的行为。例如,摄像头控制模块246控制摄像头的命令,例如平移、倾斜、变焦(图2中的“p/t/z”)、分辨率、像素格式和3a模式中的至少一个模式的设置。
55.图3是用于在虚拟摄像头硬件抽象层(hardware abstraction layer,hal)和外部摄像头之间进行通信的过程300的一个示例的框图。具体地,过程300示出了在设置虚拟摄像头hal与外部摄像头进行通信时以下组件之间进行的通信。这些组件包括摄像头应用和应用框架302、新摄像头控制应用304、扩展摄像头业务306、虚拟摄像头hal(请求处理器)308、虚拟摄像头hal(视频/图像)接收器310、虚拟摄像头hal(rtsp)312、虚拟摄像头hal(rtp/rtcp)314、外部摄像头(流媒体服务器)316和外部摄像头控件318。过程300包括的组件与系统200和100中的组件类似,而且执行的功能与系统200和100中的功能类似。
56.在320中,虚拟摄像头hal(请求处理器)308确定外部摄像头是否存在以及是否在对应的智能设备附近。具体地,虚拟摄像头hal(请求处理器)308执行服务发现协议以确定外部摄像头是否在智能设备附近。例如,虚拟摄像头hal(请求处理器)308可以使用alljoyn或nearby来确定外部摄像头是否存在。虚拟摄像头hal(请求处理器)308可以通过连接到外部摄像头(流媒体服务器)316或外部摄像头控件318来确定外部摄像头存在。响应于确定外部摄像头是否存在,设备管理器可以注册外部摄像头。
57.在322中,响应于确定外部摄像头在智能设备附近,智能设备中的设备管理器向智能设备注册外部摄像头。具体地,摄像头应用和应用框架302向虚拟摄像头hal(请求处理器)308传输请求。虚拟摄像头hal(请求处理器)308接收请求并相应地配置外部摄像头。例如,虚拟摄像头hal(请求处理器)308向外部摄像头控件318传输配置请求,以检索外部摄像头的参数。虚拟摄像头hal(请求处理器)308可以从外部摄像头控件318接收配置参数,并且向摄像头应用和应用框架302提供外部摄像头控件的更新设置。
58.在324中,摄像头应用和应用框架302向虚拟摄像头hal(请求处理器)308传输“打开摄像头(open video camera)”命令。虚拟摄像头hal(请求处理器)308从摄像头应用和应用框架接收命令,并且继续与外部摄像头建立rtp和rtcp连接。例如,虚拟摄像头hal(请求处理器)308通过传输“rtsp:setup”命令与外部摄像头(流媒体服务器)316建立rtsp连接。外部摄像头(流媒体服务器)316向虚拟摄像头hal(rtsp)312返回rtp和rtcp端口号。虚拟摄像头hal(rtsp)312向虚拟摄像头hal(请求处理器)308以及摄像头应用和应用框架302返回指示虚拟摄像头hal(rtsp)312已经接收到rtp和rtcp端口号的确认。
59.另外,在324中,摄像头应用302传输视频“视频预览(video preview)”命令,以请求外部摄像头308启动流媒体内容。例如,摄像头应用和应用框架302向虚拟摄像头hal(请求处理器)308传输视频预览命令。作为响应,虚拟摄像头hal(请求处理器)308将视频预览命令转发到虚拟摄像头nal(rtsp)312,虚拟摄像头nal(rtsp)312随后向外部摄像头(流媒体服务器)316下发rtsp:play命令。外部摄像头(流媒体服务器)316可以执行“播放(play)”命令,并且向虚拟摄像头hal(rtsp)312返回“ok”响应,虚拟摄像头hal(rtsp)312随后将ok命令转发到虚拟摄像头hal(请求处理器)308。虚拟摄像头hal(请求处理器)308可以向摄像头应用和应用框架302指示成功接收和执行“视频预览”命令。
60.在326中,外部摄像头(流媒体服务器)316向虚拟摄像头hal(rtp/rtcp)314提供媒体。外部摄像头(流媒体服务器)316通过rtp/rtcp协议向虚拟摄像头hal(rtp/rtcp)314提供媒体数据。作为响应,虚拟摄像头hal(rtp/rtcp)314将媒体转发到虚拟摄像头hal(视频/图像)接收器310。虚拟摄像头hal(视频/图像)接收器310接收媒体数据,解码媒体数据,处理媒体数据,并且向摄像头应用和应用框架302提供解码媒体以供智能设备使用。然后,用户或应用可以与解码媒体交互。
61.在328中,新摄像头控制应用304可以使用扩展业务提供的功能来使用新增api。例如,新摄像头控制应用304可以与扩展摄像头业务306一起工作,以向虚拟摄像头hal(请求处理器)308传输平移/倾斜/变焦命令。例如,新摄像头控制应用304可以向扩展摄像头业务306传输通知以执行平移命令等,而扩展摄像头业务306可以生成特定的平移命令,以提供给虚拟摄像头hal(请求处理器)308。虚拟摄像头hal(请求处理器)308可以向外部摄像头控件318传输这种特定的平移命令。作为响应,外部摄像头控件318可以向虚拟摄像头hal(请求处理器)308返回“配置已处理(configuration processed)”消息,以指示外部摄像头已经根据请求进行了调整,例如平移。然后,虚拟摄像头hal(请求处理器)308可以向摄像头应用和应用框架302指示设置已经进行了调整。
62.图4是显示现有应用使用硬件抽象层api的系统400的一个示例的框图。例如,系统400示出了处于两种不同状态(例如第一状态402和第二状态404)的应用使用外部设备的新功能。例如,第一状态402示出了应用使得用户能够控制关联摄像头的平移和倾斜。第二状态404示出了应用使得用户能够使用关联摄像头放大或缩小。例如,现有应用可以使用现有的hal api与虚拟设备一起工作。但是,为了使得用户可以从外部设备选择新功能,存在两个选项。首先,不修改现有应用,而是添加新应用。例如,为了支持视频聊天应用(例如skype)中的平移、倾斜和变焦功能,可以在特定应用上启动浮动按钮。按下和移动浮动按钮可以控制摄像头处于平移/倾斜模式下,例如向上、向下、向左和向右。浮动按钮406示出了平移和倾斜功能的支持功能。如果用户长时间(例如3秒)按住浮动按钮406而不移动其手
指,则浮动按钮406切换到浮动按钮408。浮动按钮408使得用户可以执行变焦模式。具体地,浮动按钮408使得用户可以通过向左滑动浮动按钮408上的滑块变焦缩小摄像头,浮动按钮408使得用户可以通过向右滑动浮动按钮410上的滑块变焦放大摄像头。在一些实现方式中,浮动按钮406和408等都是在视频聊天应用之外运行的独立应用。
63.图5是用于使用智能设备实现与外部摄像头534对应的虚拟设备的系统500的一个示例的框图。系统500包括的组件与系统100和200以及过程300中的组件类似,而且执行的功能与系统100和200以及过程300中的功能类似。例如,系统500可以示出客户端设备(例如智能电视)内的组件。系统500示出了表示现有组件528、新组件530和应用/设备sdk组件532的图例。
64.系统500包括应用502、504和506以及应用/设备软件开发工具包(software development kit,sdk)508。应用502、504、506可以包括,例如网页聊天应用、视频聊天应用和视频游戏应用。应用/设备sdk 508可以包括用于管理外部设备的软件,并且向第三方提供应用可编程接口(application programmable interface,api)以使用他们的设备。系统500还可以包括应用框架512和扩展业务514。应用框架512和扩展业务514类似于系统200中的应用框架204和扩展业务206。另外,硬件抽象层516类似于硬件抽象层136,设备管理器518类似于设备管理器138,设备api 520类似于本地api 140、144、148和152,外部api 522类似于外部api 142、146、150和154。
65.在一些实现方式中,本地设备524对应于一个或多个内置设备。例如,本地设备524可以包括设备,例如摄像头、显示器或扬声器。虚拟设备526可以包括连接到智能电视的一个或多个设备,例如外部摄像头、外部扬声器、外部电视、无人机、智能锁或麦克风。
66.如系统500中所示,虚拟设备526可以通过应用/设备sdk 508连接到各种外部设备510。例如,各种外部设备510可以包括外部摄像头534、外部扬声器536、外部电视538、无人机540和外部麦克风542。虚拟设备526也可以根据应用/设备sdk 508来实现。例如,虚拟设备526内的虚拟摄像头hal可以根据无人机540的sdk来实现,使得系统500中的智能电视上的现有应用可以通过飞行的无人机540拍摄视频或图片。因此,与外部设备的连接和交换的数据由应用/设备sdk 508控制和维护。虚拟设备526可以调用应用/设备sdk 508的api以实现虚拟摄像头hal要求。
67.图6是用于使用智能设备实现与外部摄像头对应的虚拟设备的系统的一个示例的框图。图6示出的组件与系统500中所示的组件类似。图5和图6之间的重复组件在这部分不再赘述。下面对新组件进行描述。
68.图6示出了智能设备602连接到扩展业务514和特定客户端设备的硬件抽象层516内的虚拟设备526。智能设备602包括业务层604、硬件抽象层(hardware abstraction layer,hal)/驱动层606和物理层608。业务层604、hal/驱动层606和物理层608分别类似于业务层106、驱动层108和物理层110。业务层604包括智能插件610。hal/驱动层606包括用于每个组件的在智能设备602外部的驱动,例如摄像头驱动612。摄像头驱动612可以实现为对应客户端设备中的硬件抽象层516上的虚拟设备526。物理层608包括智能设备602中的物理设备和虚拟设备之间的比特和字节级通信。例如,物理层608可以包括内置摄像头609。
69.智能设备602可以是强大的智能设备,能够将基本设备功能以及附加业务导出到扩展业务514和虚拟设备526中。例如,智能设备602的附加业务作为本地业务扩展到扩展业
务514中。例如,智能手机602的摄像头驱动612可以导出到智能电视中作为虚拟摄像头设备526。另外,智能手机602的人脸识别算法可以导出到智能电视中,使得智能电视包括能够执行人脸识别的“智能摄像头”。此外,由于虚拟摄像头实现了摄像头hal api,因此智能电视的其它智能算法(例如人脸识别)可以调用虚拟摄像头功能,例如变焦、平移、倾斜和录制,仅举几例。
70.在一些实现方式中,图6示出了与智能设备相关联的现有功能调用和新功能调用。例如,应用506可以通过扩展api 522对虚拟设备526进行新功能调用618。另外,应用504可以通过设备api 520对虚拟设备526进行现有功能调用620。虚拟设备526可以接收并执行现有功能调用620和新功能调用618。
71.图7是用于选择要在智能设备中使用的设备的过程700的一个示例的流程图。过程700由智能设备中的设备管理器实现,例如由系统100中的设备管理器138实现。具体地,设备管理器根据在过程700中启动的设备类型和应用类型调用“choosedevice”功能。例如,如果用户在智能设备上打开视频聊天,则为每种类型的设备(例如显示器、摄像头、扬声器和麦克风)调用“choosedevice”功能。例如,“choosedevice”功能会确定是否为智能设备中的显示器、摄像头、扬声器和麦克风都添加外部组件和内部组件。
72.在一些实现方式中,设备管理器在智能设备上执行各种功能。具体地,设备管理器管理一列内置设备和虚拟设备。在启动智能设备时,设备管理器会扫描智能设备上的每个内置设备,并检索虚拟设备(i)注册和(ii)注销虚拟摄像头硬件抽象层(hardware abstraction layer,hal)的方法。设备管理器还可以管理用户使用内置设备和虚拟设备的偏好。
73.用户使用内置设备和虚拟设备的偏好取决于基于规则的偏好系统。例如,用户可以根据上下文选择待用于其智能设备中的特定应用的设备。上下文可以包括当前正在客户端设备上执行的应用、用户的位置、用户的客户端设备的位置以及当前时间。用户的位置可以不同于用户的客户端设备的位置。例如,用户可以在其车中,而用户的客户端设备停在其住处。
74.设备管理器还可以使用自学习来改善智能设备的整体用户体验。为此,设备管理器可以根据用户以前对内置设备和外部设备的选择、设备能力和智能设备的位置,学习和建立针对不同上下文的规则。通过建立针对设备能力的规则,设备管理器可以向用户提供关于在当前情况下要使用哪种设备的推荐。设备管理器会根据设备的类型列出每个当前可用设备。例如,设备管理器列出扬声器列表、摄像头列表和心跳监测器列表。另外,设备管理器将推荐设备放在列表的前面。然后,用户可以从设备管理器提供的列表中选择其中一个设备来使用,而设备管理器可以接收用户的选择。然后,设备管理器可以更新自学习算法,以更好地预测哪些设备应该根据上下文推荐给用户。在一些示例中,如果用户选择其中一个推荐设备,则设备管理器将该推荐设备标记为最高优先级的设备,以便后续推荐。在一些情况下,生成的推荐可以用作这种情况下的初始或默认设置,而无需进一步输入,但可以在初始使用/选择之后更改。
75.在一些实现方式中,设备管理器确定一个设备是否可供所述智能设备使用(702)。具体地,设备管理器扫描智能设备以确定用户可以用于特定应用的内置设备和外部设备的数量。例如,设备管理器可以确定智能设备中包括的内置摄像头的数量和位于智能设备附
近的外部摄像头的数量。在本示例中,设备管理器可以确定智能设备包括一个内置摄像头且在一个外部摄像头附近。
76.如果设备管理器确定只有一个内置设备存在且没有外部设备,则过程进行到720,其中,设备管理器选择一个内置设备在智能设备上使用。之后,过程结束。
77.可选地,如果设备管理器确定多个设备位于智能设备附近,例如一个内置摄像头、一个外部摄像头,则过程700进行到704。
78.设备管理器确定智能设备的上下文信息(704)。例如,上下文信息可以包括在智能设备上执行的应用的数量。例如,设备管理器可以确定消息应用、视频聊天应用和多人游戏应用当前都在智能设备上执行。其它上下文信息可以包括与智能设备相关联的用户的位置。与智能设备相关联的用户的位置可以对应于智能设备的位置。可选地,与智能设备相关联的用户的位置可以对应于与智能设备的位置不同的位置。例如,用户可以在其车中,而其智能设备留在其住处。又如,用户可以具有智能手表和智能手机。智能手表可以连接到用户,可以指示用户正在工作,而智能手机放在用户的住处。例如,智能设备(例如智能手表、智能手机或智能电视)提供的gps坐标可以确定位置。
79.设备管理器根据上下文信息生成设备推荐(706)。具体地,学习算法根据上下文信息提供要使用的设备推荐。如上所述,上下文信息可以包括当前正在智能设备上执行的应用、用户的当前位置、智能设备的当前位置(与用户的当前位置不同)以及当前时间。学习算法提供的设备推荐可以包括位于智能设备附近的一个设备,用户可以将这个设备用于当前正在执行的应用。例如,学习算法可以将智能手表作为推荐设备提供给智能设备使用,因为智能设备当前具有正在执行的健康应用。
80.设备管理器确定是要求用户确认这是否是推荐设备还是选择另一推荐设备(708)。具体地,设备管理器确定用户是否已经设置了在此上下文中使用这个设备的规则。如果设备管理器确定用户已经设置了要在此特定上下文中使用的设备,则设备管理器不需要与用户确认。可选地,如果智能设备附近存在新设备或存在新上下文,例如新应用、新位置、新时隙或上下文信息不完整,则设备管理器需要提示用户选择。
81.如果设备管理器不需要与用户确认推荐设备,则在718中,设备管理器将推荐设备设置为智能设备要使用的设备。
82.如果设备管理器确实需要向用户确认推荐设备,则设备管理器将推荐设备设置为当前可用设备列表中的第一设备,并在710中向客户端设备的显示器提供该列表。设备管理器要求用户选择要使用的设备。
83.设备管理器确定用户是否从显示器选择了特定设备(712)。如果用户没有选择其中一个推荐设备,则在720中,设备管理器将推荐设备设置为要在智能设备中使用的设备。如果用户确实选择了其中一个推荐设备,则在714中,设备管理器将选定的推荐设备添加到自学习算法中。自学习算法会根据当前上下文信息更新新选中的推荐设备并确定其优先级。
84.在716中,设备管理器确定设备对象。在一些示例中,设备管理器确定与特定设备对应的设备注册信息。具体地,716类似于718。
85.然后,在720中,设备管理器向智能设备返回新选中设备的数据,以访问具有当前正在执行的应用的新选中设备。
86.图8是在智能设备中使用的切换设备过程800的一个示例的流程图。过程800由智能设备中的设备管理器(例如设备管理器138)实现。设备管理器可以根据api确定智能设备中的应用使用的内置设备和外部设备。
87.设备管理器监控智能设备的环境变化(802)。具体地,设备管理器确定智能设备是否改变了环境。环境的变化可以包括,例如位置变化、上下文变化或者新设备是否已经添加到智能设备附近的环境中或从中移除。在其它情况下,可以检测到和/或确定其它环境变化。设备管理器还确定是否发生了上下文变化、新设备是否已经注册或设备是否已经注销。如果设备管理器确定发生了环境变化,则设备管理器前进到804。
88.设备管理器执行choosedevice功能,并将输出设置为选定设备(804)。具体地,过程700描述了在执行choosedevice功能时发生的流程和过程。
89.设备管理器确定“选定设备”是否等于“当前设备”(806)。如果这两个设备相等,则过程返回到802,其中,设备管理器监控环境变化。如果这两个设备不相等,则过程进行到808以关闭当前设备。关闭当前设备表示设备管理器断开执行到对应设备api的应用并关闭特定设备。然后,设备管理器将选定设备设置为当前设备(810)。如果新选中设备是外部设备,则设备管理器会传输打开外部设备的请求,例如为外部摄像头建立rtsp和rtp/rtcp连接(810)。
90.图9是用于将一个或多个外部设备的api集成到智能设备中的过程900的一个示例的流程图。过程900包括:确定在终端用户设备附近的至少一个外部设备;确定所述终端用户设备的上下文信息;根据所述终端用户设备的所述上下文信息,与所述至少一个外部设备建立连接;设备管理器识别与所述至少一个外部设备对应的功能集;所述设备管理器识别与所述至少一个外部设备相关联的虚拟设备来使用;向所述终端用户设备提供所述识别的虚拟设备,其中,所述终端用户设备使用所述虚拟设备来执行所述至少一个外部设备的所述功能集。过程900可以由系统100中的设备管理器138执行。
91.所述设备管理器确定在终端用户设备附近的至少一个外部设备(902)。具体地,所述设备管理器可以确定扬声器系统、智能手表、智能电视、麦克风、心率监测器或车机(仅举几例)位于所述终端用户设备附近。所述设备管理器可以使用一个或多个协议(例如如alljoyn、nearby或其它通信协议)来确定哪些设备在所述终端用户设备附近。
92.所述设备管理器确定所述终端用户设备的上下文信息(904)。所述上下文信息可以包括所述终端用户设备上的一个或多个应用、当前正在所述终端用户设备上执行的一个或多个应用、用户的位置、所述终端用户设备的位置以及当前时间。所述上下文信息还可以包括描述所述终端用户设备的特征的数据。所述特征可以包括所述终端用户设备的品牌和型号、所述终端用户设备的软硬件规格、当前正在所述终端用户设备上执行的操作系统以及位于所述终端用户设备上的当前api集。
93.根据所述终端用户设备的所述上下文信息,所述设备管理器与所述至少一个外部设备建立连接(906)。所述设备管理器根据所述确定的上下文信息使用基于规则的偏好系统来确定是否连接到所述至少一个外部设备。具体地,所述设备管理器使用自学习能力,其中,不同的规则根据所述上下文信息建立。如果检测到的设备以前已经检测到,并且所述用户已经选择所述设备要在此上下文中使用,则最新设备具有待推荐的最高优先级。可选地,如果所述用户在此上下文中没有选择此推荐,则最强大的设备具有待推荐的最高优先级。
所述用户可以选择所述推荐设备来连接,或者所述设备管理器可以自动连接到所述推荐设备。然后,所述设备管理器通过通信协议与所述至少一个推荐的外部设备建立连接,例如rtsp建立连接和rtp/rtcp媒体流连接。例如,所述设备管理器推荐外部摄像头与所述用户的智能设备连接。
94.在一些实现方式中,所述设备管理器可以确定所述终端用户设备可以从使用所述至少一个外部设备提供的功能中受益。具体地,如果所述设备管理器确定所述终端用户设备上的应用需要使用智能用户设备中当前没有的特定功能,则所述设备管理器可以确定此功能是否是所述外部设备提供的任一功能。所述设备管理器可以与所述外部设备建立连接,以便为应用识别虚拟设备来使用所述外部设备的功能。例如,所述智能设备上的应用可能会请求摄像头的平移、倾斜和变焦功能。如果内置摄像头不包括此功能,则所述设备管理器可以确定外部摄像头是否包括此附加功能。如果所述外部摄像头确实包括此功能,则所述设备管理器可以为所述外部摄像头识别虚拟设备。因此,当所述应用向所述设备管理器传输变焦放大或倾斜所述摄像头的请求时,所述设备管理器可以借助所述外部摄像头提供的功能在录制视频时变焦放大或倾斜所述外部摄像头。
95.所述设备管理器确定与所述至少一个外部设备对应的功能集(908)。具体地,所述设备管理器确定所述外部设备具有可以在所述智能设备中使用的各种功能。所述设备管理器可以向所述外部设备提供控制信息。所述控制信息可以指示所述外部设备提供其与所述外部设备相关的功能定义和特征。所述外部设备可以返回包括所述外部设备的功能、所述功能的业务、所述功能所需的协议、与所述功能对应的api和媒体数据质量的设备规格。在所述外部设备是外部摄像头的情况下,所述设备管理器可以确定所述外部摄像头包括录制、暂停、播放、快进、快退和跳过视频画面的功能。另外,所述外部摄像头还包括使用摄像头镜头平移、倾斜、放大和缩小的功能。所述协议可以包括rtp/rtsp,所述媒体数据质量可以包括720p、1080p或2160p,仅举几例。
96.所述设备管理器识别与所述至少一个外部设备相关联的虚拟设备来使用(910)。具体地,所述设备管理器识别与所述至少一个外部设备相关联的所述虚拟设备,其中,所述智能设备可以使用所述所至少一个外部设备与其它外部设备进行通信。例如,所述设备管理器通过从所述外部摄像头检索所述虚拟设备识别与所述外部摄像头对应的所述虚拟设备。通过这种方式,所述智能设备可以使用所述外部摄像头及其功能,如同所述外部摄像头在物理上内置到所述智能设备中。所述识别的虚拟设备使得所述智能设备上的应用可以使用所述外部摄像头的任何功能,例如录制、暂停、播放、快进、快退和跳过视频画面。在一些实现方式中,所述设备管理器可以从数据库中检索与所述识别定的虚拟设备对应的外部api。与所述识别的虚拟设备对应的所述外部api的功能可以开放给所述智能设备及其应用程序以及其它外部设备。所述数据库包括通过先前在所述智能设备与一个或多个外部设备之间建立的连接检索到的外部api。所述数据库还可以包括通过先前为了加快检索而建立的连接检索到的其它虚拟设备。
97.所述设备管理器向所述终端用户设备提供所述识别的虚拟设备,其中,所述终端用户设备使用所述虚拟设备来执行所述至少一个外部设备的所述功能集(912)。所述设备管理器可以包括与所述至少一个外部设备(例如外部摄像头)相关联的所述虚拟设备以及与所述内置设备对应的其它虚拟设备和api。所述智能设备中的应用可以与所述虚拟设备
交互并调用所述虚拟设备,以使用所述外部摄像头的功能。例如,所述智能设备上的视频消息应用可以使用所述智能设备中的所述内置摄像头或位于所述智能设备附近的所述外部摄像头。
98.在一些示例中,用户可以选择使用摄像头用于视频消息应用,例如内置摄像头或外部摄像头。在一些示例中,所述设备管理器会根据所述确定的智能设备的上下文自动提供要由所述视频消息应用使用的外部摄像头。
99.在一些实现方式中,所述设备管理器可以根据与所述终端用户设备相关联的偏好将外部设备的推荐提供给与所述终端用户设备相关联的终端用户来连接。具体地,所述偏好可以包括先前从先前选择的外部设备中选择功能、当前正在所述终端用户设备上执行的应用、与所述终端用户设备对应的能力、所述终端用户设备的位置以及所述终端用户设备与当前正在所述终端用户设备上执行的应用相结合的使用时间。例如,如果所述用户先前选择了所述外部摄像头,并且在先前使用所述外部摄像头的功能时选择了放大功能十次,则所述设备管理器提供推荐外部设备连接到所述外部摄像头。另外,如果所述智能设备当前正在执行健康应用以检索健康信息,例如用户的心率,则所述设备管理器可以提供推荐外部设备连接到智能手表,所述智能手表当前连接上并检测所述用户。
100.所述设备管理器还可以根据预测可能性提供外部设备推荐来连接。具体地,所述设备管理器可以根据与所述用户和所述终端用户设备相关联的上下文信息和偏好生成用户可能连接到的外部设备推荐的预测可能性。所述生成的预测可能性可以包括指示所述终端用户设备可能连接到一个或多个外部设备的统计可能性和百分比。根据所述预测可能性,所述设备管理器可以对所述外部设备进行排名。所述设备管理器可以按升序或降序对所述外部设备进行排名。然后,所述设备管理器可以向所述终端用户设备提供排名后的外部设备推荐,以供用户选择。在一些示例中,所述用户可能不知道所述外部设备推荐进行了排名。在一些示例中,所述用户知道所述外部设备推荐的排名,因为所述排名在显示器上显示。
101.在本说明书描述的本发明实施例和所有功能操作可以在数字电子电路、计算机软件、固件或硬件中实现,包括在本说明书中公开的结构及其等同结构中实现,或者在它们中的一个或多个的组合中实现。本发明实施例可以实现为一个或多个计算机程序产品,即计算机程序指令的一个或多个模块,所述计算机程序指令被编码在计算机存储介质中,以由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是非瞬时性计算机可读存储介质、机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质组成,或者它们中的一个或多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。所述装置除了包括硬件,还可以包括为所述计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光学或电磁信号,生成所述信号用于编码信息以传输到合适的接收器装置。
102.计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释的语言,并且可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其它单元。计算机程序不一定对应于文件系统中
的文件。程序可以存储在文件的一部分中,其中包含其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于该程序的单个文件中,或者存储在多个协调文件(例如存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台计算机或多台计算机上执行,所述多台计算机位于同一站点或分布在多个站点并通过通信网络互连。
103.本说明书中描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作和生成输出来执行功能。所述过程和逻辑流也可以由准用逻辑电路(例如现场可编程门阵列(field programmable gate array,fpga)或专用集成电路(application specific integrated circuit,asic))执行,装置也可以实现为专用逻辑电路。
104.例如,适于执行计算机程序的处理器包括通用微处理器和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。一般而言,处理器从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的必需元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还包括一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘),或可操作地耦合以从一个或多个用于存储数据的大容量存储设备接收数据和/或向其发送数据。然而,计算机不必具有此类设备。此外,计算机可以嵌入在其它设备中,例如平板电脑、移动电话、个人数字助理(personal digital assistant,pda)、移动音频播放器、全球定位系统(global positioning system,gps)接收器,仅举几例。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cd rom和dvd-rom磁盘。处理器和存储器可以由专用逻辑电路进行补充或并入专用逻辑电路。
105.为了提供与用户的交互,本发明实施例可以在计算机上实现,所述计算机具有向所述用户显示信息的显示设备(例如阴极射线管(cathode ray tube,crt)或液晶显示器(liquid crystal display,lcd)监视器)以及所述用户可以向所述计算机输入的键盘和指向设备(例如鼠标或轨迹球)。其它类型的设备也可以用于与用户的交互。例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈,而且用户的输入可以以任何形式接收,包括声音、语音或触觉输入。
106.本发明实施例可以在计算系统中实现,所述计算系统包括后端组件(例如作为数据服务器),或者包括中间件组件(例如应用服务器),或者包括前端组件,例如,客户端计算机具有用户可以通过所述客户端计算机与本发明中的实现方式交互的图像用户界面或网页浏览器,或一个或多个此类后端、中间件或前端组件的任意组合。所述系统的组件可以通过数字数据通信的任何形式或介质(例如通信网络)互连。通信网络的示例包括局域网(local area network,lan)和广域网(wide area network,wan),例如互联网。
107.所述计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是通过在各自计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生的。
108.虽然上文详细描述了几种实现方式,但也可以进行其它修改。例如,虽然客户端应用被描述为访问一个或多个代表,但在其它实现方式中,所述一个或多个代表可以由一个
或多个处理器实现的其它应用使用,例如在一个或多个服务器上执行的应用。另外,图中描述的逻辑流不需要按照所示的特定顺序或次序来获得理想的结果。可以在所描述的流程中提供其它操作,或从所描述的流程中取消操作,并且可以将其它组件添加到所描述的系统中或从所述描述的系统中移除。因此,其它实现方式在以下权利要求书的范围之内。
109.虽然本说明书包括许多具体的实现细节,但这些不应被解释为对任何发明的范围或所要求保护的范围的限制,而应理解为对特定发明的特定实施例可能特定的特征的描述。在单独实施例的上下文中,本说明书中所描述的某些特征也可以在单个实施例中组合实现。反之,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实现或在任何合适的子组合中实现。此外,尽管上文可以将特征描述为以某些组合来行动,甚至最初要求保护,但是在某些情况下,可以从该组合中去除所要求保护的组合中的一个或多个特征,且所要求保护的组合可以针对子组合或子组合的变体。
110.同样,虽然附图以特定顺序描述操作,但这不应理解为要求这些操作按照所示的特定顺序或按顺序执行,或者要求执行所示的所有操作,以达到期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应理解为所有实施例都要求这种分离。应理解,所描述的程序组件和系统通常可以一起集成到单个软件产品中或打包到多个软件产品中。
111.已经描述了本主题的特定实施例。其它实施例在所附权利要求书的范围内。例如,可以用不同的顺序执行权利要求书中所述的操作,并且仍然达到理想的结果。例如,附图中描绘的过程不一定要求按所示的特定顺序或按顺序执行才能达到理想的结果。在某些实现方式中,多任务处理和并行处理可能是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1