[0029] 下面结合附图,对具体实施方式说明如下。
[0030] 本发明的装置如图1所示,通过操作系统实现用户姿态检测的移动终端5,包含姿态传感模块1、用户配置输入模块2、告警信号输出模块3、操作系统运行装置4、显示屏6、一个或多个应用程序模块71,72,…,7N。
[0031] 姿态传感模块产生传感信号S。用户配置输入模块2识别用户操作,将用户指令I传递至操作系统运行装置4和至少一个所述应用程序模块(例如71)。告警信号输出模块3发出用户感官可识别的信号。
[0032] 操作系统运行装置4中包含传感模块驱动单元41、输入模块驱动单元42、输出模块驱动单元43,传感模块驱动单元41控制姿态传感模块1工作、并将姿态传感模块1输出的姿态传感信号S转换为姿态数据D;输入模块驱动单元42控制用户配置输入模块工作,接收用户指令I;输出模块驱动单元43输出信号O,包含报警数据A和/或姿态矫正数据R,控制告警信号输出模块3工作。
[0033] 操作系统运行装置4中还包含姿态服务模块40,姿态服务模块40中包含姿态检测单元46,启动传感模块驱动单元41,读取传感模块驱动单元41输出的姿态数据D,识别用户面部的位置,产生姿态参数G。
[0034] 操作系统运行装置4中还包含应用数据库44,所述应用数据库44存储工作数据和默认设置数据。
[0035] 至少一个所述应用程序模块(例如71)中包含姿态比较单元47、姿态提醒单元48、输入输出处理单元70。姿态比较单元47将所述姿态参数G与对应的门限值T进行比较;所述姿态提醒单元48产生报警数据A和/或姿态矫正数据R。所述输入输出处理单元70,通过应用程序编程接口45读取应用数据库44中的数据、启动输入模块驱动单元42、启动输出模块驱动单元43。
[0036] 本发明所述操作系统运行装置,是加载和运行移动终端操作系统的装置,例如加载和运行Android、iOS、黑莓操作系统及其替代程序。本发明所述应用程序模块71,72,…,7N,是加载和运行应用程序的装置,特别是加载和运行一些用户可能长时间连续使用的应用程序,如视频播放器、网页浏览器、阅读软件等。本发明所述应用程序模块、操作系统运行模块等各组成部分能用CPU系统、可编程逻辑电路和存储器的组合来实现。
[0037] 作为本发明进一步优化的实施例,图1所示通过操作系统实现用户姿态检测的移动终端5,还包含以下部分:
[0038] 姿态服务模块40中还包含数据扫描单元49,所述数据扫描单元查询所述应用数据库44中的工作数据,按照所述工作数据的指示,在需要启动姿态检测过程时,触发姿态检测单元46。
[0039] 所述应用数据库44存储的工作数据,是指在本发明的装置工作中改变的数据,包括“应用程序状态表”、“姿态检测标志位”、“应用程序注册表”及所述姿态参数等。
[0040] 应用程序状态表,包含终端中应用程序模块工作状态的信息,例如该应用程序模块是否运行、是否占据显示屏等。
[0041] 姿态检测标志位,是指操作系统运行装置4中姿态服务模块40是否运行的标志。
[0042] 应用程序注册表,包含有检测必要的应用程序模块名称或系统分配的某种标识符。应用程序模块71,72,…,7N可以通过应用程序编程接口45把自己的名称或标识符添加到应用数据库44中。
[0043] 所述应用数据库44存储的默认设置数据,包含以下一种或多种:姿态检测标志位、应用程序注册表、门限值。这些数据也可以通过手动设置,其中姿态检测标志位和应用程序注册表还可能在工作中被重新设置。
[0044] 作为本发明进一步优化的实施例,图2~3所示方案中,传感信号S进一步包含图像信号S1和角度传感信号S2。姿态数据D进一步包含用户姿态数据D1和本机姿态数据D2。姿态参数G进一步包含相对姿态参数G1和绝对姿态参数G2。G1、G2对应的门限值分别为T1、T2。
[0045] 如图2所示,是本发明通过操作系统运行装置4实现用户姿态检测的移动终端的一个实施例,姿态传感模块1使用摄像头方案,包含一只或多只前置摄像头11,产生图像信号S1。传感模块驱动单元41中包含摄像头驱动单元411。姿态检测单元46读取摄像头驱动单元411输出的用户姿态数据D1,检测用户面部与显示屏6(图4~5)的相对位置,产生相对姿态参数G1。应用程序模块71中姿态比较单元47将所述姿态参数G1与对应的门限值T1进行比较。应用程序模块71中姿态提醒单元48产生报警数据A和/或姿态矫正数据R。
[0046] 如图3所示,是本发明通过操作系统运行装置4实现用户姿态检测的移动终端的另一个实施例,姿态传感模块1使用摄像头和本机姿态传感器相结合的方案。其中,姿态传感模块1包含一只或多只前置摄像头11,产生图像信号S1。姿态传感模块中还包含能检测显示屏所在平面倾角的本机姿态传感器12(如重力传感器,又称为倾角传感器),产生角度传感信号S2。传感模块驱动单元41中包含摄像头驱动单元411和本机姿态传感器(重力传感器、倾角传感器)的驱动单元412。姿态检测单元46读取摄像头驱动单元输出的用户姿态数据D1,检测用户面部与显示屏6(图4~5)的相对位置,产生相对姿态参数G1。姿态检测单元46读取本机姿态传感器驱动单元412输出本机姿态数据D2,确定本机显示屏6所在平面的倾角α。姿态检测单元46根据相对姿态参数G1和本机显示屏6所在平面的倾角α,产生绝对姿态参数G2。应用程序模块71中姿态比较单元47将所述姿态参数G1、G2与对应的门限值T1、T2进行比较;应用程序模块71中姿态提醒单元48产生报警数据A和/或姿态矫正数据R。
[0047] 在上述各方案中所提到的“姿态参数”,可以用多种方法定义,以下举例说明定义和分析的方法。本发明的装置和方法不限定姿态参数的具体方式。
[0048] 例如一种姿态参数是:用户面部参考点与终端显示屏参考点之间的水平距离L1、垂直距离L2,用户面部中间线和显示屏之间的夹角β,用户面部中间线和水平面之间的夹角γ。其中L1、L2、β反映了用户面部与终端显示屏之间的相对位置关系,因此称为“相对姿态参数(G1)”,其中γ反映了用户面部与终端显示屏无关的位置参数,称为“绝对姿态参数(G2)”。参数G1可以运用摄像头驱动单元输出的用户姿态数据D1使用单目机器视觉、双目机器视觉或多目机器视觉的方法得到,G2结合G1和本机显示屏所在平面的倾角α得到。即:G1=[L1,L2,β],G2=γ=α+β。
[0049] 再例如一种姿态参数是:在摄像头图像数据用户面部轮廓线中占据的范围Af、及面部中间线偏离图像中间线的程度d,用户面部中间线和水平面之间的夹角γ,也可以构建相对姿态参数,即G1=[Af,d,β]。参数G1可以运用摄像头驱动单元输出的用户姿态数据D1使用图像数据分析的方法得到。绝对姿态参数仍可采用G2=γ=α+β。
[0050] 对应的门限值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(γ)]。所谓用户姿态不正确,是指用户的姿态参数超出门限值的范围。
[0051] 图4和图5表示摄像头和本机姿态传感器在移动终端的安置方案。其中,图4表示摄像头11在终端设备5的面板上的位置和功能,一个移动式智能终端5设备使用时大致呈平板状,有一个或多个面向用户的摄像头11。还要至少包含一个面向用户的显示屏6,使用户在面向设备阅读或工作时面向摄像头11、处于摄像头11的图像采集空间中。图5表示姿态传感器12在终端设备5上的位置和功能。该设备的硬件包含至少一个面向用户的显示屏6和一个能检测出显示屏所在平面倾角的传感器12。该传感器12安装在终端设备中,与显示屏6具有固定的位置关系。通过该传感器输出的数据,可以得到终端设备的显示屏6所在平面的倾角(α),即终端设备的显示屏所在平面和水平面之间的夹角,作为本机姿态参数。
[0052] 图6所示的实施例中,应用程序模块71直接读取应用数据库44中的姿态参数。操作系统运行装置4中的姿态服务模块40仅包含姿态检测单元46;应用程序模块71中包含姿态比较单元47、姿态提醒单元48、输入输出处理单元70。操作系统运行装置4中姿态服务模块40自动运行并将姿态参数保存在应用数据库44,形成姿态参数库。应用程序模块71中输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45周期性地读取这些姿态参数。
[0053] 图6(a)表示操作系统运行装置中的工作步骤:
[0054] 第501步、姿态检测:姿态检测单元46启动传感模块驱动单元41,控制姿态传感模块1采集传感信号S1、S2,并转换为姿态数据D1、D2;姿态检测单元46读取传感模块驱动单元输出的姿态数据D1、D2;姿态检测单元46对姿态数据进行分析,得出相对姿态参数G1和/或绝对姿态参数G2;
[0055] 第502步、数据存储:姿态检测单元46产生的姿态参数被保存在应用数据库44中。
[0056] 第503步、等待,延时后转第501步。
[0057] 图6(b)表示应用程序模块中的工作步骤:
[0058] 第504步、应用程序模块71执行主程序的功能
[0059] 第505步、数据读取:应用程序模块71中输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45读取应用数据库44中的姿态参数和门限值数据;
[0060] 第506步、姿态比较:应用程序模块71中的姿态比较单元47将所述姿态参数G1、G2和门限值T1、T2进行比较,姿态正常时转第504步,否则转第507步;
[0061] 第507步、姿态提醒:应用程序模块71中的姿态提醒单元48在所述姿态参数超过门限值时,生成报警数据A和/或姿态矫正数据R;输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45,启动输出模块驱动单元43,控制告警信号输出模块3向客户发出用户感觉可识别的信号,包含报警信息和/或矫正建议,告警输出后,转第504步。
[0062] 图7所示的实施例中,应用程序模块71使用姿态检测标志位来启动和关闭操作系统运行装置4的姿态检测单元46、并读取应用数据库44中保存的结果。操作系统运行装置4中的姿态服务模块40包含姿态检测单元46、数据扫描单元49。姿态比较单元47和姿态提醒单元48则包含在应用程序模块71中。应用程序模块71中的输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45(API)来设置“姿态检测标志位”。数据扫描单元49周期性查询该标志位,当该标志位被设置时运行姿态检测单元46并将姿态参数保存在应用数据库44,形成姿态参数库。应用程序模块71通过操作系统运行装置提供的应用程序编程接口45来读取这些姿态参数,并根据姿态参数来决定是否进行提醒。
[0063] 图7(a)是操作系统运行装置中的工作步骤:
[0064] 第601步、数据扫描单元49查询所述“姿态检测标志位”是否被设置,如是,则转第602步,触发姿态检测单元46;否则转第604步;
[0065] 第602步、姿态检测:姿态检测单元46启动传感模块驱动单元41,控制姿态传感模块1采集传感信号S1、S2,并转换为姿态数据D1、D2;姿态检测单元46读取传感模块驱动单元输出的姿态数据D1、D2;姿态检测单元46对姿态数据进行分析,得出相对姿态参数G1和/或绝对姿态参数G2;
[0066] 第603步、数据存储:姿态检测单元46产生的姿态参数被保存在应用数据库44中;
[0067] 第604步、等待,延时后转第601步。
[0068] 图7(b)是应用程序模块中的工作步骤:
[0069] 第605步、应用程序模块71输入输出处理单元70通过应用程序编程接口45设置或清除应用数据库44中的“姿态检测标志位”;
[0070] 第606步、延时等待,或执行其它功能;
[0071] 第607步、数据读取:应用程序模块71中输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45读取应用数据库44中的姿态参数和门限值数据;
[0072] 第608步、姿态比较:应用程序模块71中的姿态比较单元47将所述姿态参数G1、G2和门限值T1、T2进行比较,姿态正常时转第605步,否则转第609步;
[0073] 第609步、姿态提醒:应用程序模块71中的姿态提醒单元48在所述姿态参数超过门限值时,生成报警数据A和/或姿态矫正数据R;输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45,启动输出模块驱动单元43,控制告警信号输出模块向客户发出用户感觉可识别的信号,包含报警信息和/或矫正建议,告警输出后,转第605步。
[0074] 图8是操作系统运行装置按照应用程序状态表启动姿态检测的方案流程图。操作系统运行装置40中的姿态服务模块包含姿态检测单元46、数据扫描单元49。姿态服务模块40与应用程序模块71,72,…,7N并行工作,姿态服务模块40中的数据扫描单元49每隔一段时间检测当前运行的应用程序模块,当有必要监测用户姿态时,启动姿态检测单元46工作。
[0075] 至少一个所述应用程序模块(例如71)占据显示屏时,通过应用程序编程接口45修改应用数据库44中的“应用程序状态表”,写入该应用程序模块的名称(或系统分配的某种标识符)。
[0076] 用户可以通过用户配置输入模块2设置“应用程序注册表”,这些应用程序占据显示屏时进行姿态检测和提醒。某些应用程序模块也可以自己主动修改“应用程序注册表”,将自己加入到这个列表中。
[0077] 图8(a)是操作系统运行装置中的工作步骤:
[0078] 第701a步、判断应用程序模块(例如71)是否占用显示屏:数据扫描单元49从应用数据库44中的“应用程序状态表”中获得正在使用显示屏的应用程序模块名称(或系统分配的某种标识符),如是,则701b步,否则转第704步;
[0079] 第701b步、数据扫描单元49检查应用程序模块71是否在“应用程序注册表”中,如是,则转第702步,触发姿态检测单元46;否则转第704步;
[0080] 第702步、姿态检测:姿态检测单元46启动传感模块驱动单元41,控制姿态传感模块1采集传感信号S1、S2,并转换为姿态数据D1、D2;姿态检测单元46读取传感模块驱动单元输出的姿态数据D1、D2;姿态检测单元46对姿态数据进行分析,得出相对姿态参数G1和/或绝对姿态参数G2;
[0081] 第703步、数据存储:姿态检测单元46产生的姿态参数被保存在应用数据库44中。
[0082] 第704步、等待,延时后转第701a步。
[0083] 图8(b)是应用程序模块中的工作步骤:
[0084] 第705步、应用程序模块71在占据显示屏时,输入输出处理单元70通过应用程序编程接口45修改应用数据库44中的“应用程序状态表”,写入该应用程序模块的名称或标识符;
[0085] 第706步、延时等待,或执行应用程序模块的其它功能;
[0086] 第707步、数据读取:应用程序模块71中输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45读取应用数据库44中的姿态参数和门限值数据;
[0087] 第708步、姿态比较:应用程序模块71中的姿态比较单元47将所述姿态参数G1、G2和门限值T1、T2进行比较,姿态正常时转第705步,否则转第709步;
[0088] 第709步、姿态提醒:应用程序模块71中的姿态提醒单元48在所述姿态参数超过门限值时,生成报警数据A和/或姿态矫正数据R;输入输出处理单元70通过操作系统运行装置4提供的应用程序编程接口45,启动输出模块驱动单元43,控制告警信号输出模块向客户发出用户感觉可识别的信号,包含报警信息和/或矫正建议,告警输出后,转第705步。
[0089] 针对以上各个实施例,具体说明用户功能设置方案。操作系统运行装置4和至少一个应用程序模块(例如71)接受来自用户配置输入模块指令数据I。在输入模块驱动单元42的控制下,识别用户配置输入模块2输入的用户指令。输入模块驱动单元既可以由操作系统运行装置4启动,也可以由应用程序模块(例如71)中输入输出处理单元70通过应用程序编程接口45启动。指令数据至少包括以下指令中一种:1.应用程序选择指令,用于设置“应用程序注册表”。只有前台运行这些应用程序时该后台服务才进行姿态检测。某些应用程序也可以自己主动加入到这个列表中。通过设置让该功能在某些应用中不被启用。如前台应用程序是接听、拨打电话、听收音机或其它音频内容时,由于此时用户不会长时间关注显示屏,此时不必要开启本功能。2.启动指令,用于设置“姿态检测标志位”。通过用户设置该标志位直接启动或禁止姿态检测功能。3.门限指令,用于设置姿态参数门限值。通过设置门限值适应不同用户的需求。在没有用户指令时,上述指令数据在操作系统运行装置4的应用数据库44中存在默认设置数据。
[0090] 针对以上各个实施例,具体说明告警输出方案。在操作系统运行装置4中输出模块驱动单元43的控制下,告警信号输出模块3处理报警数据A和姿态矫正数据R。报警数据是指姿态参数超出门限值时生成的,包含报警的方式、报警的强度、报警的时间长短等特征,这些数据是根据用户偏离正确姿态的程度和时间来确定的。姿态矫正数据是根据姿态参数和门限值之间的差,得到如何改变用户姿态以达到正确姿态的数据,包括距离、角度、及调整的方向等信息。报警输出模块3输出的信号是用户感官可识别的信号,采用以下一种或多种形式:通过音频模块发出来的提示音、通过振动设备发出来的振动,通过显示屏给出的图形或文字提示。