android.hardware.Sensor#TYPE_ACCELEROMETER源码实例Demo

下面列出了android.hardware.Sensor#TYPE_ACCELEROMETER 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Circle-Synth   文件: SynthCircle.java
@Override
public void onSensorChanged(SensorEvent event) {

	if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
		return;
	SharedPreferences getPrefs1 = PreferenceManager
			.getDefaultSharedPreferences(getBaseContext());
	accel = getPrefs1.getBoolean("accel", true);
	currentAccelx = lowPass(event.values[0]);
	currentAccely = lowPass(event.values[1]);
	float y = Math.abs(currentAccelx / 10);
	float z = Math.abs(currentAccely / 10);

	if (y > z)
		z = y;
	else
		y = z;

	if (accel == true)
		PdBase.sendFloat("pd_accely", (1 - y));

}
 
源代码2 项目: MyBlogDemo   文件: ShakeHelper.java
@Override
public void onSensorChanged(SensorEvent event) {
    int type = event.sensor.getType();
    if (type == Sensor.TYPE_ACCELEROMETER) {//accelerometer
        //获取三个方向值
        float[] values = event.values;
        float x = values[0];
        float y = values[1];
        float z = values[2];

        if (!dialog.isShowing() && (Math.abs(x) > 17 || Math.abs(y) > 17 || Math
                .abs(z) > 17)) {
            handleFragment();
        }
    }
}
 
源代码3 项目: DeviceConnect-Android   文件: WearAppService.java
@Override
public void onSensorChanged(final SensorEvent sensorEvent) {
    if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        long time = System.currentTimeMillis();
        long interval = time - mStartTime;
        mStartTime = time;

        float accelX = sensorEvent.values[0];
        float accelY = sensorEvent.values[1];
        float accelZ = sensorEvent.values[2];
        final String data = accelX + "," + accelY + "," + accelZ
                + "," + mGyroX + "," + mGyroY + "," + mGyroZ + "," + interval;
        mExecutorService.execute(() -> {
            synchronized (mIds) {
                for (String id : mIds) {
                    sendSensorEvent(data, id);
                }
            }
        });
    } else if (sensorEvent.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
        mGyroX = (float) (sensorEvent.values[0] * RAD2DEG);
        mGyroY = (float) (sensorEvent.values[1] * RAD2DEG);
        mGyroZ = (float) (sensorEvent.values[2] * RAD2DEG);
    }
}
 
源代码4 项目: homescreenarcade   文件: OrientationListener.java
/**
 * SensorEventListener method called when sensor values are updated. Reads gravitational and
 * magnetic field information, and when both are available computes the orientation values
 * and calls the delegate with them.
 */
@Override public void onSensorChanged(SensorEvent event) {
    switch(event.sensor.getType()) {
    case Sensor.TYPE_MAGNETIC_FIELD:
        mags = event.values.clone();
        break;
    case Sensor.TYPE_ACCELEROMETER:
        accels = event.values.clone();
        break;
    }

    if (mags!=null && accels!=null) {
        SensorManager.getRotationMatrix(R, I, accels, mags);
        SensorManager.getOrientation(R, orientationValues);
        delegate.receivedOrientationValues(
                orientationValues[0], orientationValues[1], orientationValues[2]);
    }
}
 
private void processSensorData(final SensorEvent sensorEvent) {
    if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        mAccellX = sensorEvent.values[0];
        mAccellY = sensorEvent.values[1];
        mAccellZ = sensorEvent.values[2];

        mIsAccellReady.compareAndSet(false, true);
    } else if (sensorEvent.sensor.getType() == Sensor.TYPE_GRAVITY) {
        mGravityX = sensorEvent.values[0];
        mGravityY = sensorEvent.values[1];
        mGravityZ = sensorEvent.values[2];

        mIsGravityReady.compareAndSet(false, true);
    } else if (sensorEvent.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
        mGyroX = Math.toDegrees(sensorEvent.values[0]);
        mGyroY = Math.toDegrees(sensorEvent.values[1]);
        mGyroZ = Math.toDegrees(sensorEvent.values[2]);

        mIsGyroReady.compareAndSet(false, true);
    }
}
 
