Android操作系统对手机口袋状态的检测方法

文档序号:7760803阅读:316来源:国知局
专利名称:Android操作系统对手机口袋状态的检测方法
技术领域
本发明涉及基于谷歌Android操作系统的智能手机技术领域,特别是涉及一种 Android系统对手机口袋状态的检测方法。
背景技术
Android为谷歌开发的基于Linux内核的开源手机操作系统,2007年11月开放手 机联盟(Open Handset Alliance)的成立正式宣布了 Android的诞生,在2008年10月正 式投入市场。目前中国移动的OPhone及其OMS (OpenMobiIe System)就是基于Android深 度定制的实际产品。Android是一个开源手机操作系统,它不存在任何以往阻碍移动产业创 新的专有权障碍,是首个为移动终端打造的真正开放和完整的移动操作系统。在全世界范 围内,摩托罗拉、HTC(多普达)、联想、三星等众多公司都已经推出Android手机产品和上网 本产品,而且有越来越多加速上升的趋势。Android的完全开源性使得Android的开发环境比iPhone OS开放的多。Android 给每个开发者提供了开发创新软件的平台。谷歌已经开发好的大量现成的应用软件,同时 可以直接使用谷歌很多的在线服务。谷歌提供了基于Eclipse的完整开发环境,模拟器,文 档,帮助,示例。同时,Android可以紧密的与Gmail、谷歌地图等其他谷歌服务结合,给用户 提供了便捷的同步和网络服务,是云计算模式的成功模型之一。Android市场是Android应 用程序下载和发布的平台,为用户和开发者提供了便利的发布和下载方式。与其他操作系统的智能手机一样,Android智能手机存在多个工作能耗状态。目 前市场上的ARM架构处理器的Android智能手机,其低功耗的睡眠状态所消耗电量是正常 工作状态的十分之一以下。手机在不使用时切换到睡眠状态,可以大幅度降低手机耗电量, 延长待机时间。在传统方法中手机由正常工作状态切换到睡眠状态的判断依据,都是通过 闲置超时,即在一定时间内如果手机没有接受到任何用户的操作,就将手机置于睡眠状态。 这种方法虽然在大多数情况下都可以满足用户需要,但是仍然有一定的局限性。它并不是 最优的睡眠状态切换方法,在闲置超时的时间范围内手机处于正常工作状态,此时消耗的 电量仍然是一种浪费,可以进一步节省。当用户将手机放置于口袋、手机套、箱包中时,就意 味着手机已经被闲置,可以立即切换到睡眠状态。而在Android智能手机中实时判断手机 是否处于口袋状态已经成为可能。Android智能手机相对于传统手机的一个重要特点是在硬件上集成了大量的传感 器,这主要包括重力传感器,加速度传感器,环境光线传感器,距离传感器。利用这些传感器 可以实现手机对于周围环境的精确感知,让手机更加的智能化。在本发明中,正是利用的环 境光线传感器和距离传感器实现的手机的口袋状态检测。环境光线传感器通常用于液晶显示屏的背光灯亮度控制。通过测量周边环境的光 线强度,让液晶显示屏自动调节背光灯亮度,匹配人眼的需求,减少眼睛的疲劳,同时延长 电池寿命。然而,手机操作系统在搭配了相应的驱动程序后,可以读取环境光线传感器测量 到的周边环境光线强度的数值,在其他功能上利用光线强度这一参数。
距离传感器是新型智能手机特有的一种传感器,它的作用是检测用户面部与屏幕 的距离。当通话时用户面部与屏幕较近,此时可以关闭显示屏幕而达到节电的目的,同时关 闭屏幕可以实现屏幕键盘锁,防止用户面部接触屏幕而产生误操作。类似环境光线传感器, 操作系统也可以通过驱动程序读取距离传感器的参数,实现其他功能。

