首页 > 编程知识 正文

抬手亮屏怎么打开,苹果双击亮屏怎么设置

时间:2023-05-04 13:48:59 阅读:161014 作者:1367

原理:

分析举手使画面变亮的过程,首先有举手的动作。 举手的过程中会产生加速度,下一次举手后装置处于静止状态。 如果用户现在想显示画面,则装置一定处于接近水平的状态。 有了这两个过程,我们几乎可以确认用户想要点亮屏幕。 这两个过程的判断只用于加速度传感器,不需要大多数机器同时使用的陀螺仪、磁性传感器等,也有助于机器的省电。

1 .判断举手动作。 首先介绍安卓设备的自然方向。 如下图所示。

在典型的Android智能设备中,平放在桌面上,顶部指向正北时的方向是自然的方向。 传感器管理器可以报告所有三个坐标轴方向上传感器的变化。 从传感器事件侦听器的传感器事件参数values属性传递的值依次表示横向、纵向和垂直加速度。 设定大于9.8 (重力加速度)的阈值,例如14,如果三个方向的任意一个值大于该阈值,则可以判断用户举手。 阈值设定得越大,用户触发这个判断的举手动作也需要越大。 把此时的时间准确记录到毫秒。

2 .判断用户观看设备的动作。 您可以看到,当设备处于水平方向时,x和y轴的加速度为0,z轴的加速度为9.8。 我们举手看设备时,不能保证设备处于绝对水平,必须适当放宽条件。 例如9 z -2 x 2 -2 y 2。 如果设备满足此条件,则用户将确定他/她想查看该设备。 把此时的时间准确记录到毫秒。

3 .举手使屏幕明亮。 测试表明,举手看设备的动作之间的时间间隔不超过500毫秒,因此最后一步将计算1和2记录的时间差。 如果差在500以内,则可以判断为用户这次是举手看设备的动作,此时掀起屏幕,将1的时间清零。 如果在0.5秒内不能关掉机器,会给用户带来麻烦。

源代码:

import android.app.Activity; import android.hardware.Sensor; import Android.hardware.sensor event; import Android.hardware.sensoreventlistener; import Android.hardware.sensor manager; import android.os.Bundle; import android.os.PowerManager; publicclasswakelockactivityextendsactivity {权限管理器}; 专用电源管理器pm; private power manager.wakelockmwakelock; 私有长时间共享; //举手时间private long showTime; //手机睡觉时间private Sensor accelerometer; @ overrideprotectedvoidoncreate (bundlesavedinstancestate ) super.oncreate ) savedinstancestate; setcontentview (r.layout.activity _ two; sensormanager=(sensormanager ) getsystemservice ) sensor_service; pm=(powermanager ) getsystemservice ) power_service; mwake lock=pm.newwakelock (power manager.acquire _ causes _ wake up|power manager.screen _ dim _ wake lock,' wake ) 加速器==空(if )加速器=传感器管理器. getdefaultsensor (sensor.type _ accelerometer ); sensor manager.register listener (sensoreventlistener,accelerometer,SensorManager.SENSOR_DELAY_UI ); }//重力感应截获privatesensoreventlistenersensoreventlistener=newsensoreventlistener ((@ overridepublicvoidonsensorchanged ) ) //x轴方向重力加速度,右为正的float y=values[1]; //y轴方向重力加速度,向前正的float z=values[2]; //z轴方向重力加速度,向上为正int medumValue=14; //判断是否举手if(math.ABS(x ) medumValue||math.ABS ) y ) medumValue||math.ABS ) z ) shake time 0 show time-shaketimeshowtime-shake time 500 (shake time=0; mWakelock.acquire (; mWakelock.release (; } } @ overridepublicvoidonaccuracychanged (sensor arg 0,int arg1) }; @ overrideprotectedvoidondestroy () { super.onDestroy ); sensor manager.unregister监听器(sensoreventlistener; }本节介绍mWakelock.release ()。 这个方法不是关掉画面,而是解除使画面变亮的锁定。 这意味着,如果不解除,设备将始终保持屏幕明亮。

请记住添加权限:

uses-permission Android 3360 name=' Android.permission.wake _ lock '/uses-permission

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。