源代码6 项目: talkback   文件: IntegratedTapDetector.java
@Override
public void onSensorChanged(SensorEvent event) {
  switch (event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER:
      onAccelerometerChanged(System.nanoTime(), event.values);
      break;
    case Sensor.TYPE_GYROSCOPE:
      onGyroscopeChanged(System.nanoTime(), event.values);
      break;
    default: // fall out
  }
}
 
源代码7 项目: geoar-app   文件: ARSurfaceView.java
public void onSensorChanged(SensorEvent event) {
	if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
		if (updateMagneticVector) {
			magnetValues.put(event.values);
		}
	} else if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
		accelValues.put(event.values);
	}
	sensorValuesChanged = true;
}
 
源代码8 项目: android-robocar   文件: TiltControllerActivity.java
@Override
public void onSensorChanged(SensorEvent event) {

    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
        mGravity = event.values;
    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED)
        mGeomagnetic = event.values;
    if ((mGravity == null) || (mGeomagnetic == null))
        return;

    float[] R = new float[9];
    float[] I = new float[9];
    if (!SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic))
        return;

    float[] orientation = new float[3];
    SensorManager.getOrientation(R, orientation);

    if (orientation == null)
        return;

    double rollAngle = orientation[1] * 180 / Math.PI;
    double pitchAngle = orientation[2] * 180 / Math.PI;

    if(notWithinAngleTolerance((int)rollAngle, mLastRoll))
        this.mRollTextView.setText(String.format("%.0f", (rollAngle)));
    if(notWithinAngleTolerance((int)pitchAngle,mLastPitch))
        this.mPitchTextView.setText(String.format("%.0f", (pitchAngle)));

    mLastPitch = (int)pitchAngle;
    mLastRoll = (int) rollAngle;

    calculateAndSetSpeed(rollAngle,pitchAngle);
}
 
源代码9 项目: kAndroid   文件: MeiFireflyActivity.java
@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        float x = event.values[0];
        float y = event.values[1] * 2.0f;
        mMobikeView.onSensorChanged(-x, y);
    }
}
 