发明内容
本发明的目的在于提供一种Android操作系统对手机口袋状态的检测方法,它利 用Android智能手机的环境光线传感器和距离传感器,实现对于手机是否处于口袋状态的 检测。本发明解决其技术问题采用的技术方案如下1)手机的口袋状态的定义当手机被放置于用户的衣服口袋里、各种箱包中、专用手机套中这样类似的黑暗 而且相对密闭的环境中时,用户将不再使用手机;在本发明中称这种状态为口袋状态,其最 主要特征是黑暗的周边环境光线和对手机较为密闭的包裹;当手机处于口袋状态时,其环 境光线传感器将会检测到最弱等级的周边环境光线强度,其距离传感器将会检测到手机屏 幕被大面积覆盖;当环境光线传感器处于最弱光线状态、距离传感器处于被覆盖状态时,可 以认为手机处于口袋状态;对于特殊应用环境,可以在操作系统的软件层次做例外处理,防 止通过环境光线传感器和距离传感器对于口袋状态的错误判断;特殊的应用环境的一个简单例子是在夜间户外进行语音通话。此时环境光线较 低,同时用户的脸部覆盖手机屏幕,对于环境光线传感器和距离传感器来说此时的状态和 口袋状态是一致的。因此仅仅依靠这两个传感器的输出参数会出现对口袋状态的错误判 断。解决方法是对语音通话进行例外处理,当用户进行语音通话时操作系统不去判断手机 是否处于口袋状态。2)在Android操作系统中安装环境光线传感器和距离传感器的驱动程序Android操作系统使用的是修改过的Linux内核,根据手机具体的硬件配置,需要 在内核中安装相应的环境光线传感器和距离传感器的驱动程序模块;在正确安装驱动程序 模块之后,操作系统可以读取环境光线传感器和距离传感器的输出参数,而且能控制传感 器的开启和关闭;3)在Android操作系统中增加口袋状态检测服务进程在Android操作系统中增加一个特殊的服务进程,此服务进程专门用于手机的口 袋状态检测,在操作系统后台一直运行;口袋状态检测服务进程具有较高的权限,可以随时 读取环境光线传感器和距离传感器的输出参数,还可以将手机切换到睡眠模式;4) 口袋状态检测服务进程在检测到口袋状态时将手机切换到睡眠模式口袋状态检测服务进程每隔一定时间间隔就读取环境光线传感器和距离传感器 的输出参数,若环境光线传感器的输出表示最弱光线状态,而且距离传感器的输出表示被 覆盖状态,则执行睡眠模式的切换;口袋状态检测服务进程对于特殊应用程序进行例外处 理,特殊应用程序包括语音通话、多媒体播放;当特殊应用程序正在运行时,口袋状态检测 服务进程进入暂停工作状态,不检测传感器的输出也不进行睡眠模式切换;5)利用闲置超时检测方法实现非口袋状态的睡眠模式切换
口袋状态检测服务进程同时检测用户无操作的闲置时间,当在设定的时间范围内 没有任何用户的操作时就将手机切换到睡眠模式;当手机处于非口袋状态但是长时间没有 任何用户操作时,手机也可以自动切换到睡眠模式。本发明具有的有益的效果是本发明利用Android智能手机中的距离传感器和环境光线传感器实现对手机是 否处于口袋中的检测,可以由操作系统自动处理切换到口袋状态时所需要的操作。当手机 被用户放置到口袋中时,利用本发明可以立即将手机切换到睡眠状态,从而大幅度减少电 量损耗。本发明克服了传统智能手机操作系统仅仅依靠闲置超时来判断是否要切换到睡眠 状态的局限性,能够大幅度提高Android智能手机的待机和使用时间。


