如何检测android中的流畅运动

时间:2014-02-06 06:17:25

标签: android motion-detection

我正在尝试检测Android设备的移动,因为我的应用程序在检测到移动时启动,因为我正在使用加速计运动传感器。但它正在检测手机抖动时的移动,但不能正常运动。我没有得到如何检测平滑运动。

这是加速度计上的运动传感器代码。

  public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        TextView tvX= (TextView)findViewById(R.id.x_axis);
        TextView tvY= (TextView)findViewById(R.id.y_axis);
        TextView tvZ= (TextView)findViewById(R.id.z_axis);
        ImageView iv = (ImageView)findViewById(R.id.image);
        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];
        if (!mInitialized) {
            mLastX = x;
            mLastY = y;
            mLastZ = z;
            tvX.setText("0.0");
            tvY.setText("0.0");
            tvZ.setText("0.0");
            mInitialized = true;
        } else {
            float deltaX = Math.abs(mLastX - x);
            float deltaY = Math.abs(mLastY - y);
            float deltaZ = Math.abs(mLastZ - z);
            if (deltaX < NOISE) deltaX = (float)0.0;
            if (deltaY < NOISE) deltaY = (float)0.0;
            if (deltaZ < NOISE) deltaZ = (float)0.0;
            mLastX = x;
            mLastY = y;
            mLastZ = z;
            tvX.setText(Float.toString(deltaX));
            tvY.setText(Float.toString(deltaY));
            tvZ.setText(Float.toString(deltaZ));
            iv.setVisibility(View.VISIBLE);

            if(deltaX!=0||deltaY!=0||deltaZ!=0)
            {
                Handler gpsHandler = new Handler();
            //  locateHandler.sendEmptyMessage(1);

                 gpsHandler.post(new Runnable() {
                     public void run() {
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);}});
            }


        }



    }

0 个答案:

没有答案