@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_sensor_test, menu);
return true;
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
sensorManager.unregisterListener(this); // 解除监听器注册
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
sensorManager.registerListener(this, gyroSensor,
SensorManager.SENSOR_DELAY_NORMAL); //为传感器注册监听器
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
// if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
// {
// return;
// }
// if (timestamp != 0) {
// final float dT = (event.timestamp - timestamp) * NS2S;
// angle[0] += event.values[0] * dT * 100;
// angle[1] += event.values[1] * dT * 100;
// angle[2] += event.values[2] * dT * 100;
// }
// timestamp = event.timestamp;
//
//
// vX.setText("X: " + Float.toString(angle[0]));
// vY.setText("Y: " + Float.toString(angle[1]));
// vZ.setText("Z: " + Float.toString(angle[2]));
// 方向传感器提供三个数据,分别为azimuth、pitch和roll。
//
// azimuth:方位,返回水平时磁北极和Y轴的夹角,范围为0°至360°。
// 0°=北,90°=东,180°=南,270°=西。
//
// pitch:x轴和水平面的夹角,范围为-180°至180°。
// 当z轴向y轴转动时,角度为正值。
//
// roll:y轴和水平面的夹角,由于历史原因,范围为-90°至90°。
// 当x轴向z轴移动时,角度为正值。
vX.setText("Orientation X: " + event.values[0]);
vY.setText("Orientation Y: " + event.values[1]);
vZ.setText("Orientation Z: " + event.values[2]);
}
}
布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SensorTest"
android:orientation="vertical"
>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取传感器"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/v"
android:textSize="30px"
></TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/vx"
android:textSize="50px"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/vy"
android:textSize="50px"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/vz"
android:textSize="50px"
/>
</LinearLayout>