Android 利用方向传感器获得手机的相对角度(2)


 @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>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8a903e798e01d204478b260586208940.html