【Android】传感器实现指南针
1、指南针代码的例子项目结构

2、布局效果(这里附上了指南针的图)


3、布局的xml代码

4、实现代码结构图

5、// 定义显示指南针的图片ImageView znzImage;// 记录指南针图片转过的角度float currentD髫潋啜缅egree = 0f; // 定义Sensor管理器SensorManager mSensorManager;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 获取界面中显示指南针的图片znzImage = (ImageView) findViewById(R.id.znzImage);// 获取传感器管理服务mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);}

6、传感器代码部分@Overridepublic void onSensorChanged(SensorEvent event){// 获取触发event的传感器类型int sensorType 租涫疼迟= event.sensor.getType();switch (sensorType){case Sensor.TYPE_ORIENTATION:// 获取绕Z轴转过的角度。float degree = event.values[0];// 创建旋转动画(反向转过degree度)RotateAnimation ra = new RotateAnimation(currentDegree,-degree, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);// 设置动画的持续时间ra.setDuration(200);// 运行动画znzImage.startAnimation(ra);currentDegree = -degree;break;}}

7、传感器在几个生命周期的处理方法@Overrideprotected void onResume(){super.onResume();// 为系统的方向传感器注册监听器mSensorManag髫潋啜缅er.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onPause(){// 取消注册mSensorManager.unregisterListener(this);super.onPause();}@Overrideprotected void onStop(){// 取消注册mSensorManager.unregisterListener(this);super.onStop();}
