下面列出了android.hardware.Sensor#TYPE_ACCELEROMETER 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@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));
}
@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();
}
}
}
@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);
}
}
/**
* 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);
}
}
@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
}
}
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;
}
@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);
}
@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);
}
}
@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();
}
}
}
@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 + "'.");
}
}
}
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);
}
@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]);
}
}
@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;
}
}
@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;
}
}
public void onSensorChanged(SensorEvent event) {
Sensor sensor = event.sensor;
synchronized (this) {
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
calc_step(event);
}
}
}
@OnAccuracyChanged(Sensor.TYPE_ACCELEROMETER)
void testTemperatureAccuracyChanged(@NonNull Sensor sensor, int accuracy) {
mMainActivity.logAccuracyChangedForSensor(sensor, accuracy);
}
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));
}
}
}