源代码10 项目: AndroidFrame   文件: ShakeByShakeActivity.java
@Override
public void onSensorChanged(SensorEvent event) {
    int type = event.sensor.getType();

    if (type == Sensor.TYPE_ACCELEROMETER) {
        //获取三个方向值
        float[] values = event.values;
        float x = values[0];
        float y = values[1];
        float z = values[2];

        if ((Math.abs(x) > 17 || Math.abs(y) > 17 || Math
                .abs(z) > 17) && !isShake) {
            isShake = true;
            // TODO: 2016/10/19 实现摇动逻辑, 摇动后进行震动
            Thread thread = new Thread() {
                @Override
                public void run() {
                    super.run();
                    try {
                        Log.d(TAG, "onSensorChanged: 摇动");

                        //开始震动 发出提示音 展示动画效果
                        sHandler.obtainMessage(START_SHAKE).sendToTarget();
                        Thread.sleep(500);
                        //再来一次震动提示
                        sHandler.obtainMessage(AGAIN_SHAKE).sendToTarget();
                        Thread.sleep(500);
                        sHandler.obtainMessage(END_SHAKE).sendToTarget();

                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
            thread.start();
        }
    }
}
 
源代码11 项目: tilt-game-android   文件: Engine.java
@Override
public void onSensorChanged(final SensorEvent pEvent) {
	if (this.mRunning) {
		final Sensor sensor = pEvent.sensor;
		final int sensorType = sensor.getType();
		switch (sensorType) {
			case Sensor.TYPE_ACCELEROMETER:
				if (this.mAccelerationData != null) {
					this.mAccelerationData.setDisplayRotation(this.getDisplayOrientation());
					this.mAccelerationData.setValues(pEvent.values);
					this.mAccelerationListener.onAccelerationChanged(this.mAccelerationData);
				} else if (this.mOrientationData != null) {
					this.mOrientationData.setDisplayRotation(this.getDisplayOrientation());
					this.mOrientationData.setAccelerationValues(pEvent.values);
					this.mOrientationListener.onOrientationChanged(this.mOrientationData);
				}
				break;
			case Sensor.TYPE_MAGNETIC_FIELD:
				this.mOrientationData.setDisplayRotation(this.getDisplayOrientation());
				this.mOrientationData.setMagneticFieldValues(pEvent.values);
				this.mOrientationListener.onOrientationChanged(this.mOrientationData);
				break;
			default:
				throw new IllegalArgumentException("Unexpected " + Sensor.class.getSimpleName() + " of Type: '" + sensorType + "'.");
		}
	}
}
 
源代码12 项目: Wrox-ProfessionalAndroid-4E   文件: MainActivity.java
private void listing16_9() {
  final SensorEventListener mySensorEventListener = new SensorEventListener() {
    // Listing 16-10: Calculating the device orientation using the rotation vector
    public void onSensorChanged(SensorEvent sensorEvent) {
      float[] rotationMatrix = new float[9];
      float[] orientation = new float[3];

      // Convert the result Vector to a Rotation Matrix.
      SensorManager.getRotationMatrixFromVector(rotationMatrix,
        sensorEvent.values);

      // Extract the orientation from the Rotation Matrix.
      SensorManager.getOrientation(rotationMatrix, orientation);
      Log.d(TAG, "Yaw: " + orientation[0]); // Yaw
      Log.d(TAG, "Pitch: " + orientation[1]); // Pitch
      Log.d(TAG, "Roll: " + orientation[2]); // Roll
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) { }
  };

  // Listing 16-9: Monitoring an accelerometer sensor
  SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
  int sensorType = Sensor.TYPE_ACCELEROMETER;
  sm.registerListener(mySensorEventListener,
    sm.getDefaultSensor(sensorType),
    SensorManager.SENSOR_DELAY_NORMAL);
}
 
源代码13 项目: healthgo   文件: StepThread.java
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
    if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        stepDetector.updateModel(isActivity);

        stepDetector.updateStep(sensorEvent.values[0], sensorEvent.values[1], sensorEvent.values[2]);
    }

}
 
源代码14 项目: ARCore-Location   文件: DeviceOrientation.java
@Override
public void onSensorChanged(SensorEvent event) {

    // Get the device heading
    float degree = Math.round( event.values[0] );
    currentDegree = -degree;

    switch (event.sensor.getType()) {
        case Sensor.TYPE_MAGNETIC_FIELD:
            mags = event.values.clone();
            break;
        case Sensor.TYPE_ACCELEROMETER:
            accels = event.values.clone();
            break;
    }

    if (mags != null && accels != null) {
        gravity = new float[9];
        magnetic = new float[9];
        SensorManager.getRotationMatrix(gravity, magnetic, accels, mags);
        float[] outGravity = new float[9];
        SensorManager.remapCoordinateSystem(gravity, SensorManager.AXIS_X,SensorManager.AXIS_Z, outGravity);
        SensorManager.getOrientation(outGravity, values);

        azimuth = values[0] * 57.2957795f;
        pitch = values[1] * 57.2957795f;
        roll = values[2] * 57.2957795f;
        mags = null;
        accels = null;
    }
}
 
源代码15 项目: ARCore-Location   文件: DeviceOrientation.java
@Override
public void onSensorChanged(SensorEvent event) {

    // Get the device heading
    float degree = Math.round( event.values[0] );
    currentDegree = -degree;

    switch (event.sensor.getType()) {
        case Sensor.TYPE_MAGNETIC_FIELD:
            mags = event.values.clone();
            break;
        case Sensor.TYPE_ACCELEROMETER:
            accels = event.values.clone();
            break;
    }

    if (mags != null && accels != null) {
        gravity = new float[9];
        magnetic = new float[9];
        SensorManager.getRotationMatrix(gravity, magnetic, accels, mags);
        float[] outGravity = new float[9];
        SensorManager.remapCoordinateSystem(gravity, SensorManager.AXIS_X,SensorManager.AXIS_Z, outGravity);
        SensorManager.getOrientation(outGravity, values);

        azimuth = values[0] * 57.2957795f;
        pitch = values[1] * 57.2957795f;
        roll = values[2] * 57.2957795f;
        mags = null;
        accels = null;
    }
}
 
源代码16 项目: JkStepSensor   文件: StepDcretor.java
public void onSensorChanged(SensorEvent event) {
    Sensor sensor = event.sensor;
    synchronized (this) {
        if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            calc_step(event);
        }
    }
}
 
