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); } 

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android(安卓)手机震动调用
  2. 在Android(安卓)Studio 中使用ADB命令模
  3. Android(安卓)ViewPager使用详解
  4. Android(安卓)HAL模块实现
  5. android多线程断点下载——网络编
  6. Android中使用加速度传感器
  7. mono for android 第四课--提示框
  8. 视频教程-TCP/IP/UDP Socket通讯开发实战
  9. Android使用setCustomTitle()方法自定义
  10. android 加载网络图片 SkImageDecoder::F