图1是本发明实施例的整体流程图。
具体实施例方式本实施例的具体实施过程如下1)在Android操作系统中安装环境光线传感器和距离传感器的驱动程序Android操作系统使用的是修改过的Linux内核,根据手机具体的硬件配置,需要 在内核中安装相应的环境光线传感器和距离传感器的驱动程序模块;在成功安装驱动程序 模块之后,操作系统可以读取环境光线传感器和距离传感器的输出参数,而且能控制传感 器的开启和关闭。这个步骤是整体流程图的第一个步。以HTC Desire智能手机为例,在硬件上采用了 Capella CM3602型号芯片的环境 光线传感器和距离传感器,在Android平台源代码的device目录下加入传感器的驱动程 序源代码或二进制内核模块,并修改MK编译配置文件。Android系统编译成功后环境光 线传感器和距离传感器的控制接口将统一集成在android, hardware. Sensor和android, hardware. SensorEvent l^XM, android, hardware. SensorManager H^h胃当 1 专胃 器类型是环境光线传感器时,可以通过SensorEvent. values
读取环境光线传感器的输 出值;当传感器类型是距离传感器时,可以通过SensorEvent. values
读取距离传感器 的输出值。通过SensorManager.registerListenerO注册传感器,实现传感器的启用;通 过SensorManager. unregisterListener ()注销传感器,实现传感器的关闭。2)在Android操作系统中增加口袋状态检测服务进程在Android操作系统中增加一个特殊的服务进程,此服务进程专门用于手机的口 袋状态检测,在操作系统后台一直运行;口袋状态检测服务进程具有较高的权限,可以随时 读取环境光线传感器和距离传感器的输出参数,还可以将手机切换到睡眠模式。这个步骤 是整体流程图的第二步。以HTC Desire智能手机为例,创建口袋状态检测服务进程时需要注册环境光线传 感器和距离传感器的使用,同时要获得以下特殊权限读取环境光线传感器的输出、读取距 离传感器的输出、将手机切换到睡眠模式。Android操作系统默认没有给后台服务进程读取 距离传感器输出的权限,需要在创建服务进程时特别声明。3) 口袋状态检测服务进程在检测到口袋状态时将手机切换到睡眠模式
5
口袋状态检测服务进程每隔一定时间间隔就读取环境光线传感器和距离传感器 的输出参数,若环境光线传感器的输出表示最弱光线状态,而且距离传感器的输出表示被 覆盖状态,则执行睡眠模式的切换;口袋状态检测服务进程对于特殊应用程序进行例外处 理,特殊应用程序包括语音通话、多媒体播放;当特殊应用程序正在运行时,口袋状态检测 服务进程进入暂停工作状态,不检测传感器的输出也不进行睡眠模式切换。这个步骤在整 体流程图中属于的左边的分支和上方的第一次判断。在实际Android手机中,环境光线传感器的输出值为周边环境光线的照度,单位 是勒克斯,而且提供了若干个照度值的宏定义。比如SensorManager. LIGHT_SUNLIGHT的值 为110000,表示在阳光直射下的输出值;SensorManager. LIGHT_N0_M00N的值为0. 0010,表 示夜晚没有月光时的输出值。SensorManager. LIGHT_N0_M00N是所有宏定义中最小的值,当 输出值小于等于它时,环境光线传感器检测到最弱的光线状态。距离传感器在实际Android手机中的输出值一般是一位二进制的0或1,表示没有 被覆盖或者被覆盖。通过Sensor. getMaximumRange ()函数得到的返回值是没有被覆盖的 状态,小于这个返回值则为被覆盖的状态。以HTC Desire智能手机为例,在口袋状态检测服务进程中设置一个倒计时定 时器,默认时间间隔可由用户设置,比如2秒(见图1中的“等待固定时间间隔”)。倒 计时2秒过后,服务进程读取环境光线传感器和距离传感器的输出参数(见图1中“读 取环境光线传感器和距离传感器的输出参数”)。当环境光线传感器的输出小于等于 SensorManager. LIGHT_N0_M00N时,表示最弱光线状态;当距离传感器的输出小于Sensor. getMaximumRange ()返回值时,表示近距离被覆盖状态。当读取到的输出参数满足口袋状态 的最弱光线、被覆盖的条件时(见图1中左侧分支的两个判断),口袋状态检测服务进程调 用系统函数将手机切换到睡眠模式(见图1最后一步“将手机切换到睡眠模式”)。若不是 处于口袋状态,则将倒计时定时间重置为2秒,然后重新倒计时(见图1左侧分支两次判断 结果为“否”之后返回到“等待固定时间间隔”)。下面的伪代码说明了这个关键步骤
while(true){ sleep(2);
if(LightSensor.values
<= SensorManager.LIGHT—NO—MOON){ if (Proximity Sensor, values
< ProximitySensor.getMaximumRange()) SetPhoneToSleepMode(); 特殊应用程序中的语音通话,前面已经解释过原因;多媒体播放包括视频播放和 音频播放。视频播放时用户显然不需要将手机置于睡眠模式,即使没有任何用户操作也要保持手机处于工作模式;音频播放用户也不需要将手机置于睡眠模式,仅仅需要将屏幕关 闭。因此对于多媒体播放程序需要进行例外处理。口袋状态检测服务进程在例外应用程序 运行时暂停工作,让语音通话或播放器程序自己控制手机模式。这个特殊处理的步骤在流 程图的上方的第一次判断“特殊应用程序是否在运行”,口袋状态检测服务程序将一直等待 特殊应用程序结束后才继续下面的两个分支。4)利用闲置超时检测方法实现非口袋状态的睡眠模式切换口袋状态检测服务进程同时检测用户无操作的闲置时间,当在设定的时间范围内 没有任何用户的操作时就将手机切换到睡眠模式;当手机处于非口袋状态但是长时间没有 任何用户操作时,手机也可以自动切换到睡眠模式。这个步骤与口袋状态检测步骤是相互 独立的,无论是否处于口袋状态都要检测闲置时间。这个步骤实际上是将现有技术“闲置超 时睡眠切换”整合到口袋状态检测服务进程中,口袋状态检测服务进程同时负责口袋状态 情况下的睡眠模式切换和闲置超时情况下的睡眠模式切换。这个步骤是流程图中的右侧分 支。以HTC Desire智能手机为例,在很多情况下手机不处于口袋状态、用户长时间无 操作时也需要将手机自动切换到睡眠模式,例如手机被用户闲置在桌子上。在口袋状态检 测服务进程中加入另外一个倒计时定时器,时间间隔可由用户设置,比如设置为20秒(见 图1中“闲置超时定时器重新开始倒计时”)。当20秒内没有检测到任何用户操作时,就调 用系统函数将手机切换到睡眠模式(见图1中“有用户操作发生”判断结果为“否”,然后 “闲置超时定时器超时”,最后“将手机切换到睡眠模式”);如果检测到用户操作,则重置20 秒倒计时定时器,重新倒计时(见图1中“有用户操作发生”判断结果为“是”,然后返回到 “闲置超时定时器重新开始倒计时”)。
权利要求
1.一种Android操作系统对手机口袋状态的检测方法,其特征在于包括如下步骤1)在Android操作系统中安装环境光线传感器和距离传感器的驱动程序,操作系统读 取环境光线传感器和距离传感器的输出参数以及控制传感器的开启和关闭;所述环境光线 传感器的输出参数为周边环境光线强度等级,距离传感器的输出参数为手机屏幕被覆盖状 态;所述手机口袋状态指环境光线传感器检测到最弱等级的周边环境光线强度和距离传感 器检测到手机屏幕被大面积覆盖的状态;2)在Android操作系统中增加口袋状态检测服务进程,创建口袋状态检测服务进程时 需要注册环境光线传感器和距离传感器的使用,同时要获得以下特殊权限读取环境光线 传感器的输出、读取距离传感器的输出、将手机切换到睡眠模式;3)所述口袋状态检测服务进程每隔一定时间间隔就读取环境光线传感器和距离传感 器的输出参数,若环境光线传感器的输出表示最弱光线状态,而且距离传感器的输出表示 被覆盖状态,则执行睡眠模式的切换。
2.如权利要求1所述的Android操作系统对手机口袋状态的检测方法,其特征在于还 包括如下步骤当手机处于非口袋状态时,且当口袋状态检测服务进程检测到用户无操作的闲置时间 超过设定的时间范围时,将手机切换到睡眠模式。
3.如权利要求1所述的Android操作系统对手机口袋状态的检测方法,其特征在于 当包括语音通话、多媒体播放的应用程序正在运行时,口袋状态检测服务进程进入暂停工 作状态,不检测传感器的输出也不进行睡眠模式切换。
4.如权利要求1所述的Android操作系统对手机口袋状态的检测方法,其特征在于1) 包括如下步骤1)在Android平台源代码的device目录下加入传感器的驱动程序源代码或二进制内 核模块,并修改MK编译配置文件;2)Android系统编译成功后环境光线传感器和距离传感器的控制接口将统一集成在 android, hardware. Sensor 禾口 android· hardware. SensorEvent 以及 android, hardware. SensorManager三个系统类库里;3)检测传感器的输出参数,当传感器类型是环境光线传感器时,通过SensorEvent. values
读取环境光线传感器的输出值;当传感器类型是距离传感器时,通过 SensorEvent. values
读取距离传感器的输出值;4)通过SensorManager.registerListener ()注册传感器,实现传感器的启用;5)通过SensorManager.unregisterListener()注销传感器,实现传感器的关闭。
全文摘要
本发明公开了一种Android操作系统对手机口袋状态的检测方法,其在Android操作系统中安装环境光线传感器和距离传感器的驱动程序,操作系统读取环境光线传感器和距离传感器的输出参数以及控制传感器的开启和关闭,在Android操作系统中创建了口袋状态检测服务进程,所述口袋状态检测服务进程每隔一定时间间隔就读取环境光线传感器和距离传感器的输出参数,若环境光线传感器的输出表示最弱光线状态,而且距离传感器的输出表示被覆盖状态,则执行睡眠模式的切换。本发明克服了传统智能手机操作系统仅仅依靠闲置超时来判断是否要切换到睡眠状态的局限性,能够大幅度提高Android智能手机的待机和使用时间。
文档编号H04M1/725GK102006356SQ201010292718
公开日2011年4月6日 申请日期2010年9月27日 优先权日2010年9月27日
发明者曹满, 胡同森, 陈天洲, 黄文 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1