Android(安卓)加速器(accelerometer) 使用,判断设备移动
16lz
2021-01-26
public class Test extends Activity implements SensorEventListener{ public static float swRoll; public static float swPitch; public static float swAzimuth; public static SensorManager mSensorManager; public static Sensor accelerometer; public static Sensor magnetometer; public static float[] mAccelerometer = null; public static float[] mGeomagnetic = null; public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { // onSensorChanged gets called for each sensor so we have to remember the values if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { mAccelerometer = event.values; } if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { mGeomagnetic = event.values; } if (mAccelerometer != null && mGeomagnetic != null) { float R[] = new float[9]; float I[] = new float[9]; boolean success = SensorManager.getRotationMatrix(R, I, mAccelerometer, mGeomagnetic); if (success) { float orientation[] = new float[3]; SensorManager.getOrientation(R, orientation); // at this point, orientation contains the azimuth(direction), pitch and roll values. double azimuth = 180 * orientation[0] / Math.PI; double pitch = 180 * orientation[1] / Math.PI; double roll = 180 * orientation[2] / Math.PI; } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); } @Override protected void onResume() { super.onResume(); mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME); mSensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_GAME); } @Override protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this, accelerometer); mSensorManager.unregisterListener(this, magnetometer); }
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer