本发明专利技术提出了一种通过摇动设备实现其屏幕显示方向转动的方法,其进入特定应用程序时通过调用操作系统获取到当前设备传感器相关的服务;判断设备是否具有加速度传感器;获取加速度传感器输出的数据,根据获取的加速度的时间和加速度值判断用户是否进行有效的屏幕摇动动作;获取当前的屏幕显示方向,并在旋转当前屏幕显示方向后将加速度巨变计数器归零;在退出或者重启程序时,按系统设置或程序本身默认的配置设定屏幕显示方向。不管用户对系统方向进行了何种设置,用户均可以通过对设备“摇一摇”实现临时性的转屏操作,并固定屏幕,使其不会因为重力作用频繁转换。
【技术实现步骤摘要】
本专利技术涉及一种改变手持设备屏幕显示方向的方法,尤其是一种在程序中通过摇动设备实现设备屏幕显示方向转动的方法。
技术介绍
目前手持设备(在此以手机为例)的屏幕显示方向有三种,分别是固定横屏、固定竖屏、根据重力方向自动旋转屏幕。用户可通过手机系统的菜单设置选择其中ー种方式,这个选择是针对手机系统的。如果安装的应用程序没有自定义屏幕方向,则打开该程序时,屏幕方向会随系统的设置而设置。目前主要问题是如果用户在系统设置里固定手机屏幕,在某些程序中则不能根据需要转屏;如果用户在系统设置里不固定手机屏幕,则在所有程序中都能根据重力方向转屏,但在某些程序中需要固定屏幕方向,使其不要根据重力方向转屏屏幕。已有的解决方法如下 一、用户可以去系统设置里临时更改屏幕方向,但每次使用该程序都要设置系统,操作太繁琐。ニ、程序可以自定义屏幕方向,则在打开这个程序时,会以这个程序自定义的方向打开。这ー技术的缺点是,在程序固定的方向与系统当前方向不一致时,打开程序后屏幕方向自动旋转,強迫用户重新适应屏幕方向,用户体验不好。三、程序也可以提供屏幕方向选项给用户设置,那用户就可以单独对这个程序的屏幕方向进行设置。这ー技术的缺点在于其不够智能化。用户的屏幕方向需要跟随环境发生变化,比如躺在床上看阅读软件,可能需要横屏,坐着看阅读软件,可能需要竖屏。但用户每次环境改变之后要改变屏幕方向,需要重新设置,过程太复杂,不够简单,用户体验不好。
技术实现思路
本专利技术要解决两个问题1.用户在系统设置中固定了屏幕,不能在某程序中方便快捷地转换屏幕方向;2.用户在系统设置中没有固定屏幕,在某程序中不能固定方向。我们希望不管用户对系统进行了何种设置,用户可以通过摇ー摇实现临时性的转屏操作,并固定屏幕,使其不会因为重力作用频繁转换。本专利技术通过ー种在程序中通过摇动设备实现设备屏幕显示方向转动的方法来实现此目的,其特征在于包含以下步骤 步骤ー进入特定应用程序时通过调用操作系统获取到当前设备传感器相关的服务; 步骤ニ 判断设备是否具有加速度传感器; 步骤三获取加速度传感器输出的数据,记录加速度传感器报告的加速度的时间和加速度值,计算得出先后产生的第一加速度和第二加速度的时间差,以及手机屏幕X、Y、Z三轴上第一加速度和第二加速度之间加速度变化的绝对值,再根据所述时间差和加速度变化的绝对值利用以下公式计算出加速度变化率的平均值speed=(deltaX+deltaY+deltaZ)XC/diff,其中speed为加速度变化率的平均值,deltaX、deltaY、deltaZ分别为手机屏幕X、Y、Z轴上加速度变化的绝对值,diff为第一加速度和第二加速度的时间差,C为放大系数;将所述平均值speed与预设的阈值相比较,在平均值大于平均值阈值时判断产生了一次加速度巨变,并记录当前加速度巨变产生时间,在加速度巨变计数器中对加速度巨变的次数加1,其中若当前加速度巨变的时间和上次加速度巨变产生的时间差大于ー预设的时间差阈值时,将加速度巨变计数器归零;当加速度巨变的次数达到预设的次数阈值时,判定产生用户摇屏动作;在判断产生用户摇屏动作时,计算当前摇屏动作与上一次摇屏动作的时间差,并将摇屏动作的时间差与预设的时间差阈值相比较,在所述时间差大于时间差阈值时调用屏幕方向设置; 步骤四获取当前的屏幕方向,并在旋转当前屏幕显示方向后将加速度巨变计数器归零; 步骤五在退出或者重启程序时,按系统设置或程序本身默认的配置设定屏幕方向。这样,用户摇ー摇手机,可以使软件内的屏幕方向改变,并临时性固定屏幕方向,使其不会因为重力作用频繁转换屏幕。系统和软件的设置暂时不起作用,直到关闭文档。关闭文档以后,手机的屏幕方向随系统或者软件的设置。具体实施例方式在此具体实施例中 ,我们以使用Android系统的智能手机为例进行说明,本专利技术在采用其它操作系统的智能手机上的实现与此相似。首先,本专利技术通过Android系统提供的加速度传感器来实现对用户“摇一摇”的动作的判定,此判定可激活手机屏幕显示方向的改变。具体地,通过调用Android系统的Activity. getSystemService (Context. SENSOR_SERVICE)获取到当前设备传感器相关的服务 SensorManager ;然后从 SensorManager 中,通过 getDefaultSensor (Sensor. TYPE_ACCELEROMETER)获取到设备上的加速度传感器,如果返回null,则当前设备不支持加速度传感器,无法实现摇ー摇功能。否则,通过SensorManager. registerListener,注册 加速度传感器的监听,由此实现对加速度传感器信号的获取。Android上加速度传感器包含设备三个方向上的加速度,其中 X轴设备屏幕水平向右; Y轴设备屏幕竖直向上; Z轴设备屏幕垂直向外。如此,设备通过onSensorChanged(SensorEvent event)不断汇报当前的加速度(在此实施例中,姆秒大于等于5次),其中event的values中包含了当前三个方向上的实时加速度,values 表示X轴上的加速度,values [I]表示Y轴上的加速度,values [2]表示Z轴上的加速度。本专利技术通过对这三个方向上的加速度的变化,判断“摇ー摇”动作,具体方案见下文所述。首先,其中预定义的变量及其意义包括 event :系统汇报加速度附帯的加速度信息对象; mLastTime :上次系统汇报加速度的时间; mLastX :上次汇报的X轴加速度; mLastY :上次汇报的Y轴加速度; mLastZ :上次汇报的Z轴加速度; mLastHugeChangeTime :上次加速度巨变产生的时间(加速度巨变的含义在2中解释); mHugeChangeCount :已经连续产生的加速度巨变次数,初始为0 ; mLastShakeTime :记录上一次摇ー摇动作产生的时间,初始为O。这样,当第一次汇报加速度时,记录当前时间mLastTime,以及加速度mLastX =event, values[U」,mLastY = event.values[I], mLastZ = event.values[2」。当再次汇报加速度时,获取当前时间now,通过now - mLastTime计算出时间差diff,计算出三个方向上的加速度变化的绝对值,即当前X轴加速度event, values 减去mLastX的绝对值得deltaX,相应算出deltaY, deltaZ,三项累加后除以先后两次加速度(在此以第一加速度和第二加速度表示)的时间差diff并乘以放大系数C (在此以10000为例,即扩大10000倍),得到ー个描述三个方向上加速度变化率的ー个平均值speed,通过判断该speed是否超过预设的平均值阀值(例如350,此为实验值,使用此值判断“摇ー摇”动作的误差相当小)。如果未到达此平均值阀值,仅记录当前时间及现在的加速度。若到达阀值,则判定产生了一次加速度巨变,并记录当前加速度巨变产生时间mLastHugeChangeTime,并使加速度巨变计数器中的加速度巨变的次数mHugeC本文档来自技高网...
【技术保护点】
一种通过摇动设备实现其屏幕显示方向转动的方法,其特征在于包含以下步骤:进入特定应用程序时通过设备的操作系统获取到当前设备传感器相关的信息;判断设备是否具有加速度传感器;获取加速度传感器输出的数据,记录加速度传感器报告的加速度的时间和加速度值,根据获取的加速度的时间和加速度值判断是否存在用户摇屏动作;旋转当前屏幕显示方向。
【技术特征摘要】
1.一种通过摇动设备实现其屏幕显示方向转动的方法,其特征在于包含以下步骤 进入特定应用程序时通过设备的操作系统获取到当前设备传感器相关的信息; 判断设备是否具有加速度传感器; 获取加速度传感器输出的数据,记录加速度传感器报告的加速度的时间和加速度值,根据获取的加速度的时间和加速度值判断是否存在用户摇屏动作; 旋转当前屏幕显示方向。2.根据权利要求1所述的通过摇动设备实现其屏幕显示方向转动的方法,其特征在于,在步骤3)中,根据加速度传感器报告的加速度的时间和加速度值,计算得出先后产生的两个加速度,第一加速度和第二加速度,的时间差,以及手机屏幕轴向上第一加速度和第二加速度之间加速度变化的绝对值,再根据所述时间差和加速度变化的绝对值计算出加速度变化率的平均值;将所述平均值与预设的平均值阈值相比较,在所述平均值大于平均值阈值时判断产生了一次加速度巨变;记录当前加速度巨...
【专利技术属性】
技术研发人员:黄兰花,王晖,赵威,
申请(专利权)人:珠海金山办公软件有限公司,北京金山办公软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。