public class MainActivity extends Activity {
private SensorManager sensorManager;
private MySensorListener mySensorListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
private void init() {
setContentView(R.layout.activity_main);
// 传感器管理
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mySensorListener = new MySensorListener();
}
@SuppressWarnings("deprecation")
@Override
protected void onResume() {
sensorManager.registerListener(mySensorListener,
SensorManager.SENSOR_ORIENTATION,
SensorManager.SENSOR_DELAY_NORMAL);
super.onResume();
}
@Override
protected void onPause() {
sensorManager.unregisterListener(mySensorListener);
super.onPause();
}
private class MySensorListener implements SensorListener {
@Override
public void onSensorChanged(int sensor, float[] values) {
Log.i("WYL", "方向角:" + values[0] + "倾斜角:" + values[1] + "旋转角:"
+ values[2]);
}
@Override
public void onAccuracyChanged(int sensor, int accuracy) {
// 精度发生改变
}
}
}
转载至:http://bbs.hiapk.com/forum.php?mod=viewthread&tid=2874052
x 方向就是手机的水平方向,右为正;
y 方向就是手机的水平垂直方向,前为正;
z 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负。
方向角:的定义是手机y轴 水平面上的投影 与 正北方向的夹角。 (值得范围是 0 ~ 359 其中0=North, 90=East, 180=South, 270=West)
倾斜角:的定义是手机y轴 与水平面的夹角 (手机z轴向y轴方向移动为正 ,值得范围是 -180 ~ 180)
旋转角:的定义是手机x轴 与水平面的夹角 (手机x轴离开z轴方向为正, 值得范围是 -90 ~ 90)
也就是说,当你把手机水平放置在桌面上(屏幕向上)且手机指向正北(Y轴方向),此时传感器获得的xyz三个值应该都为0。
如下是Rexsee实现的方向传感器功能源码。我会把Rexsee扩展的全部传感器源码都陆续贴出来,感兴趣的也可以直接去Rexsee社区查阅,反正都是开源的:http://www.rexsee.com。