源代码17 项目: SensorAnnotations   文件: AccelerometerManager.java
@OnAccuracyChanged(Sensor.TYPE_ACCELEROMETER)
void testTemperatureAccuracyChanged(@NonNull Sensor sensor, int accuracy) {
    mMainActivity.logAccuracyChangedForSensor(sensor, accuracy);
}
 
源代码18 项目: WhereYouGo   文件: Orientation.java
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
  case Sensor.TYPE_MAGNETIC_FIELD:
    break;
  case Sensor.TYPE_ACCELEROMETER:
    float filter = getFilter();
    aboveOrBelow =
            (float) ((event.values[SensorManager.DATA_Z] * filter) + (aboveOrBelow * (1.0 - filter)));
    break;
  case Sensor.TYPE_ORIENTATION:
    float valueOr = event.values[SensorManager.DATA_X];
    // Logger.d(TAG, "sensorOrientation:" + valueOr + ", " + event.values[SensorManager.DATA_Y]
    // + ", " + event.values[SensorManager.DATA_Z] + ", " + getDeclination());
    // fix to true bearing
    if (Preferences.SENSOR_BEARING_TRUE) {
      valueOr += getDeclination();
    }
    orient = filterValue(valueOr, orient);
    pitch = filterValue(event.values[SensorManager.DATA_Y], pitch);

    roll = filterValue(event.values[SensorManager.DATA_Z], roll);
    float rollDef;
    if (aboveOrBelow < 0) {
      if (roll < 0) {
        rollDef = -180 - roll;
      } else {
        rollDef = 180 - roll;
      }
    } else {
      rollDef = roll;
    }
    this.mLastAziSensor = orient;

    // do some orientation change by settings
    int rotation = A.getMain().getWindowManager().getDefaultDisplay().getRotation();
    switch (rotation) {
      case Surface.ROTATION_0:
        // no need for change
        break;
      case Surface.ROTATION_90:
        mLastAziSensor += 90;
        break;
      case Surface.ROTATION_180:
        mLastAziSensor -= 180;
        break;
      case Surface.ROTATION_270:
        mLastAziSensor -= 90;
        break;
    }

    sendOrientation(pitch, rollDef);
    break;
}
}
 
@Override
public int getSensorType() {
    return Sensor.TYPE_ACCELEROMETER;
}
 
@Override
public void onSensorChanged(SensorEvent event) {

    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

        long actualTime = System.currentTimeMillis();

        if (actualTime - mLastUpdate > UPDATE_THRESHOLD) {

            mLastUpdate = actualTime;

            float x = event.values[0], y = event.values[1], z = event.values[2];

            mXValueView.setText(String.valueOf(x));
            mYValueView.setText(String.valueOf(y));
            mZValueView.setText(String.valueOf(z));

        }
    }
}