[0022] 图1是通过监控程序模块实现用户姿态检测的移动终端
[0023] 图2是姿态传感模块使用摄像头方案
[0024] 图3是姿态传感模块使用摄像头和倾角传感器方案
[0025] 图4是监控程序模块调用姿态处理单元方案示意图
[0026] 图5是摄像头在终端设备面板上的安置方案示意图
[0027] 图6是本机姿态传感器在终端设备上的安置方案示意图
[0028] 图7是通过监控程序模块4实现用户姿态检测的方法流程图
[0029] 图8是监控程序模块4扫描状态数据库8获得应用程序指令、进行姿态处理的流程图[0030] 图9是监控程序模块4扫描状态数据库8获得应用程序状态、进行姿态处理的流程图[0031] 下面结合附图,对具体实施方式说明如下。
[0032] 本发明通过应用程序实现用户姿态检测的移动终端如图1所示,包含姿态传感模块1、用户配置输入模块2、告警信号输出模块3、应用程序模块71,72,…,7N、状态数据库8、监控程序模块4。
[0033] 姿态传感模块1产生姿态数据D;用户配置输入模块2识别用户操作,产生用户指令I;告警信号输出模块3发出用户感官可识别的信号。
[0034] 本发明所述应用程序模块71,72,…,7N,是加载和运行应用程序的装置,特别是加载和运行一些用户可能长时间连续使用的应用程序,如视频播放器、网页浏览器、阅读软件等。
[0035] 所述状态数据库8中存储工作的状态数据。所述状态数据8包含“应用程序注册表”、“应用程序状态表”、“姿态处理标志位”。
[0036] 应用程序状态表,包含终端中应用程序模块工作状态的信息,例如该应用程序模块是否运行、是否占据显示屏等。
[0037] 应用程序注册表,包含有检测必要的应用程序模块名称或系统分配的某种标识符。应用程序模块71,72,…,7N可以把自己的名称或标识符添加到状态数据库8中,表示注册了姿态处理功能。
[0038] 姿态处理标志位,是指姿态处理模块40是否运行的标志。
[0039] 所述监控程序模块4中包含输入输出处理单元41,与所述姿态传感模块1、用户配置输入模块2、告警信号输出模块3相连接,接收所述姿态数据D、用户指令I,产生输出数据O。
[0040] 所述监控程序模块4中包含姿态处理单元40,根据姿态数据D识别用户面部的位置,产生姿态参数G,将所述姿态参数G与对应的门限值T进行比较,在用户姿态不正确时产生报警数据A和/或姿态矫正数据R。
[0041] 所述监控程序模块4中包含状态扫描单元42,周期性地扫描状态数据库8,了解所述应用程序模块71,72,…,7N的工作状态,在所述至少一个应用程序模块(例如71)占用显示屏时,启动姿态处理单元40。
[0042] 如图2所示,是本发明通过监控程序实现用户姿态检测的移动终端的一个实施例,姿态传感模块1包含摄像头及其驱动装置11,由一只或多只前置摄像头产生用户面部的图像信号,生成用户姿态数据D1。监控程序模块4中的输入输出处理单元41控制姿态传感模块1,接收用户姿态数据D1,姿态处理单元40检测用户面部与显示屏的相对位置,产生相对姿态参数G1,将所述姿态参数G1与对应的门限值T1进行比较,用户姿态不正确时产生报警数据A和/或姿态矫正数据R。
[0043] 如图3所示,是本发明通过监控程序实现用户姿态检测的移动终端的另一个实施例,姿态传感模块1包含摄像头及其驱动装置11,由一只或多只前置摄像头产生图像信号,生成用户姿态数据D1。姿态传感模块1中还包含能检测显示屏所在平面倾角的本机姿态传感器(如重力传感器,又称为倾角传感器)及其驱动装置12,产生角度传感信号,生成本机姿态数据D2。监控程序模块4中的输入输出处理单元41控制姿态传感模块1,接收姿态数据D1、D2。姿态处理单元40根据用户姿态数据D1检测用户面部与显示屏的相对位置,产生相对姿态参数G1;姿态处理单元40根据本机姿态数据D2确定本机显示屏所在平面的倾角α。姿态处理单元40根据相对姿态参数G1和本机显示屏所在平面的倾角α,产生绝对姿态参数G2。
[0044] 姿态处理单元40将所述姿态参数G1、G2与对应的门限值T1、T2进行比较;用户姿态不正确时产生报警数据A和/或姿态矫正数据R。
[0045] 图4作为通过监控程序实现姿态检测的移动终端的另一个实施例,是监控程序模块4调用姿态处理单元40的方案。
[0046] 此时,移动终端5中存在一个处理单元库9,所述处理单元库9中包含姿态处理单元40、及其他处理单元(例如91)。所述姿态处理单元40根据姿态数据D检测用户的姿态,产生姿态参数G,将所述姿态参数G与对应的门限值T进行比较,在用户姿态不正确时产生报警数据A和/或姿态矫正数据R。处理单元库9中还包含一个应用程序编程接口(API)90,使所述姿态处理单元40和其他处理单元(例如91)能够接收启动信号和数据,并输出结果。
[0047] 监控程序模块4中包含输入输出处理单元41、状态扫描单元42、姿态处理调用单元43。所述输入输出处理单元41与所述姿态传感模块1、用户配置输入模块2、告警信号输出模块3相连接,接收所述姿态数据D、用户指令I,产生输出数据O。所述状态扫描单元42,周期性地扫描状态数据库8,了解所述应用程序模块71,72,…,7N的工作状态,在所述应用程序模块中至少一个(例如71)占用显示屏时,启动姿态处理调用单元43。所述姿态处理调用单元
43,能够查询姿态处理单元40在处理单元库9中的位置、发出启动信号、并传递姿态检测和比较所需要的数据(包括姿态数据D1、D2和门限值T1、T2),并返回报警数据A和姿态矫正数据R。
[0048] 与图4所示实施例相对应,例如采用在Android操作系统中增设库函数的方案。在Android系统运行装置中,将实现姿态检测、姿态比较、姿态提醒功能的姿态处理单元40作为一个本地库(Library)运行装置的一部分,以库函数运行装置的方式存在,并在应用框架(Application Framework)中提供一个API,该API可以向其它应用程序模块提供当前用户的姿态是否正确的判断。监控程序模块4通过调用库函数运行装置完成本发明实现的功能。
[0049] 再例如在iOS操作系统中增设库函数。在iOS系统运行装置中,以库函数运行装置的方式实现姿态处理单元40,包含姿态检测、姿态比较、姿态提醒功能,作为媒体层或核心服务层的一部分,并在CocoaTouch中提供一个API,该API可以向监控程序模块4提供当前用户的姿态是否正确的判断。监控程序模块4通过调用库函数运行装置完成本发明实现的功能。
[0050] 还有在第三方开发工具中库函数的方案。以库函数运行装置的方式实现姿态处理单元40,包含姿态检测、姿态比较、姿态提醒功能,这样用户开发的装置可以直接调用与该函数库运行装置有关的API。本发明所述监控程序模块4通过调用库函数运行装置完成本发明实现的功能。
[0051] 在上述各方案实施例中所提到的“姿态参数”,可以用多种方法定义,以下举例说明定义和分析的方法。本发明的装置和方法不限定姿态参数的具体方式。
[0052] 例如一种姿态参数是:用户面部参考点与终端显示屏参考点之间的水平距离L1、垂直距离L2,用户面部中间线和显示屏之间的夹角β,用户面部中间线和水平面之间的夹角γ。其中L1、L2、β反映了用户面部与终端显示屏之间的相对位置关系,因此称为“相对姿态参数G1”,其中γ反映了用户面部与终端显示屏无关的位置参数,称为“绝对姿态参数G2”。即:G1=[L1,L2,β],G2=γ=α+β。参数G1可以运用摄像头及其驱动装置11输出的用户姿态数据D1使用单目机器视觉、双目机器视觉或多目机器视觉的方法得到,G2结合G1和本机显示屏所在平面的倾角α得到。
[0053] 再例如一种姿态参数是:在摄像头图像数据用户面部轮廓线中占据的范围Af、及面部中间线偏离图像中间线的程度d,用户面部中间线和水平面之间的夹角γ,也可以构建相对姿态参数,即G1=[Af,d,β]。参数G1可以运用摄像头及其驱动装置11输出的用户姿态数据D1使用图像数据分析的方法得到。绝对姿态参数仍可采用G2=γ=α+β。
[0054] 对应的门限值T是指G1、G2中标定正确姿态的门限值,例如L1、L2、Af、α、β、γ的最大值或最小值。按照前述姿态参数的实施例,相对姿态参数的门限值T1=[Min(L1),Max(L1),Min(L2),Max(L2),Min(β),Max(β)],或者T1=[Min(Af),Max(Af),Max(d),Min(β),Max(β)];绝对姿态参数的门限值T2=[Min(α),Max(α),Min(γ),Max(γ)]。所谓用户姿态不正确,是指用户的姿态参数超出门限值的范围。
[0055] 图5和图6表示摄像头11和本机姿态传感器12在移动终端的安置方案。其中,图5表示摄像头在终端设备面板上的位置和功能,一个移动式智能终端设备5使用时大致呈平板状,有一个或多个面向用户的摄像头11。还要至少包含一个面向用户的显示屏6,使用户在面向设备阅读或工作时面向摄像头11、处于摄像头的图像采集空间中。图6表示姿态传感器12在终端设备5上的位置和功能。该设备的硬件包含至少一个面向用户的显示屏6和一个能检测出显示屏所在平面倾角的传感器12。该传感器安装在终端设备中,与显示屏6具有固定的位置关系。通过该传感器输出的数据,可以得到终端设备的显示屏所在平面的倾角α,即终端设备的显示屏所在平面和水平面之间的夹角,作为本机姿态参数。
[0056] 通过监控程序模块4实现用户姿态检测的方法如图7所示,包含如下步骤:
[0057] 第101步、配置输入:监控程序模块4中输入输出处理单元41接受来自用户配置输入模块2的用户指令I;
[0058] 第102步、应用程序扫描:监控程序模块4中的状态扫描单元42,周期性地扫描状态数据库8,根据状态数据库8的信息启动姿态处理单元40。
[0059] 第103步、姿态检测:监控程序模块4中的输入输出处理单元41控制姿态传感模块1采集用户姿态,接收姿态数据D1、D2;姿态处理单元40对姿态数据D1、D2进行分析,得出用户相对姿态参数G1和/或绝对姿态参数G2;
[0060] 第104步、姿态比较:监控程序模块4中的姿态处理单元40将姿态参数G1、G2和对应的门限值T1、T2进行比较,姿态正确时转第2步,否则第5步;
[0061] 第105步、姿态提醒:监控程序模块4中的姿态处理单元40在用户姿态不正确的时候,生成报警数据A和/或姿态矫正数据R;监控程序模块4中输入输出处理单元41输出信号(O)触发告警信号输出模块3向客户发出用户感觉可识别的信号,包含报警信息和/或矫正建议,告警输出后,转第2步。
[0062] 在上述方法中,循环执行的方式从第4步、第5步回归到第2步时,可包含一个时延的步骤。
[0063] 以下各个实施例是在上述工作方法的基础上,对第2~4步在移动终端中的具体实现方式给出多种方案。
[0064] 图8是监控程序模块4扫描状态数据库8获得应用程序指令、进行姿态处理的流程图。姿态处理单元40实现姿态检测、姿态比较、姿态提醒的功能。监控程序模块4与应用程序模块71,72,…,7N并列运行,应用程序模块71,72,…,7N中任一个在占用显示屏、且有必要对用户进行姿态检测时(例如长期处于浏览状态时候),在状态数据库8中设置“姿态处理标志位”,用于启动姿态处理单元40,应用程序模块退出显示屏或其它不需要对姿态进行检测的情况发生时清除该标志位。
[0065] 图8(a)表示应用程序模块71,72,…,7N的工作过程的一个段落,步骤如下:
[0066] 第201步、任意一个应用程序模块(例如71)设置或清除应用数据库8中的“姿态处理标志位”;
[0067] 第202步、应用程序模块(例如71)运行应用程序主功能;
[0068] 图8(b)表示监控程序模块的工作过程,步骤如下:
[0069] 第203步、状态扫描单元42查询状态数据库8,确认姿态处理标志位是否被设置?如果是则进入第204步,启动姿态处理单元40,否则转第207步;
[0070] 第204步、姿态检测:监控程序模块4中的输入输出处理单元41控制姿态传感模块1采集用户姿态,接收姿态数据D1、D2;姿态处理单元40对姿态数据D1、D2进行分析,得出相对姿态参数G1和/或绝对姿态参数G2;
[0071] 第205步、姿态比较:姿态处理单元40将所述姿态参数G1、G2和门限值T1、T2进行比较,姿态正确时转第207步,否则进入第206步;
[0072] 第206步、姿态提醒:姿态处理单元40在所述姿态参数G1、G2超过门限值时T1、T2,生成报警数据A和/或姿态矫正数据R;输入输出处理单元41输出信号O触发告警信息输出模块3;
[0073] 第207步、等待,延时后转第203步。
[0074] 图9是监控程序模块4扫描状态数据库8获得应用程序状态、进行姿态处理的流程图。姿态处理单元40实现姿态检测、姿态比较、姿态提醒功能。应用程序模块71,72,…,7N在占据显示屏时,将应用程序模块的名称或标识符写入状态数据库8,形成应用程序状态表。监控程序模块4中的状态扫描单元42在运行中取得“应用程序注册表”,确定注册监控功能的应用程序模块;如果该占用显示屏的应用程序模块在名称或标识符在应用程序注册表中,则触发姿态处理单元。
[0075] 图9(a)表示应用程序模块71,72,…,7N的工作过程的一个段落,步骤如下:
[0076] 第301步、应用程序模块(例如71)在占用显示屏的时候,通过应用程序编程接口设置或清除应用数据库44中的“应用程序状态表”;
[0077] 第302步、应用程序模块(例如71)运行应用程序主功能;
[0078] 图9(b)表示监控程序模块的工作过程,步骤如下:
[0079] 第303步、状态扫描单元42查询状态数据库,确认正在使用显示屏的应用程序模块名称或标识符是否在“应用程序注册表”中?如果是则进入第304步,启动姿态处理单元40,否则转第307步;
[0080] 第304步、姿态检测:监控程序模块4中的输入输出处理单元41控制姿态传感模块1采集用户姿态,接收姿态数据D1、D2;姿态处理单元40对姿态数据D1、D2进行分析,得出相对姿态参数G1和/或绝对姿态参数G2;
[0081] 第305步、姿态比较:姿态处理单元40将所述姿态参数G1、G2和门限值T1、T2进行比较,姿态正确时转第307步,否则进入第306步;
[0082] 第306步、姿态提醒:姿态处理单元40在所述姿态参数G1、G2超过门限值时T1、T2,生成报警数据A和/或姿态矫正数据R;输入输出处理单元41输出信号O触发告警信息输出模块3;
[0083] 第307步、等待,延时后转第303步。
[0084] 针对上述各个实施例,具体说明用户功能设置方案。监控程序模块4中的输入输出处理单元41接收来自用户配置输入模块2的用户指令。指令数据至少包括以下指令中一种:1.应用程序选择指令,用户设置“应用程序注册表”。只有前台运行这些应用程序时该后台服务才进行姿态检测。某些应用程序模块也可以自己主动加入到这个列表中。通过设置让该功能在某些应用中不被启用。如前台应用程序是接听、拨打电话、听收音机或其它音频内容时,由于此时用户不会长时间关注显示屏,此时不必要开启本功能。2.门限指令,用户设置姿态参数门限值。通过设置门限值适应不同用户的需求。在没有用户指令时,上述设置也可以是在姿态处理单元40或姿态处理调用单元43中存在默认设置,通过用户配置输入模块
2进行手动设置或修改。
[0085] 针对上述各个实施例,具体说明告警输出方案。告警信号输出模块3,处理报警数据A和姿态矫正数据R。这些数据包含在监控程序模块4的输入输出处理单元41输出信号O中。报警数据是指姿态参数超出门限值时生成的,包含报警的方式、报警的强度、报警的时间长短等特征,这些数据是根据用户偏离正确姿态的程度和时间来确定的。姿态矫正数据是根据姿态参数和门限值之间的差,得到如何改变用户姿态以达到正确姿态的数据,包括距离、角度、及调整的方向等信息。报警输出模块输出的信号是用户感官可识别的信号,包含以下一种或多种类型:通过音频模块发出来的提示音、通过振动设备发出来的振动,通过显示屏给出的图形或文字提示。