您的位置:首页 > 大数据 > 人工智能

[AIR] 检测移动设备运动

2015-06-17 16:51 495 查看
Accelerometer 类根据由设备的运动传感器检测的活动调度事件。此数据表示设备的位置或沿三维轴的移动。当设备移动时,传感器会检测到此移动并返回加速数据。Accelerometer 类提供了各种方法,用于查询是否支持加速计以及设置调度加速事件时使用的速率。

注意:使用
Accelerometer.isSupported
属性测试运行时环境是否能够使用此功能。当为各个 API 入口列出的运行时版本可以访问 Accelerometer 类及其成员时,运行时的当前环境将确定此功能的可用性。例如,您可以使用 Flash Player 10.1 的 Accelerometer 类属性编译代码,但是需要使用
Accelerometer.isSupported
属性测试 Accelerometer 功能在 Flash Player 运行时的当前部署环境中的可用性。如果
Accelerometer.isSupported
在运行时为
true
,则当前存在 Accelerometer 支持。

package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.AccelerometerEvent;
import flash.sensors.Accelerometer;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;

/**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-6-17 下午2:59:32
*
*/
public class AccelermeterTest extends Sprite
{
private var _accelerometer:Accelerometer;
private var _oldAccX:Number;
private var _oldAccY:Number;
private var _oldAccZ:Number;
private var _sum:Number;
private var _txt:TextField;
public function AccelermeterTest()
{
super();
// 支持 autoOrient
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
_txt=new TextField()
_txt.x=10;
_txt.y=10;
_txt.autoSize=TextFieldAutoSize.LEFT;
this.addChild(_txt);
if(Accelerometer.isSupported){
_oldAccX=0;
_oldAccY=0;
_oldAccZ=0;
_sum=0;
_accelerometer=new Accelerometer();
_accelerometer.setRequestedUpdateInterval(1000);
_accelerometer.addEventListener(AccelerometerEvent.UPDATE,onUpdate);
}else{
_txt.text="当前设备不支持加速计。";
}
}
private function onUpdate(e:AccelerometerEvent):void{
_sum=0;
const k:Number=5;//越大敏感度越高
var accX:Number=Math.round(e.accelerationX*k)/k;
var accY:Number=Math.round(e.accelerationY*k)/k;
var accZ:Number=Math.round(e.accelerationZ*k)/k;
_sum+=Math.abs(accX-_oldAccX);
_sum+=Math.abs(accY-_oldAccY);
_sum+=Math.abs(accZ-_oldAccZ);
_oldAccX=accX;
_oldAccY=accY;
_oldAccZ=accZ;
_txt.text=
"event.accelerationX="+e.accelerationX+"\n"+
"event.accelerationY="+e.accelerationY+"\n"+
"event.accelerationZ="+e.accelerationZ+"\n"+
"accX="+accX+"\n"+
"accY="+accY+"\n"+
"accZ="+accZ+"\n"+
"sum="+_sum;
trace(e.accelerationX,e.accelerationY,e.accelerationZ);
if(_sum >0.2){
//trace(sum,"摇手机");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: