【Android】传感器实现指南针

2025-11-04 20:33:14

1、指南针代码的例子项目结构

【Android】传感器实现指南针

2、布局效果

(这里附上了指南针的图)

【Android】传感器实现指南针

【Android】传感器实现指南针

3、布局的xml代码

【Android】传感器实现指南针

4、实现代码结构图

【Android】传感器实现指南针

5、// 定义显示指南针的图片 

ImageView znzImage;

 // 记录指南针图片转过的角度 

float currentDegree = 0f;

  // 定义Sensor管理器 

SensorManager mSensorManager; 

@Override 

public void onCreate(Bundle savedInstanceState) {  

super.onCreate(savedInstanceState);  

setContentView(R.layout.main); 

 // 获取界面中显示指南针的图片  

znzImage = (ImageView) findViewById(R.id.znzImage);  

// 获取传感器管理服务  

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); }

【Android】传感器实现指南针

6、传感器代码部分

@Override 

public 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;  

} }

【Android】传感器实现指南针

7、传感器在几个生命周期的处理方法

@Override 

protected void onResume() {  

super.onResume();  

// 为系统的方向传感器注册监听器  

mSensorManager.registerListener(this,   mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),   SensorManager.SENSOR_DELAY_GAME); 

}

 @Override protected void onPause() {  

// 取消注册  

mSensorManager.unregisterListener(this);  super.onPause();

 }

 @Override protected void onStop() {  

// 取消注册  

mSensorManager.unregisterListener(this);  super.onStop(); 

}

【Android】传感器实现指南针

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